找回密码
 立即注册
搜索

金手指 ps3破解-ps3用ccapi实现cu金手指代码教程

0
回复
1094
查看
[ 复制链接 ]

196

主题

0

回帖

598

积分

高级会员

积分
598
相信有很多玩家都不太了解PS3的破解教程,接下来跟大家分享一下ps3用ccapi实现cu金手指代码教程,有兴趣的玩家一起了解一下吧。

Control Console API(CCAPI)是最近比较流行的金手指软件,最新2.6版本支持cfw4.65和混合系统,不过这个版本的pc端软件,目前还只有其自带的客户端,没内存查看器,不好用。所以,现在还是推荐用2.0的mod版本,支持cfw4.46-4.65(混合系统需要切换为一般系统或者把COBRA关掉),pc端软件可用CCCheat 1.01或者CCAPI Debugger 2.2。

CCCheat1.01可以保存代码方便一点,CCAPI Debugger 2.2调试的时候比较好用。本文在下面的举例说明中,将采用CCCheat 1.01作为pc端软件。

常用软件说明:

CCAPI_v2.00_MOD_446-465:PS3端程序,CCAPI_2.0_MOD版本,支持cfw4.46-4.65(混合系统需要切换为一般系统或者把COBRA关掉)

CCCheat 1.01:PC端程序,支持CCAPI 2.0和2.5版本

CCAPI Debugger 2.2汉化版:PC端程序,支持CCAPI 2.0版本

cu2.3格式金手指代码库: 金手指代码库,包含了904个游戏的金手指(按照ps3游戏id来计算),20140619版本,除了新出的游戏,这个代码库应该是很全了。

先简单说一下CCAPI的使用流程:

PS3已经设置好IP,并通过路由器在局域网跟电脑pc相连。

1. 复制安装pkg程序CCAPI_v2.00_MOD_446-465.pkg文件到u盘,插到ps3上,进入install package files,安装。

2.运行刚安装的CCAPI程序,确定,确定,等待PS3重启。PS3重启之后,过10秒左右,右上角会显示CCAPI已运行标识,此后ps3每次启动都会自动加载CCAPI(若要卸载CCAPI,重新运行下CCAPI程序即可)。

3.用MM或IRIS MANAGER等加载游戏,并运行游戏,在游戏中暂停。

4.在PC端运行CCCheat 1.01或者CCAPI Debugger 2.2,输入PS3的IP地址,点击connect,进行操作修改等等。

5.返回ps3,继续游戏。

目前论坛里对CCAPI软件的使用上,基本都是搜索具体数值,或者通过别人发布的静态地址数据来修改游戏,这样实现的金手指功能很少。其实,目前论坛里发布的静态地址金手指代码,大部分都可以用来修改eboot,这样更方便,起码你不用打开pc。

作为一个内存修改器,CCAPI的优势就在于可以实时读取内存,进行即时修改,完全可以用来修改动态地址数据,实现更多的金手指功能。

现在的问题是,如何找到动态地址的规律?如果只用pc端软件CCCheat或者CCAPI Debugger的搜索功能,那么想找到一个不知道具体数值的动态地址,无异于大海捞针,就算偶尔找到了,换个场景,动态地址就变了,又要重新找,很可能搜索时间远比玩游戏的时间长,费时费力,很不划算。

这种情况下,就需要用到以前整理过的金手指代码了,从cfw3.55过来的玩家,应该都知道cu2.3金手指(可惜它不支持cfw4.xx),它的金手指代码里就有很多动态代码,借助已有的cu金手指代码,我们可以快速的定位动态地址,省去了搜索的时间,提高了效率。以前,我们只能使用一小部分的cu金手指代码,现在,利用CCAPI,所有的cu金手指代码都可以实现了。

对于一行cu金手指代码,其一般可分成3部分,每8个数字为一部分:控制代码 地址 数值。其中,地址和数值都是十六进制的。

