首页
社区
课程
招聘
[求助]修改了EXE中的常量字符串以后,EXE无法运行了,该怎么做? 
发表于: 2009-1-11 16:37 5115

[求助]修改了EXE中的常量字符串以后,EXE无法运行了,该怎么做? 

2009-1-11 16:37
5115
如题。。。。。第一次自己修改EXE,修改以后,需要增加几个字节,字符串常量有可能长度要变化,所以修改完成了,EXE的长度就变化了导致无法运行(说是被破坏了)

请问,我该如何处理,达到修改这个字符串常量的想法

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 377
活跃值: (432)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
在字符串后面的数据都移位了吗

如果可以的话,就在节的后面的空间里重新写一个字符串,然后把每个引用到原串的地方改成指向新的串
2009-1-11 16:51
0
雪    币: 220
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是啊。。。。肯定移位了,比方原来里面写的是192.168.0.1这个ip
我现在需要改成127.0.0.1字符串的长度就不一样了吧。。。少了几个字符

或者说原来是127.0.0.1,现在想改成192.168.0.1,就会让exe多出几个字节来。。。

这样子修改以后,EXE无法运行。。。咋搞?求解。。。
2009-1-11 16:56
0
雪    币: 296
活跃值: (260)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
多的改少的比较方便,反过来就麻烦了
2009-1-11 20:24
0
雪    币: 220
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
嘿嘿,麻烦倒不怕,就是偶现在不知道怎么做。。。。
2009-1-11 20:37
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
6
字符串一程序中一般都是常量,只读,所以可以直接写在代码段末尾的空白处,然后修改程序中所有对该字符串的引用代码,将引用地址改成新的地址。(理论上还有个重定位的问题,不过对EXE,可以不用管它)

办法1.用OD调试程序,对原来的字符串下内存断点,运行程序,记录所有的中断,然后一一修改。此方法可以会对代码覆盖不全,漏掉某些代码.

办法2.如果程序没有加壳也没有加花,试试用IDA分析,然后从交叉引用信息中得到引用代码。
2009-1-12 04:23
0
雪    币: 564
活跃值: (12)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
一般改本地验证,改为127.0.0.1通常都是比原来的少的。

我一般改的时候是保持和原来数目一样,缺的部分用00填充。

如果改多的话,可以选择块空地,跳出来,再跳回去。
2009-1-12 09:56
0
雪    币: 123
活跃值: (95)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
多的改少的可以直接用winhex将字符串改写,空出来的部份用00.
少的改多的,没什么好的办法,只能是找到程序中不用的空地,写入字符串,再调试程序,将原字符串引用全部改到新的字符串位置了。
2009-1-12 19:43
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
9
加节,添加新的字符,修改引用...
2009-1-12 19:56
0
游客
登录 | 注册 方可回帖
返回
//