汉化修改so文件心得篇二(带偏移修改)
上一篇修改so增加字符串长度的方法是让附近的字符串挤一挤,但是如果原本就是那么“挤”,没有多余的空呢?像下面,我想将“Game Over”修改为“GAME is OVER”:
http://img.blog.csdn.net/20141117195052765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
未修改的程序界面:
http://img.blog.csdn.net/20141117195142930?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
直接用原来的方法一定不行,换一种思维模式,上一篇我们是这样操作的:
http://img.blog.csdn.net/20141117195209703?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
所以我们将改动的字符串放在哪里都是可以的(得保证在字符串堆里),只要保证调用时的指针相对正确就行。那么方法就来了,我们先在字符堆里,找到一片“空地”,如在 00518390 附近,现在里面填充上“GAME is OVER”:
http://img.blog.csdn.net/20141117195300712?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
然后在IDA中加载原来的so,定位到“Game Over”位置,找到其相对偏移:
http://img.blog.csdn.net/20141117195334859?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
下面我们就可以进行计算了:
http://img.blog.csdn.net/20141117195355375?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
用WinHex直接搜索十六进制D10E36 替换为 70AC38 ,然后保存,即可大功告成!效果图:
http://img.blog.csdn.net/20141117195412812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
竹子湿傅汉化时,玩滥的技术 {:301_971:}
献丑了 @bambooqj 楼猪辛苦了!!虽然我没看懂。。{:301_995:} 好教程,支持楼主! 感谢楼主,又学了一手:lol 好教程,学习了!!! 学习学习 前排学习精彩教程 ! 有點厲害就是找個內存然後將GAME OVER的內存JMP到修改過後的內存嗎?? 来学习一下
页:
[1]
2