吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 23171|回复: 33
收起左侧

[Android 分享] 汉化修改so文件心得篇一(带偏移修改)

  [复制链接]
淡然出尘 发表于 2014-11-17 18:26
本帖最后由 淡然出尘 于 2014-11-17 18:29 编辑

这篇教程是安智论坛的一篇技术笔记的分享,By布加迪20,原帖地址在:http://bbs.anzhi.com/thread-9130314-1-1.html
我以前对so的直接修改比较少,仔细的看了一遍,并跟着模仿,现在分享出来,一起交流。

修改对象
浮游生物2:孢子的世界_Ver1.0.1.1

过程
在修改so里面字符串的过程中,特别是在做汉化时,由于汉字占用空间比较大,所以增加长度是比较常见的。
我们以<孢子的世界>为例,来浅显的探讨一下so增加字符串长度的方法。
用WinHex打开程序唯一的so文件:libcocos2dcpp.so,搜索文本“START”,定位到如下图:


程序对应的界面显示:



我们今天就试着将“START”增加修改为“STARTS”。
通过观察发现,“START”后面的字符“Most Depth:”中间有一个空格,正好可以利用它,
先把“Most Depth:”挤一挤让它变成“MostDepth:”,修改的结果如下:

这样“START”后面就多出填充一个字母的位置了,添加“S”,如下图:

修改之后,回编其实是打不开的,因为“Most Depth:”的开始偏移位置从 004EEA07->004EEA08 ,
程序打开会出错,具体的原理不清楚,见引用:
这个时候可以注意到,DAY的偏移并没有改变,但是score的偏移变了,字符串是不能得到正常调用的。因此需要修改对应的调用偏移。
但是arm程序对应的基地址我是真的没找到,所以无法计算出对应的调用偏移,也没有找到相应的工具。这里有一个相对简单的方法,
我们注意到arm程序当中有一个特点,就是对应的字符串并非是在数据段直接调用的,而是通过一个指针指向数据段。
我们现在要做的就是找到指针,并修改。(http://bbs.anzhi.com/thread-6097570-1-1.html
IDA打开原来的so文件,搜索“Most Depth:”


用开始偏移004EEA07-0x198112=3568F5 即程序调用“Most Depth:”的指针是F56835(反序,原理不清楚),
而我们修改之后004EEA08-0x198112=3568F6,所以需要用WinHex将调用字符的指针F56835修改为F66835,
搜索十六进制码“F56835”直接修改,如下图:

这样回编、安装之后即看到效果。


相关的下载
链接: http://pan.baidu.com/s/1mgiLeqs 密码: qa7t


免费评分

参与人数 1热心值 +1 收起 理由
小野 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

william2568 发表于 2014-11-17 18:31
大神你每次的帖子都很好,受教了!
上官原石cjy 发表于 2014-11-23 22:12 来自手机
这个在百度找了好久都没找到,今天终于在爱吾找到了⊙▽⊙
淡蓝色的花 发表于 2014-11-17 18:34
感谢楼主啊,很不错                          
wenwen0932 发表于 2014-11-17 18:35
好东西 鼓掌!!!
2217936322 发表于 2014-11-17 18:42
活捉野生安卓牛!回去煮煮吃了,我也变成安卓牛、!!!!
羅少 发表于 2014-11-17 18:51
前排支持楼主!   出售瓜子可乐
炜炜 发表于 2014-11-17 19:18
前排支持 666
liguhe 发表于 2014-11-17 19:20
你的世界我们永远无法懂啊
lies2014 发表于 2014-11-17 19:21
谢谢经验分享,希望多一些so的修改教程
無名传说 发表于 2014-11-17 19:32
好牛逼的样子{:1_914:}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表