so汉化心得
来源:互联网 发布:js控制视频进度条 编辑:程序博客网 时间:2024/05/18 18:17
我自己也是新手,研究了好久,网上也找不到相关教程,所以决定写一个比较详细的教程,教程是关于汉化so文件时出现的字符串长度不够的问题,后面还有做字库的简单教程,相关文件都在文章结尾处,如果出现排版问题,建议在手机上用WPS看,选适应手机就好了。
汉化so修改偏移
IDA在电脑上用,HE是安卓上的十六进制编辑器HexEditor。以“浮游生物2:孢子的世界”(版本1.0.1.1)为例。手机上用HE打开libcocos2dcpp.so,找到“MostDepth:"如图:
(libcocos2scope.so可以用Xplore管理器导出,长按安装包,选以zip方式打开,在lib里)记下M的位置为004eea07。
“START”和“Most Depth:”对应游戏中位置,如下图:
可以看到,“Most Depth:"前面的“START"要汉化成“开始”位置不够(一个汉字抵三个字母,每个词前后都要有00隔开),而后面的“Most Depth:"可以改成“MostDepth:"也可以汉化为“最深处:”,也就可以在“START"后面移出一个空格,正好可以汉化为“开始”,如图:
记下这时M的位置为004eea08。但是这时侯“START”偏移没变,“MostDepth:"的偏移变了,游戏里是显示不出的:
以上在手机上完成,电脑上可以用其它十六进制编辑器,推荐UE32。
这时候就需要用到IDA,用IDA打开电脑上的so文件,在“查找”里选“文本”,输入“Most Depth:"(我电脑里的还是原文件),找到这里
记下198112 。然后打开一个十六进制计算器,用之前“Most Depth:"里M的位置减去198112,即“4eea07-198112”,得到3568f5,这时候要用HE在so文件里搜索f56835(要反过来),找到了。
我们要改的就是这个,之后用改过的“MostDepth:"里M的位置减198112,即“4eea08-198112",得3568f6,之后要做的就是把“f56835"改成“f66835",如图:
接下来保存文件,打开游戏测试吧
可以看到,“MostDepth:"已经显示出来了。
做字体库汉化
当然,要汉化这个游戏还需要做字库,以下附简单教程。字库我是用hiero做的。游戏里的字库都在assests/fonts里:
有7种字,每种都要做一个,打开hiero,以segoe_ui-16_0.png和segoe_ui-16.fnt为例:
选微软雅黑(我觉得和游戏字体挺像),在右边的“Sample Text"里输入“开始”,并选定字号为16,选“Glyph cache",把宽高都设为2048(方便以后字多了可以一张图解决)。
软件有点问题,所以Rendering里没有显示字体,不过不管它,点File→Save BMF on files (text)...,文件名就写“segoe_ui-16_0.fnt",点保存就会生成两个文件“segoe_ui-16_0.fnt”和“segoe_ui-16_0.png",注意之后把“segoe_ui-16_0.fnt”改成“segoe_ui-16.fnt”。
其他字体以相同的方式生成,然后替换assests/fonts里的字体(教程里的只增加了“开始”两个字)。然后用HE打开so文件,我们刚刚在“START"后面增加了一个空格,可以改成“开始”了,用HE搜索到“START ”,并查到“开始”的十六进制为“e5 bc 80 e5 a7 8b”,替换掉原来的。
打开游戏看看效果:
可以看到汉化成功了“开始”。
借助“空位”汉化so
这是我自己的汉化心得,拿出来分享一下,这个教程只是简单介绍一下增加字符串长度的一种方法,适用于前后有多余的空位(通常是汉化其它语句留下来的),不过要是前后都没有空位,就要用另一种方法
这种方法其实也是修改偏移,看这里的字符串:
一大堆挤在一起,汉化成中文位置根本不够,但是我们可以看到so文件里有很多空白的地方,比如这里:
看这里有这么大一片空白,足够我们改了!随便从哪里开始,比如我想把“Game Over”改成“游戏结束”,
就在把任意位置的空字符串替换成“e6b8b8 e6888f e7bb93 e69d9f”
(别忘了在字库里添加新的字,不然会出现两种情况:1.显示不出字;2.进游戏直接卡死。)
接着按照上面的方法把“Game Over”的偏移修改到“游戏结束”的位置,就可以了。
注意
1、不是哪里的空白位置都可以改,这个叫空白数据段,通常像这种前后都有字符串而中间空出来的一般就是了。(好像有寻找exe或dll数据段位置的工具,但是so的好像没有,所以不清楚是不是空白数据段时,可以自己修改试试)
2、每一次修改一定记得备份,改这种十六进制的东西特别容易出错,如果没备份的话,后果很严重。。。。。。
有关下载
下面是一些相关工具的链接,很多版本都低了,不过也没什么影响
浮游生物:孢子的世界
http://pan.baidu.com/share/link?shareid=3428872989&uk=3324813120
Hex editor
http://pan.baidu.com/share/link?shareid=3434074993&uk=3324813120
IDA
http://pan.baidu.com/share/link?shareid=3454802130&uk=3324813120
Hiero
http://pan.baidu.com/share/link?shareid=3495231926&uk=3324813120
Hiero(已有java环境的直接用)
http://pan.baidu.com/share/link?shareid=3510464528&uk=3324813120
Xplore文件管理器
http://pan.baidu.com/share/link?shareid=3543020754&uk=3324813120
- so汉化心得
- so文件汉化心得【整理】
- 汉化修改so文件心得篇一(带偏移修改)
- 汉化修改so文件心得篇二(带偏移修改)
- PowerPro汉化技巧和心得
- MyWebPagesStarterKit1.1.2汉化使用心得(同时分享汉化版源码)
- AndroidStudio使用心得-引入so
- 如何给sublime text3安装汉化包?so easy 哦
- 如何给sublime text3安装汉化包?so easy 哦
- AndroidStudio编译.SO库文件心得一
- android studio中导入.so包心得
- 汉化
- Android逆向之旅---Android应用的汉化功能(修改SO中的字符串内容)
- Android逆向之旅---Android应用的汉化功能(修改SO中的字符串内容)
- Android逆向之旅---Android应用的汉化功能(修改SO中的字符串内容)
- Android逆向之旅—Android应用的汉化功能(修改SO中的字符串内容)
- Android逆向之旅---Android应用的汉化功能(修改SO中的字符串内容)
- .Text的Blog程序调试汉化心得(http://webuc.net/dotey/) 转
- wxWidgets学习笔记(5)- wxTextCtrl
- 【Spring实战】—— 13 AspectJ注解切面
- android开发 用线程进行耗时操作,统一处理 第二版
- 机器学习入门----以阿里移动推荐算法大赛为例
- long long超时了,而换成int变成ac了
- so汉化心得
- java多线程问题(上)
- C# struct的陷阱:无法修改“...”的返回值,因为它不是变量
- 理解Thread.Sleep()
- Android中Java和JavaScript交互
- 51nod 1060 最复杂的数(反素数)
- HTML5canvas元素
- Animation
- java多线程问题(下)