下面,本文将通过对cu控制代码的解析,来说明如何用CCAPI实现cu金手指代码。

注:各种控制代码的名称,都是本人自己定义命名的,有可能不太切合,还望见谅。

控制代码01:直写码

CU控制代码00002000开头的,就是直写码。其代码格式如下:

00002000 ssssssss aaaaaaaa

ssssssss是地址,aaaaaaaa是数值,地址和数值都是十六进制的。

直写码的功能,就是把数值aaaaaaaa写入地址ssssssss中,数值类型由要写入的数值大小来决定。例如:

Gold9999999

00002000 00F6D460 0098967F

其中,00F6D460是地址,0098967F是要写入的数值,这就算一组数据。

用CCAPI修改,只要pc端软件添加一个code,数值类型由要写入的数值大小来决定,软件选项有1字节、2字节、4字节和浮点数,当前例子中,数值98967F是3个字节,所以选择type数值类型4字节,输入地址address和对应的数值value就可以了。

代码里数值是十六进制的,而CCCheat 1.01软件需要输入十进制的数值,所以,输入前请先转换进制。可以用计算器(windows附件里自带的)转换进制。

或者,在CCCheat 1.01界面查找部分的Value框中,输入数值,勾选Hex前面的勾选框,就可以进行十进制和十六进制之间的互相转换。

只有直写码的金手指代码,是静态地址金手指代码,可以选择save codes保存,以备下次再用。

不过CCCheat 1.01不会保存数值value,而其他选项都会保存,所以下一次使用load codes载入后,还需要重新填入一次数值。可以在描述命名description中填入需要输入的数值,下一次载入后,照着description输入数值就可以了,省着再去查看代码转换数值了。

另外,CCCheat 1.01软件还有个问题,输入地址和数值时,需要手动输入;或者复制粘贴后删掉最后一个数字,再手动输入刚删掉的数字。

有时候代码不止一组数据,例如:

MaxMoney on Buy

00002000 0076526C 3D207FFF

00002000 00765270 91230564

这时就需要为每一组的数据都添加一个code,上例中就添加两个code,数值类型4字节,分别输入对应的地址和数值。

只有直写码的金手指代码,大部分都可以用来修改eboot(其他控制代码的,都不能用来修改eboot),需要地址-10000(十六进制)。还有一小部分的直写码金手指,其地址-10000后仍然超出了eboot的地址范围,这些就不能用于修改eboot,只能用CCAPI来改。

注意:一个地址存储一个字节,十六进制数值,FF一个字节,FFFF两个字节,FFFFFFFF四个字节。数值类型一定要选对,没选对就会出错。例如:

假设所有地址初始数值都是00,要在地址10存储2字节数值A13F,地址栏填写10,选择数值类型2字节,数值栏填写A13F,存储完毕后,地址10存储了字节A1,地址11存储了字节3F。

如果选错,数值类型选了4字节,那么存储完毕后,地址10字节00,地址11字节00,地址12字节A1,地址13字节3F,数值输入错误了。

如果选错,数值类型选了1字节,那么存储完毕后,地址10字节3F,其他地址字节没变,数值的高位字节A1就被软件自动舍弃,数值输入错误了。

控制代码02:锁定赋值码

CU控制代码00001000开头的,或者是控制代码00000000开头的,就是锁定赋值码。其代码格式如下:

00001000 ssssssss aaaaaaaa

或者

00000000 ssssssss aaaaaaaa

ssssssss是地址,aaaaaaaa是数值,地址和数值都是十六进制的。

锁定赋值码的功能,就是把数值aaaaaaaa写入地址ssssssss中,并锁定数值,数值类型由要写入的数值大小来决定。例如:

InfiniteHealth (Veronica)

00001000 00BDEA9E 000000C8

就是把1字节数值C8(十进制是200),写入地址BDEA9E,并锁定。例子这个代码在游戏里的实际作用,就是锁定血条。

