看雪软件安全论坛



返回   看雪软件安全论坛 > 软件安全 > 『软件调试论坛』

『软件调试论坛』 本版讨论的主题包括:调试逆向、系统底层、漏洞分析、商业保护、病毒木马、虚拟机、.NET平台、安全新闻等

Expired Thread 该主题: "请教,怎么用ollydbg修改dll文件?" 因在一年内没有任何回复而自动关闭。
如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。

发表新主题 关闭主题
 
主题工具 显示模式
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
1 旧 2004-10-29, 14:57:01 默认 请教,怎么用ollydbg修改dll文件?
fox26 当前离线

我用ollydbg汇编功能修改了dll的一段代码,然后复制可执行文件,就提示一个对话框,主要说“dll被调入的时候会被装载到不同的基地址,os会调整,这样会修改你的文件。”
我没有管这个提示,保存文件后,再重新加载到ollydbg中发现修改完后面的代码都变成db这样的数据了,怎么回事啊,如何解决啊?
http://www.chinadfcg.com/attachments/79q0_ollydbg.jpg 
这个是提示窗口。

回复时引用此帖 返回顶端
采臣·宁
级别:5 | 在线时长:45小时 | 升级还需:15小时级别:5 | 在线时长:45小时 | 升级还需:15小时

采臣·宁 的头像

普通会员
普通会员

资 料:
注册日期: Aug 2004
帖子: 1,239 采臣·宁 品行端正
精华: 1
现金: 200 Kx
2 旧 2004-10-29, 15:47:23 默认
采臣·宁 当前离线

操作系统对DLL文件的载入会有一个重定位。每次重定位的基址都有可能是不同的。也就是说每次DUMP下来的代码都有可能不同

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
3 旧 2004-10-29, 16:47:17 默认
fox26 当前离线

是啊基地址会变化,那怎么修改代码啊?
另外,我用od编辑代码后是这样的:
10002879      0FB65424 3B   MOVZX EDX,BYTE PTR SS:[ESP+3B]
1000287E      90            NOP
1000287F      90            NOP
10002880      90            NOP
10002881   .  8915 B4800310 MOV DWORD PTR DS:[100380B4],EDX
10002887   .  8D50 01       LEA EDX,DWORD PTR DS:[EAX+1]
1000288A   .  8D9B 00000000 LEA EBX,DWORD PTR DS:[EBX]
10002890   >  8A08          MOV CL,BYTE PTR DS:[EAX]
10002892   .  40            INC EAX
10002893   .  3ACB          CMP CL,BL
保存完了以后,重新加载后就变成这样了:
10002879   .  0FB65424      DD 2454B60F
1000287D      3B            DB 3B                                    ;  CHAR ';'
1000287E      90            NOP
1000287F      90            NOP
10002880      90            NOP
10002881      89            DB 89
10002882      15            DB 15
这是怎么回事啊?请赐教。

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
4 旧 2004-10-29, 16:49:09 默认
fox26 当前离线

MOV DWORD PTR DS:[100380B4],EDX
这样的相对地址写法不对吗?应该怎么写?

回复时引用此帖 返回顶端
采臣·宁
级别:5 | 在线时长:45小时 | 升级还需:15小时级别:5 | 在线时长:45小时 | 升级还需:15小时

采臣·宁 的头像

普通会员
普通会员

资 料:
注册日期: Aug 2004
帖子: 1,239 采臣·宁 品行端正
精华: 1
现金: 200 Kx
5 旧 2004-10-29, 16:51:02 默认
采臣·宁 当前离线

把未重定位的代码和重定位后的代码,以及重定位后你修改的代码贴出来才行啊

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
6 旧 2004-10-29, 20:00:11 默认
fox26 当前离线

我问的是两个问题,一个是怎么修改dll,一个是用od修改后,od不能正常反编译。

10002881   .  8915 B4800310 MOV DWORD PTR DS:[100380B4],EDX

