日志文章

2008年06月08日 23:21:12

一个限定长度字符串替换的应对方法

   有时候我们要修改/替换某些脚本系统里面的字符串,而这些字符串与指令都是以穿插的形式存放在脚本编译后生成的二进制文件的内部。如果修改的长度小于等于原来的长度,那就可以直接在上面修改了,不足的用空白字符什么的补完就行了。但是碰到超出原来长度的就没那么简单了,因为那些二进制指令代码里面可能存在各式各样的跳转指令,一旦改动了文件长度就会导致运行异常。
   当然,你可以通过分析exe来搞懂那些指令的意思,至少要把所有与位置有关的指令格式搞出来。那需要不停的调试,得到所有与位置相关的指令格式后,写一个HEX2TXT的程序,然后再写一个TXT2HEX的程序。这些程序很难有通用性,而且调试也要花一定的时间和精力,毕竟东西是人家的,人家想怎么改就怎么改,研究这个也没有什么太大的意义。
   很容易想到的就是用外挂的文本库实现运行时的替换,当然我这里说的不是那种根据原始字符串来匹配查找新字符串的替换(因为某人说了,在不同的环境下,相同的语句可以有不同的意思,所以存在一对多的情况)。因为无法把超出原来长度的字符串放进去,所以我们得改变一下思路,把其他东西放进去。
   很简单,把数字放进去就可以了,因为4个字节的整数可以表示4G的范围的数,所以那样的东西放进去一定可以满足空间长度的需要。而这些数字表示的就是外部文本库里对应文本的编号索引。好了,现在我们需要一个导出原始文本和偏移的工具和一个把翻译文本的索引号写回去的工具就可以了。由于都是简单的操作,所以这些工具将有很大的可能是通用的。
   接下来就在exe上做文章了,根据具体系统的不同,有不同的改法。大致上就是在他读取完字符串的后面再加上我们的根据索引来替换文本的程序段了。这个比调试一整个VM要简单的多了,用OD稍微搞几下就可以了。
   唔,终于结束了,我要去沉睡了。。。。。。

Tags: 字符串  

类别: 其他 |  评论(32) |  浏览(1507) |  收藏
一共有 32 条评论
32楼 [匿名]。 2008年06月19日 19:28:56 Says:
GIF Movie Gear
31楼 蓝兰岛 2008年06月19日 18:13:02 Says:
用什么工具可以把一堆PNG转换成一个GIF?
30楼 [楼主]我的游乐园 2008年06月18日 23:11:30 Says:
大致上是普遍适用吧,所以我才瞎说了一通
29楼 蓝兰岛 2008年06月18日 23:03:44 Says:
那可能就是原理基本一致了.....
28楼 [楼主]我的游乐园 2008年06月18日 23:01:28 Says:
不知道你在说什么,其实我是在说agslib
27楼 蓝兰岛 2008年06月18日 22:46:35 Says:
话说这文章是在说xx63.dll吧.........越看越像.......
26楼 [楼主]我的游乐园 2008年06月18日 22:39:40 Says:
没有......
25楼 蓝兰岛 2008年06月18日 22:35:47 Says:
意思说曾经做过什么汉化补丁?
24楼 [楼主]我的游乐园 2008年06月18日 22:13:23 Says:
恩,我也不会再做类似这种东西了,已经很没趣了
23楼 蓝兰岛 2008年06月18日 22:04:28 Says:
-_-!我又不懂日文,中文水平又不咋滴......怎么汉化.....
22楼 [楼主]我的游乐园 2008年06月18日 21:55:00 Says:
你想汉化......?
21楼 蓝兰岛 2008年06月18日 21:09:49 Says:
都试了下,应该没有问题

PS:MBR的剧情好像很有意思....可惜没有汉化,只有英化...
20楼 [楼主]我的游乐园 2008年06月18日 19:45:43 Says:
去试试看吧,顺便也看看老的行不行
19楼 [匿名]。 2008年06月18日 09:19:12 Says:
不是,懂一点汇编就解决一大半了
18楼 蓝兰岛 2008年06月17日 23:59:55 Says:
顺便问一句,解这种东西是不是要数学非常好?
17楼 蓝兰岛 2008年06月17日 23:43:40 Says:
从网上的录像看也是这样,好像剧情不同
16楼 [楼主]我的游乐园 2008年06月17日 23:40:05 Says:
貌似里面的文件都没变,就是p变了一下
15楼 [楼主]我的游乐园 2008年06月17日 23:39:02 Says:
可以解的
14楼 蓝兰岛 2008年06月17日 23:30:25 Says:
光有一个P和一个EXE能解么.......
13楼 [楼主]我的游乐园 2008年06月17日 23:23:02 Says:
新的格式已经完全不同了。。。。。。
« 1 2» Pages: ( 1/2 total )
发表评论
看不清楚,换一张