要用CCAPI实现这个金手指代码,只需要添加一个code,输入地址和对应的数值,并勾选上frozen锁定框。

3 小时前 上传

下载附件(8.47 KB)

锁定赋值码,还有些是控制代码00000000开头的,例如:

Unit1

00000000 1A34F8B2 0000001E

00000000 1A34F8B3 00000009

同上面一样,只要为每一组的数据都添加一个code,分别输入对应的地址和数值,选好对应的数值类型,再勾选上frozen锁定框就可以了。

只有锁定赋值码的金手指代码,也是静态地址金手指代码,可以选择save codes保存,以备下次再用。

控制代码03:加法压缩码

CU控制代码00004200开头的(或者控制代码00004100和00004000开头的)一行代码,加上00004nnn开头的一行代码,两行代码一起构成了一个加法压缩码。其代码格式如下:

00004200 ssssssss aaaaaaaa

00004nnn xxxxxxxx yyyyyyyy

或者

00004100 ssssssss aaaaaaaa

00004nnn xxxxxxxx yyyyyyyy

或者

00004000 ssssssss aaaaaaaa

00004nnn xxxxxxxx yyyyyyyy

其中,ssssssss是起始地址,aaaaaaaa是起始数值,nnn是未压缩代码行数,xxxxxxxx是地址间距,yyyyyyyy是数值间距,都是十六进制的。

加法压缩码的功能,就是将多行直写码,压缩成两行,未压缩的地址和对应数值可表示如下:

ssssssss :aaaaaaaa

ssssssss+xxxxxxxx :aaaaaaaa+yyyyyyyy

......

ssssssss+(nnn -1)xxxxxxxx :aaaaaaaa+(nnn -1)yyyyyyyy

总共nnn组数据(地址:数值),数值类型由要写入的数值大小来决定。

在cu代码里,数值间距yyyyyyyy基本上都是0,还没见过是其他数值的代码。另外,再强调下,金手指代码里nnn等数据都是十六进制的,若nnn为010,则共有16组未压缩数据,而非10组数据。

下面举个例子:

QuickFinish Quest

00004200 3345B8CF 000000FF

00004007 0000004C 00000000

起始地址3345B8CF,起始数值FF(十进制为255)是1个字节(数值类型选择1字节),未压缩代码行数为7行,地址间距4C,数值间距为0。所以,未压缩的地址和对应数值可表示如下:

3345B8CF :FF

3345B91B :FF

3345B967 :FF

3345B9B3 :FF

3345B9FF :FF

3345BA4B :FF

3345BA97 :FF

共7组数据,要用CCAPI实现这个金手指代码,就需要为每一组的数据都添加一个code,分别输入对应的地址和数值就可以了。

加法压缩码,还有些是控制代码00004100和00004000开头的,区别就在于00004200开头的只写入一次,而00004100和00004000开头的保持锁定。例如:

MaxStats Aoto

00004100 015E5C82 0000FFFF

00004004 00000004 00000000

起始地址15E5C82,起始数值FFFF(十进制为65535)是2个字节(数值类型选择2字节),未压缩代码行数为4行,地址间距4,数值间距为0。

和上面一样,算出未压缩的地址,用CCAPI为每一组的数据添加一个code,分别输入对应的地址和数值,并保持锁定就可以了。

有时候一个金手指代码里不止一个加法压缩码,例如:

AllCharacters HP 999/999

00004000 012D366C 000003E7

00004007 0000018C 00000000

00004000 012D3678 000003E7

00004007 0000018C 00000000

00004000 012D3694 000003E7

00004007 0000018C 00000000

有3个加法压缩码,每一个有7组未压缩数据,总共21组数据,CCAPI要实现这个金手指代码,就需要把这些数据全部输入。以前cfw3.55能用cu2.3的时候,这个步骤是软件自动计算输入的,现在就只能自己手动输入了,略显麻烦。不过加法压缩码一般是用在物品装备或者解锁人物之类的代码上,基本上只需要输入一次,还算可以接受吧。上面这个例子的数据稍微有点多,这里就不列举具体数值了。