上面贴的是未重定位的,也就是用loaddll装载后静态分析的,下面是重定向后的。
01F02881    8915 B480F301   MOV DWORD PTR DS:[1F380B4],EDX
我主要目的是向这个地址传送一个常量。
谢谢采臣回贴。

回复时引用此帖 返回顶端
fly
级别:16 | 在线时长:323小时 | 升级还需:34小时

fly 的头像

VIP会员
VIP会员

资 料:
注册日期: Apr 2004
帖子: 7,640 fly 品行端正
精华: 85
现金: 202 Kx
7 旧 2004-10-29, 21:17:39 默认
fly 当前离线

不涉及需要重定位的
直接修改保存

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
8 旧 2004-10-29, 22:06:42 默认
fox26 当前离线

引用:
最初由 fly 发布
不涉及需要重定位的
直接修改保存 
我觉得也不需要重定位,可是用od汇编修改后,后面的代码od都不认了,变成数据了。用ida察看也是正确的语句。用ue看也和结果一样,可就是od不能正确识别:(
我把修改后的文件运行后,用od附加,发现代码又不一样:
01EB2852    C74424 28 3278A>MOV DWORD PTR SS:[ESP+28],57AE7832
01EB285A    C64424 3A 64    MOV BYTE PTR SS:[ESP+3A],64
01EB285F    0FB64424 3A     MOVZX EAX,BYTE PTR SS:[ESP+3A]
01EB2864    A3 B8800310     MOV DWORD PTR DS:[100380B8],EAX
01EB2869    8D4424 2C       LEA EAX,DWORD PTR SS:[ESP+2C]
01EB286D    BA 35353138     MOV EDX,38313535
01EB2872    8910            MOV DWORD PTR DS:[EAX],EDX
01EB2874    C64424 3B 07    MOV BYTE PTR SS:[ESP+3B],7
01EB2879    0FB63F          MOVZX EDI,BYTE PTR DS:[EDI]
01EB287C    16              PUSH SS
01EB287D    3B90 90908915   CMP EDX,DWORD PTR DS:[EAX+15899090]
01EB2883    B4 80           MOV AH,80
01EB2885    EE              OUT DX,AL                                ; I/O command
01EB2886    018D 50018D9B   ADD DWORD PTR SS:[EBP+9B8D0150],ECX
从01EB2879开始就不对了,请高手指点一下,该如何修改?

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
9 旧 2004-10-29, 22:15:34 默认
fox26 当前离线

再完整地把修改代码发一遍。
修改前:
10002852   > \8A4424 2A     MOV AL,BYTE PTR SS:[ESP+2A]
10002856   .  8A4C24 28     MOV CL,BYTE PTR SS:[ESP+28]
1000285A   .  0FB65424 3B   MOVZX EDX,BYTE PTR SS:[ESP+3B]
1000285F   .  32C8          XOR CL,AL
10002861   .  8A4424 29     MOV AL,BYTE PTR SS:[ESP+29]
10002865   .  884C24 28     MOV BYTE PTR SS:[ESP+28],CL
10002869   .  8A4C24 2B     MOV CL,BYTE PTR SS:[ESP+2B]
1000286D   .  32C1          XOR AL,CL
1000286F   .  884424 29     MOV BYTE PTR SS:[ESP+29],AL
10002873   .  0FB64424 3A   MOVZX EAX,BYTE PTR SS:[ESP+3A]
10002878   .  A3 B8800310   MOV DWORD PTR DS:[100380B8],EAX
1000287D   .  8D4424 2C     LEA EAX,DWORD PTR SS:[ESP+2C]
10002881   .  8915 B4800310 MOV DWORD PTR DS:[100380B4],EDX

修改后:
10002852      C74424 28 327>MOV DWORD PTR SS:[ESP+28],57AE7832
1000285A      C64424 3A 64  MOV BYTE PTR SS:[ESP+3A],64
1000285F      0FB64424 3A   MOVZX EAX,BYTE PTR SS:[ESP+3A]
10002864      A3 B8800310   MOV DWORD PTR DS:[100380B8],EAX
10002869      8D4424 2C     LEA EAX,DWORD PTR SS:[ESP+2C]
1000286D      BA 35353138   MOV EDX,38313535
10002872      8910          MOV DWORD PTR DS:[EAX],EDX
10002874      C64424 3B 07  MOV BYTE PTR SS:[ESP+3B],7
10002879      0FB65424 3B   MOVZX EDX,BYTE PTR SS:[ESP+3B]
1000287E      90            NOP
1000287F      90            NOP
10002880      90            NOP
重定向后的:
01EB2852    C74424 28 3278A>MOV DWORD PTR SS:[ESP+28],57AE7832
01EB285A    C64424 3A 64    MOV BYTE PTR SS:[ESP+3A],64
01EB285F    0FB64424 3A     MOVZX EAX,BYTE PTR SS:[ESP+3A]
01EB2864    A3 B8800310     MOV DWORD PTR DS:[100380B8],EAX
01EB2869    8D4424 2C       LEA EAX,DWORD PTR SS:[ESP+2C]
01EB286D    BA 35353138     MOV EDX,38313535
01EB2872    8910            MOV DWORD PTR DS:[EAX],EDX
01EB2874    C64424 3B 07    MOV BYTE PTR SS:[ESP+3B],7
01EB2879    0FB63F          MOVZX EDI,BYTE PTR DS:[EDI]
01EB287C    16              PUSH SS
01EB287D    3B90 90908915   CMP EDX,DWORD PTR DS:[EAX+15899090]
01EB2883    B4 80           MOV AH,80
01EB2885    EE              OUT DX,AL                                ; I/O command
01EB2886    018D 50018D9B   ADD DWORD PTR SS:[EBP+9B8D0150],ECX
跟踪到这里的时候发生存取异常(这是肯定的,地址越界了)
01EB2864    A3 B8800310     MOV DWORD PTR DS:[100380B8],EAX
这个地址应该怎么写?
另外为什么代码会和汇编时修改的不一样?是和这个重定向地址有关吗?

回复时引用此帖 返回顶端
fly
级别:16 | 在线时长:323小时 | 升级还需:34小时

fly 的头像

VIP会员
VIP会员

资 料:
注册日期: Apr 2004
帖子: 7,640 fly 品行端正
精华: 85
现金: 202 Kx
10 旧 2004-10-30, 00:27:04 默认
fly 当前离线

10002878   .  A3 B8800310   MOV DWORD PTR DS:[100380B8],EAX
这里重定位了

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
11 旧 2004-10-30, 08:18:03 默认
fox26 当前离线

引用:
最初由 fly 发布
10002878   .  A3 B8800310   MOV DWORD PTR DS:[100380B8],EAX
这里重定位了 
那该怎么写这个语句?

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
12 旧 2004-10-30, 12:12:45 默认
fox26 当前离线

高手指点一下了。

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
13 旧 2004-10-30, 16:25:45 默认
fox26 当前离线

晕~~又没有人了:(:confused:

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
14 旧 2004-10-30, 20:58:41 默认
fox26 当前离线

老大们指点一下啊!

回复时引用此帖 返回顶端
fox26
级别:0 | 在线时长:2小时 | 升级还需:3小时

初级会员
初级会员

资 料:
注册日期: Oct 2004
帖子: 23 fox26 品行端正
精华: 0
现金: 200 Kx
15 旧 2004-10-31, 11:22:51 默认
fox26 当前离线

高手们周末都休息了??

回复时引用此帖 返回顶端
发表新主题 关闭主题

书签
Expired Thread 该主题: "请教,怎么用ollydbg修改dll文件?" 因在一年内没有任何回复而自动关闭。
如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。


主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子
论坛启用 BB 代码
论坛启用 表情符号
论坛跳转


所有时间均为北京时间。现在的时间是 21:53:38


©2000-2010 PEdiy.com All rights reserved.By PEDIY
Powered by vBulletin ®Jelsoft Enterprises Ltd. 增强包制作PHP源动力.界面支持standme Studio.