首页
社区
课程
招聘
[求助]修改DLL文件后,程序载入的问题
2008-4-14 10:00 4908

[求助]修改DLL文件后,程序载入的问题

2008-4-14 10:00
4908
用od修改了dll里一个函数的部分代码,保存。但可执行程序导入此dll文件,定位到修改位置,发现代码与修改的不一样。请有修改dll代码经验的朋友指点一下。

原代码:
00ACBCA1       33C9                   xor ecx,ecx
00ACBCA3       B2 01                  mov dl,1
00ACBCA5       A1 FCE1CE00            mov eax,dword ptr ds:[CEE1FC]
00ACBCAA       E8 19492300            call fastrepo.00D005C8
00ACBCAF       8945 EC                mov dword ptr ss:[ebp-14],eax
00ACBCB2       33C0                   xor eax,eax
00ACBCB4       55                     push ebp
00ACBCB5       68 96BDAC00            push fastrepo.00ACBD96
00ACBCBA       64:FF30                push dword ptr fs:[eax]
00ACBCBD       64:8920                mov dword ptr fs:[eax],esp

修改后:
00ACBCA1       53                     push ebx
00ACBCA2       33C0                   xor eax,eax
00ACBCA4       64:8920                mov dword ptr fs:[eax],esp
00ACBCA7       8B45 08                mov eax,dword ptr ss:[ebp+8]
00ACBCAA       8B40 FC                mov eax,dword ptr ds:[eax-4]
00ACBCAD       8B10                   mov edx,dword ptr ds:[eax]
00ACBCAF       FF52 24                call dword ptr ds:[edx+24]
00ACBCB2       5B                     pop ebx
00ACBCB3       3BD8                   cmp ebx,eax
00ACBCB5       0F85 15030000          jnz fastrepo.00ACBFD0
00ACBCBB       E9 40030000            jmp fastrepo.00ACC000

修改后的DLL被EXE程序导入:
0111BCA1       53                     push ebx
0111BCA2       33C0                   xor eax,eax
0111BCA4       64:8920                mov dword ptr fs:[eax],esp
0111BCA7       8BAA 088B40FC          mov ebp,dword ptr ds:[edx+FC408B08]        <-------出现问题
0111BCAD       8B10                   mov edx,dword ptr ds:[eax]
0111BCAF       FF52 24                call dword ptr ds:[edx+24]
0111BCB2       5B                     pop ebx
0111BCB3       3BD8                   cmp ebx,eax
0111BCB5       0F85 15680000          jnz fastrepo.011224D0
0111BCBB       E9 40030000            jmp fastrepo.0111C000

发现有一行代码在dll导入后被修改了

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 29412
活跃值: (18675)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2008-4-14 10:10
2
0
重定位了,涉及到直接寻址的指令,PE重定位表里有登记,会被重定位。如下面的红色的部分:

00ACBCA1       33C9                   xor ecx,ecx
00ACBCA3       B2 01                  mov dl,1
00ACBCA5       A1 FCE1CE00            mov eax,dword ptr ds:[CEE1FC]
00ACBCAA       E8 19492300            call fastrepo.00D005C8
00ACBCAF       8945 EC                mov dword ptr ss:[ebp-14],eax
00ACBCB2       33C0                   xor eax,eax
00ACBCB4       55                     push ebp
00ACBCB5       68 96BDAC00            push fastrepo.00ACBD96
00ACBCBA       64:FF30                push dword ptr fs:[eax]
00ACBCBD       64:8920                mov dword ptr fs:[eax],esp

解决办法:
1.改PE重定位表,不让这2处重定位。
2.由于你补丁的代码不需要重定位,可以JMP到其他地方存放。
雪    币: 138
活跃值: (1996)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ysoni 2008-4-14 10:40
3
0
多谢kanxue老大。
在PE方面我仍只是入门者,还得多多学习。
游客
登录 | 注册 方可回帖
返回