另外,只有加法压缩码的金手指代码,也是静态地址金手指代码,可以选择save codes保存,以备下次再用。

控制代码04:指针寻址码

CU控制代码00003000开头的,就是指针寻址码。其代码格式如下:

00003000 ssssssss yyyyyyyy

其中,ssssssss是指针地址,yyyyyyyy是数值间距,指针寻址码数值类型都是4字节。

指针地址ssssssss储存的数值+数值间距yyyyyyyy=动态地址数值。

指针寻址码的功能,就是计算出动态地址数值,将此动态地址数值作为下一行代码的地址。

指针地址ssssssss储存的数值(数值类型是4字节),是ps3游戏程序自行生成的,而且不固定,一般读档后就变,有些动画和转换场景之后,也会改变。

指针寻址码一般和一个直写码或者锁定赋值码构成一组数据。例如:

(WitchPower) 9999999

00003000 0115AD94 00000048

00002000 00000000 0098967F

指针寻址码来确定地址,初始指针地址0115AD94所储存的数值(数值类型为4字节)+数值间距00000048=地址数值。

直写码写入数值,00000000表示上一行代码计算得出的地址数值作为此行代码的实际地址,0098967F是需要修改的数值,要填入实际地址中。

用CCAPI来实现代码,首先需要查看初始指针地址0115AD94所储存的数值(数值类型为4字节)。直接添加new code(此code可保留,用于实时查看地址变动),地址栏输入这个地址0115AD94,数值类型选4字节,显示出来储存的数值目前为361353232。

361353232转换成十六进制,数值为1589D010,这样地址数值=1589D010+00000048=1589D058。

添加金手指new code,刚算出来的地址数值1589D058作为实际地址,输入修改数值0098967F(CCCheat 1.01填入的是十进制9999999),98967F是3个字节,所以数值类型选4字节,这时金手指就起作用了。

有时候指针寻址码不止一行,这就包含了多重指针。例如:

PlayerMP Maximum 1000

00003000 01B4EF9C 00000008

00003000 00000000 00000020

00002000 00000000 000003E8

第一行指针寻址码,假设初始指针地址01B4EF9C所储存的数值为a(转换为十六进制,数值类型为4字节),则a+00000008=地址数值b。

第二行指针寻址码,地址00000000表示上一行代码计算得出的地址数值b作为此行代码的指针地址,地址b所储存的数值为c(转换为十六进制,数值类型为4字节),则c+00000020=地址数值d。

第三行直写码,00000000表示上一行代码计算得出的地址数值d作为此行代码的实际地址,000003E8(十进制为1000)是需要修改的数值,要填入实际地址d中,这里3E8是1.5个字节,所以数值类型选择2个字节。

更多行的指针寻址码以此类推。

包含指针寻址码的金手指代码,都是动态地址金手指代码,因为实际地址是变化的,具体应用的时候,还是需要查看金手指代码来计算动态地址,所以没必要用软件保存codes,最多保存下初始指针地址,用于实时查看下地址变动。

控制代码05:键位条件码

CU控制代码0000Cnnn开头的,就是键位条件码。其代码格式如下:

0000Cnnn 00000000 aaaaaaaa

其中,nnn是键位条件码控制的代码行数,00000000是当前手柄键位数值,aaaaaaaa是条件数值。

键位条件码的功能,就是只有当满足给定的条件“当前手柄键位数值等于条件数值aaaaaaaa”时(手柄按下对应按键后),那么执行一次键位条件码下面的nnn行代码。例如:

Grenade999 (Press Select)

0000C001 00000000 00010000

00002000 1090EDE8 000007FF

条件数值00010000对应手柄按键Select,就是当按下Select键时,CU金手指程序执行一次键位条件码下面的1行代码,例子的金手指代码效果就是直写码赋值,只是多了一行键位条件码控制。

