吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2774|回复: 13
收起左侧

[求助] ollydbg如何批量修改代码

[复制链接]
sunpx3 发表于 2020-10-17 23:44
本帖最后由 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 ,下面之间都是这规律,所以想着有没有个脚本啥的能批量修改--知道的朋友指点下发哈,给个思路-或者有其他办法都行-谢谢啦。
image.png



image.png






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

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)[0-9][\s\n]+(1)[0-9][\s\n]+27[\s\n]+(00)[\s\n]+(00)

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

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


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




再看一个更复杂的例子
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:[eax],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:[eax],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:[eax],0x2713


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

通杀的正规表达式是(84)[\s\n]+(C0)[\s\n]+(74)[\s\n]+(0)[6-8][\s\n]+(33)?[\s\n]?(C0)?[\s\n]?(C7)[\s\n]+(0)[0-9][\s\n]+(1)[0-9][\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)[6-8][\s\n]+(33)+[\s\n]+(C0)+[\s\n]+(C7)[\s\n]+(0)[0-9][\s\n]+(1)[0-9][\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)[6-8][\s\n]+(C7)[\s\n]+(0)[0-9][\s\n]+(1)[0-9][\s\n]+27[\s\n]+(00)[\s\n]+(00)
改成:84 C0 EB 06 90 90 90 90 90 90

免费评分

参与人数 1吾爱币 +3 收起 理由
冥界3大法王 + 3 原来EmEditor的正则还能干16进制又学一招。。。

查看全部评分

冥界3大法王 发表于 2020-12-1 22:04
king1027 发表于 2020-11-27 14:14
如果exe文件带壳,那就用大白工具直接做补丁。

@king1027
我曾经试过010editor  和 HEX....第二个名字忘记了(青色图标的那款)
这东西正则替换2进制不支持前后断言
比如  类似于网址这种就不太好用。。。回来试试这个,感谢提供情报。
天下 发表于 2020-10-18 00:06
本帖最后由 天下 于 2020-10-18 00:17 编辑

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

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
涛之雨 + 1 + 1 学废了,学废了,新技能get√
sunpx3 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| sunpx3 发表于 2020-10-18 00:13

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

重新录了一下,那个数据窗口中这样操作的话其实有长度限制的。又录制了另一个操作。
AsuraSong 发表于 2020-10-18 00:18
谢谢楼主分享,学习了
花花219 发表于 2020-10-18 00:46
[fly]厉害厉害[/fly]
 楼主| sunpx3 发表于 2020-10-18 01:44
天下 发表于 2020-10-18 00:15
重新录了一下,那个数据窗口中这样操作的话其实有长度限制的。又录制了另一个操作。

感谢,我试了一下,一次成功 ,哈哈。
anlovedong 发表于 2020-10-18 05:12
学习了,谢谢大佬们的指点
Smallhorse 发表于 2020-10-18 08:52
用大白补丁工具,自动日进去
wangez 发表于 2020-10-18 11:16
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 04:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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