汉化调试psplink破解手记_第1页
汉化调试psplink破解手记_第2页
汉化调试psplink破解手记_第3页
汉化调试psplink破解手记_第4页
汉化调试psplink破解手记_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PSP首先安装psplink,psp端拷到seplugins里,game.txt里加两行路径,跟普通插件一响到psplink。连上usb启动游戏就可以了。PC(1)#文件localhostnameresolutionishandledwithinDNSitself.#(2)linux的原因是可以在终端下用script命令把所有操作记录和输出信息同步输出到文件,win下我还没找到类似的软件。linux可以安装到vmware也可以装真实系统。因为破解的过程中还需要用到win下的idapro,所以推win+vmware,ubuntu镜像到处都可以下,安装过程这里就不说了,需要注题,而且更新对使用psplink并没有什么帮助。sudoapt-getinstallbuild-essentialautoconfautomakebisonflexlibncurses5-devlibreadline-devlibusb-devtexinfolibgmp3-devlibmpfr-devsubversionmakecleanmakecleancd~/libusb-sudomakepsptoolchainpspsdk,网上到处都是,这里就不说了。使用是先确psptoolchainpspsdk,网上到处都是,这里就不说了。使用是先确pspVM,RemovableDevices,Sonypsptypeb,sudoconnectedtoscriptsudo从解包出的文件可以看出小文件有压缩而且用的是lzss算法,使用1989年版的节可能是校验字节,先不管,第二行4字节开始的32位数应该是偏移地址8字节的32位数是大小,ctrl+g转到0x044D5800有加密,所以只要利用psplink的内存断点功能,就可以跟踪数据,下一步就是利用psplink看看psp如何处理这个文件中的数据。@sceIoOpenxsxx@sceIoOpenAsyncxsxx@sceIoLseekxxxx@sceIoLseekAsyncxxxx@sceIoReadxxxx@sceIoReadAsyncxTH:0x04AD5201(RA:0x8002013A)sceIoLseekAsync(0x00000003,0x0145B000,)=TH:0x04AD5201(RA:0x8002013A)sceIoLseekAsync(0x00000003,0x0145B000,)=TH:0x04AD5201(RA:0x8002013A)sceIoReadAsync(0x00000003,0x0019B000,)=THID,RAsceIoLseekAsync是寻址函数,根据pspsdk文档(google可以搜到,目前来说0x0019B000个字节到内存的0x09C8AA80处tpubug,因此设置断点后无法禁用断点,造成每次设置内存断点后,只能在第一次触发断点时暂停cpu,因此只能从psplinklog.txt从上往下找000481800STEREO.INC,所TH:0x04AD5201(RA:0x8002013A)sceIoLseekAsync(0x00000003,0x00184800,)=TH:0x04AD5201(RA:0x8002013A)sceIoReadAsync(0x00000003,0x09E7F080,0x00000800,)=0x00000000点,慢慢分析了。退出游戏重新进入,psplink会被初始化(由于新psplink的bug,newgame前,在pspsh中输入bp可以看到内存读断点已经被设置了,选择newgamepsp停在loading面,可以pspsh中输出了cpu当前的状态,由于某种原因,被设置为内存断点的目标内存地址无法被dumpdump16字节的内容,输入dmue中此文件的第二行对比,发现一模一样,说明cpu在我希望的地方停住了,看到epc的值是0x0883DE3C,减去基址偏移0x08804000等于0x39E3C,打开idapro,把isotool解密过eboot拖进去,processortypemipsl,一串okyes之后,ida开始分析汇编代的结果,却与那两个不明意义的数都不一样,再回到pspsh,看到ra寄存器的值是要考虑的问题,反编译时只考虑分支延迟就可以了,先从ra前面的几条指令说起,jalXXXX;move$a0,$s2s232a0,向校验函数输入第一个参数,从这里可以发现赋值都使用的是addu这类无符号指令,所以可以得出sub_39E10的函数原型是unsignedintsub_39E10(unsignedinta0,unsigneda1);bp0x88371C8bpmove小,而a1中的数值不在用户内存范围,在pspsh中输入才是游戏可用的内存,再看s2中的数值,在此范围,输入dm才是游戏可用的内存,再看s2中的数值,在此范围,输入dm看到了文件头和文件索引,看来应该是个小文件包,newgame后第一次运行到校验函数应该是在读取第一个文件之后,回到psplinklog.txt,看第一次读取的文件位置,是在sm$s20x0019AD21验函数将要处理的数据,把0x0145B0000x0019AD21个字节导出成单独的文件就是PACK/CHAP1.BIN,下面看看这个函数的返回值,输入unsignedintDataCheckSum(unsignedchar*Data,unsignedint现在有两种选择,第一种是绕过此校验,把bnelnop,即在eboot中把什么技术含量,除了压栈(swsp)和出栈(lwspccnewgamepspshbp0x88371C8bp0c10011于”LZSS0,0ida(ra-断”LZSS”,肯定返回非0,接着向左下跳转,又遇到一个函数,点进去后发现逻辑简LibForPSP/source/Memory.cpp”,推测应该是分断”LZSS”,肯定返回非0,接着向左下跳转,又遇到一个函数,点进去后发现逻辑简LibForPSP/source/Memory.cpp”,推测应该是分32newgamepspshbp0x88371C8bp0cbd0c011pspsh中输入bp0x088372BCbpdmdmdm0x09E7E580dm毕后v0被赋值,所以函数是有返回值的,因此sub_33DB4的原型应该是BoolLZSSDecompress(unsignedchar*Src,unsignedchar*毕后v0被赋值,所以函数是有返回值的,因此sub_33DB4的原型应该是BoolLZSSDecompress(unsignedchar*Src,unsignedchar*剩下的就是反编译了,在反编译的过程中偶然发现某些语句很像1989年版标准等于解压前文件的第二个32位数,解压后再压缩也和原始数据一模一样。一系列apihook指令后,可以发现,在没有进行任何操作的情况下,sceIoRead和0x30x7sceIoLseek(0x00000003,0x00000000,0x05B62800,)sceIoRead(0x00000003,0x092557C0,0x001D3800,)sceIoLseek(0x00000003,0x00000000,0x05D36000,)sceIoRead(0x0000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论