键位条件码对我们来说没什么用,用CCAPI来实现的,就在需要修改的时候,忽略这一行的键位条件码,直接实现后面代码的效果。

控制代码06:数值复制码

CU控制代码00005000开头的(或者控制代码00005100开头的)一行代码,加上00005000开头的一行代码,两行代码一起构成了一个数值复制码。其代码格式如下:

00005000 rrrrrrrr wwwwwwww对应数值类型4字节

00005000 00000001 00000000

或者

00005100 rrrrrrrr wwwwwwww对应数值类型2字节

00005000 00000001 00000000

其中,rrrrrrrr是读取地址,wwwwwwww是写入地址,第二行00000001表示读取数值,00000000表示写入数值。

数值复制码的功能就是把读取地址rrrrrrrr储存的数值复制到写入地址wwwwwwww中。

00005100和00005000的区别就在于数值类型不同,00005000开头的代码复制4字节数值,00005100开头的代码复制2字节数值。例如:

NinjaMagic Max

0000C002 00000000 00000030

00005000 0171F630 0171F634

00005000 00000001 00000000

第一行是键位条件码,忽略。第二行和第三行就是数值复制码,00005000对应数值类型4字节,其作用就是把读取地址0171F630储存的4字节数值复制到写入地址0171F634中。

用CCAPI来实现,先添加一个code,地址填0171F630,数值类型选4 bytes,可以看见其储存的数值为十进制数1128792064;再添加一个code,地址填0171F634,数值类型选4 bytes,复制读取地址0171F630储存的数值1128792064,填入value中,这样,金手指就生效了。

再看一个例子:

HPMax

00005100 1028C7E4 1028C7B4

00005000 00000001 00000000

00005100 1028C7E4 1028C7E6

00005000 00000001 00000000

总共两个数值复制码,00005100对应数值类型2字节,其作用就是把读取地址1028C7E4储存的2字节数值复制到写入地址1028C7B4和1028C7E6中。

用CCAPI,就是填入读取和写入地址,选好数值类型,把value中的数值复制一下就可以了。

只有数值复制码的金手指代码,也是静态地址金手指代码,可以选择save codes保存,以备下次再用。

控制代码07:暂存码

CU控制代码00003003和00003006开头的,或者00003002和00003005开头的,或者00003001和00003004开头的,就是暂存码。其代码格式如下:

00003003 00000000 0000000 对应数值类型4字节

00003002 00000000 0000000 对应数值类型2字节

00003001 00000000 0000000 对应数值类型1字节

功能是读取当前地址(源地址),将其储存的数值写入暂存;

00003006 00000000 0000000 对应数值类型4字节

00003005 00000000 0000000 对应数值类型2字节

00003004 00000000 0000000 对应数值类型1字节

功能是读取暂存,将暂存中的数值写入当前地址(目标地址)。

暂存码总是成对出现,00003003和00003006匹配,00003002和00003005匹配,00003001和00003004匹配。

暂存码一般与键位条件码及指针寻址码配合使用,每一对就完成一次两个不同地址之间的数值复制。

暂存码和数值复制码的区别,就在于地址类型不同,数值复制码用于静态地址,暂存码用于动态地址。例如:

(PressL1) To P1 Infinite Health

0000C006 00000000 00000004

00003000 32A8F1B0 00000CF0

00003000 00000000 00000224

00003003 00000000 00000000

00003000 32A8F1B0 00000CF0

00003000 00000000 00000220

00003006 00000000 00000000

第一行键位条件码控制,就是当按下L1键时,CU金手指程序执行一次下面的6行代码。对我们来说没用,忽略。

第二行,指针寻址码,初始指针地址32A8F1B0当前储存的数值为868244224(十六进制为33C05B00),则地址数值=33C05B00+00000CF0=33C067F0。

第三行,指针寻址码,地址00000000表示上一行的计算结果地址数值33C067F0作为本行指针地址,地址33C067F0当前储存的数值为868242032(十六进制为33C05270),则地址数值=33C05270+00000224=33C05494。

