sunpx3 发表于 2020-10-17 23:44

ollydbg如何批量修改代码

本帖最后由 sunpx3 于 2020-10-17 23:50 编辑

我发现我应该发到软件调试区- -
----------------------------------------------
各位大佬,本人新手,在用ollydbg修改代码的时候 发现有一大段相同的代码都需要修改时一个个改特别慢,例如这样
btn1.enable(false)
btn2.enable(false)
btn3.enable(false)
btn4.enable(false)
btn5.enable(false)
代码类似这种,需要批量修改为true
对应ollydbg代码是这样。下面还有很多,我看他们之间间隔 15,
例如DC+15 = F1 ,下面之间都是这规律,所以想着有没有个脚本啥的能批量修改--知道的朋友指点下发哈,给个思路-或者有其他办法都行-谢谢啦。











king1027 发表于 2020-11-27 14:14

本帖最后由 king1027 于 2020-11-27 16:04 编辑

如果exe文件带壳,那就用大白工具直接做补丁。


如果exe文件不带壳,可以直接用16进制编辑器改文件,那你就下载个emeditor软件,以二进制方式(十六进制视图)模式打开exe文件。


再然后我举个例子:
已知暗桩特征码:C7 0? 1? 27 00 00
C7 03 12 27 00 00,C7 00 14 27 00 00,C7 07 19 27 00 00………………程序有几十处代码,全部需要改成90 90 90 90 90 90,手动修改显然麻烦。

首先特征码要转换为正规表达式。由于emeditor软件原因,C7 00中间的空格被认为是真正的“空格”了。所以C7 0? 1? 27 00 00的正规表达式是(C7)[\s\n]+(0)[\s\n]+(1)[\s\n]+27[\s\n]+(00)[\s\n]+(00)

[\s\n]+意思是匹配一次以上的空格或者换行,()意思是绝对匹配括号里面的字符,是匹配0-9的数字。

然后emedior菜单搜索-替换,如下图,点全部替换就大功告成,保存为exe文件即可。



这个例子通配符?正好是数字,如果是字母,C7 ?? ?A,比如C7 EB BA这样的,写成(C7)[\s\n]+[\s\n]+(A)



https://static.52pojie.cn/static/image/hrline/1.gif
再看一个更复杂的例子
00D69150|.E8 3B860500   |call StockOrd.00DC1790
00D69155|.84C0          |test al,al
00D69157|.74 06         |je short StockOrd.00D69161
00D6915B|.C700 12270000 |mov dword ptr ds:,0x2712




00D69150|.E8 3B860500   |call StockOrd.00DC1790
00D69155|.84C0          |test al,al
00D69157|.74 06         |je short StockOrd.00D69161
00D6915B|.C700 12270000 |mov dword ptr ds:,0x2712


0085E0AB|. |E8 E0360500   call StockOrd.008B1790
0085E0B0|. |84C0          test al,al
0085E0B2|. |74 08         je short StockOrd.0085E0BC
0085E0B4|. |33C0          xor eax,eax
0085E0B6|. |C700 13270000 mov dword ptr ds:,0x2713


分别是三段代码(为了讲解编辑过了,别追求正确性),都要把je跳转改成jmp跳。但xor这一句有的代码存在,有的不存在。

通杀的正规表达式是(84)[\s\n]+(C0)[\s\n]+(74)[\s\n]+(0)[\s\n]+(33)?[\s\n]?(C0)?[\s\n]?(C7)[\s\n]+(0)[\s\n]+(1)[\s\n]+27[\s\n]+(00)[\s\n]+(00),可以找出带xor也同时找出不带xor的,从test al,al一直到mov的十六进制代码。

但因为替换的时候不智能,74改EB可以,后面跟的06还是08无法判断,所以还是分两次修改为好。因为多了xor语句,跳转加了2字节。带xor的跳转是74 08,不带xor的是74 06
先替换带xor的:(84)[\s\n]+(C0)[\s\n]+(74)[\s\n]+(0)[\s\n]+(33)+[\s\n]+(C0)+[\s\n]+(C7)[\s\n]+(0)[\s\n]+(1)[\s\n]+27[\s\n]+(00)[\s\n]+(00)
改成:84 C0 EB 08 90 90 90 90 90 90 90 90

再替换不带xor的:(84)[\s\n]+(C0)[\s\n]+(74)[\s\n]+(0)[\s\n]+(C7)[\s\n]+(0)[\s\n]+(1)[\s\n]+27[\s\n]+(00)[\s\n]+(00)
改成:84 C0 EB 06 90 90 90 90 90 90

冥界3大法王 发表于 2020-12-1 22:04

king1027 发表于 2020-11-27 14:14
如果exe文件带壳,那就用大白工具直接做补丁。




@king1027
我曾经试过010editor和 HEX....第二个名字忘记了(青色图标的那款)
这东西正则替换2进制不支持前后断言
比如类似于网址这种就不太好用。。。回来试试这个,感谢提供情报。{:301_988:}

天下 发表于 2020-10-18 00:06

本帖最后由 天下 于 2020-10-18 00:17 编辑


帮你录一下,看操作进行就好。我的特征码跟你的特征码不一样,按你的替换就行。你的是6a0068替换成6a0168

sunpx3 发表于 2020-10-18 00:13

天下 发表于 2020-10-18 00:06


好家伙这都行- - 我也要试试看。感谢感谢。

天下 发表于 2020-10-18 00:15

sunpx3 发表于 2020-10-18 00:13
好家伙这都行- - 我也要试试看。感谢感谢。

重新录了一下,那个数据窗口中这样操作的话其实有长度限制的。又录制了另一个操作。

AsuraSong 发表于 2020-10-18 00:18

谢谢楼主分享,学习了

花花219 发表于 2020-10-18 00:46

厉害厉害

sunpx3 发表于 2020-10-18 01:44

天下 发表于 2020-10-18 00:15
重新录了一下,那个数据窗口中这样操作的话其实有长度限制的。又录制了另一个操作。

感谢,我试了一下,一次成功 ,哈哈。{:1_893:}

anlovedong 发表于 2020-10-18 05:12

学习了,谢谢大佬们的指点

Smallhorse 发表于 2020-10-18 08:52

用大白补丁工具,自动日进去

wangez 发表于 2020-10-18 11:16

谢谢楼主分享{:1_921:}
页: [1] 2
查看完整版本: ollydbg如何批量修改代码