首页
社区
课程
招聘
请教,怎么用ollydbg修改dll文件?
发表于: 2004-10-29 14:57 17876

请教,怎么用ollydbg修改dll文件?

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

这个是提示窗口。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (18)
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
操作系统对DLL文件的载入会有一个重定位。每次重定位的基址都有可能是不同的。也就是说每次DUMP下来的代码都有可能不同
2004-10-29 15:47
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是啊基地址会变化,那怎么修改代码啊?
另外,我用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
这是怎么回事啊?请赐教。
2004-10-29 16:47
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
MOV DWORD PTR DS:[100380B4],EDX
这样的相对地址写法不对吗?应该怎么写?
2004-10-29 16:49
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
把未重定位的代码和重定位后的代码,以及重定位后你修改的代码贴出来才行啊
2004-10-29 16:51
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我问的是两个问题,一个是怎么修改dll,一个是用od修改后,od不能正常反编译。

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

上面贴的是未重定位的,也就是用loaddll装载后静态分析的,下面是重定向后的。
01F02881    8915 B480F301   MOV DWORD PTR DS:[1F380B4],EDX
我主要目的是向这个地址传送一个常量。
谢谢采臣回贴。
2004-10-29 20:00
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
7
不涉及需要重定位的
直接修改保存
2004-10-29 21:17
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 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开始就不对了,请高手指点一下,该如何修改?
2004-10-29 22:06
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
再完整地把修改代码发一遍。
修改前:
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
这个地址应该怎么写?
另外为什么代码会和汇编时修改的不一样?是和这个重定向地址有关吗?
2004-10-29 22:15
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
10
10002878   .  A3 B8800310   MOV DWORD PTR DS:[100380B8],EAX
这里重定位了
2004-10-30 00:27
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最初由 fly 发布
10002878 . A3 B8800310 MOV DWORD PTR DS:[100380B8],EAX
这里重定位了

那该怎么写这个语句?
2004-10-30 08:18
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
高手指点一下了。
2004-10-30 12:12
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
晕~~又没有人了:(
2004-10-30 16:25
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
老大们指点一下啊!
2004-10-30 20:58
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
高手们周末都休息了??
2004-10-31 11:22
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
今天该有人了吧:)
期待ing
2004-11-1 08:25
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
继续期待
2004-11-1 13:06
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
终于找到原因了,需要修改重定位表,怎么修改啊?高手指点指点。
2004-11-1 18:35
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
哈哈~~终于搞定了。
2004-11-1 18:58
0
游客
登录 | 注册 方可回帖
返回
//