第四行,暂存码00003003,对应数值类型4字节,读取当前地址(源地址),将其储存的4字节数值写入暂存,地址00000000表示上一行的计算结果地址数值33C05494作为本行当前地址,源地址33C05494当前储存的4字节数值为十进制数30000,则暂存中的4字节数值变为十进制数30000。

第五行,指针寻址码,由于当前例子的第五行和第二行是一样的,则地址数值=33C067F0。

第六行,指针寻址码,地址00000000表示上一行的计算结果地址数值33C067F0作为本行指针地址,地址33C067F0当前储存的数值为868242032(十六进制为33C05270),则地址数值=33C05270+00000220=33C05490。

第七行,暂存码00003006,对应数值类型4字节,读取暂存,将暂存中的4字节数值写入当前地址(目标地址),在第四行中暂存中的4字节数值已经变为了十进制数30000,地址00000000表示上一行的计算结果地址数值33C05490作为本行当前地址,则目标地址33C05490储存的4字节数值变为十进制数30000。

此例子实质上就是通过暂存作为中转,复制源地址33C05494储存的数值到目标地址33C05490中。此例子在游戏中产生的效果,就是把人物当前生命值变为最大生命值。

用CCAPI来实现,就是找出源地址和目标地址,然后把源地址储存的数值复制到目标地址中。注意不同代码对应的数值类型,上例中00003003和00003006对应的数值类型是4字节,源地址33C05494,目标地址33C05490。

暂存码都是用在动态地址中,因为实际地址是变化的,具体应用的时候,还是需要查看金手指代码来计算动态地址,所以没必要用软件保存codes。

控制代码08:主码

CU代码里名称叫做Master Code的就是主码。例如:

MasterCode

00000100424C4A4D 60389018

以前要用金手指,在usb金手指狗或者金手指光盘软件里,主码必须开启,同一游戏的其他代码作为附属码,才可以使用。但是现在用CCAPI直接改内存,可以直接改附属码,所以主码Master Code对我们来说完全没用,可以忽略。

控制代码09:描述信息码

CU代码里名称叫做Info的就是描述信息码。例如:

Info- [For 01.01]

0000000000000000 00000000

描述信息码Info一般是关于金手指的信息,比如游戏版本、注意事项、按键提示等等,其本身不起任何作用,所以看下就行了。

总结

本文已经全面具体的解析了cu2.3格式的金手指代码,对各个代码的基本信息总结如下表:

用CCAPI来实现CU金手指代码的基本流程,就是通过代码,能快速定位地址和得到要修改的数值,选好对应的数值类型,添加codes,金手指就生效了。

纯静态地址的金手指代码,可以用CCCheat 1.01的save codes保存,以备下次再用。而任何包含了动态代码的金手指,都是动态地址的金手指代码,由于实际地址是变动的,没必要用save codes保存。

使用金手指时,请注意游戏版本匹配,并及时存档。尤其对动态地址的金手指代码,请慎用锁定。当读档、动画或场景变动时,动态地址会改变,如果此时锁定,有可能会造成ps3死机。除非你相当清楚地址改变的触发时机,否则不推荐锁定动态地址金手指。比如,在打boss的时候,先锁定动态地址金手指,当boss就剩血皮的时候,暂停,在pc端取消锁定,回去打死boss,此时一般是剧情动画,之后游戏程序会重新分配地址,由于刚才取消了锁定,所以不会造成内存地址冲突,也就没了死机的风险。总之,锁定动态地址金手指是有死机风险的,看个人取舍了。

最后,在这里感谢CMP论坛的bungholio整理cu金手指代码,还要感谢一下国内外各大网站论坛的金手指提供者。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·  
创意工作者们的社区 Powered by Discuz!
© Comsenz Inc. 2020 ♥ Do have faith in what you're doing.
返回顶部