首页
社区
课程
招聘
[旧帖] 如何提取dll导出函数的汇编代码,并在vc或masm中编译 0.00雪花
发表于: 2012-3-29 16:06 7535

[旧帖] 如何提取dll导出函数的汇编代码,并在vc或masm中编译 0.00雪花

2012-3-29 16:06
7535
dll有地址重定位问题,按照exe的模式提取出来的汇编代码,很多地址都是错误的(因为重定位问题),请教高手od、ida又没提取dll汇编代码的插件,或者手动如何计算重定位地址,如:

10001530 >/$  83EC 64       SUB ESP, 64
10001533  |.  A1 40A00010   MOV EAX, DWORD PTR DS:[1000A040] ;如何重定位?
10001538  |.  33C4          XOR EAX, ESP

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 169
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
dll基址+偏移
dll基址可以alt+e查看
这次dll基址是10000000,
base= ::LoadLibrary("Dll名字");
_asm
{
pushad
mov ecx,base
add ecx,0a040
MOV EAX, DWORD PTR DS:[ecx]
popad
}
要这样不行,就自己解析pe,找到重定位信息再改吧
2012-3-29 16:15
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我那个dll的基址是10000000,那
MOV EAX, DWORD PTR DS:[1000A040] ;
改为
MOV EAX, DWORD PTR DS:[A040] ??
2012-3-29 17:13
0
雪    币: 9390
活跃值: (18720)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
为什么不直接调用导出函数,而非要把代码挖出来用
2012-3-29 20:17
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵,只为学习啊!
2012-3-29 20:25
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
先将dll加载到内存中,根据重定位表中的数据重定位代码段数据,然后再提取代码啊。
2012-3-29 23:48
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
对于这种地址od好像已经重定位了,会有下划线提示,对于地址100a040的值,每次调试都不一样,不是个常量,真不知道反出汇编代码,独立编译,继续等待高手
2012-3-30 09:39
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
顶一下顶一下顶一下顶一下顶一下
2012-4-5 08:49
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
楼主的想法太天真了,以为搞定重定位表就搞定了一切,其实整个看来有太多的问题,不如自己逆向,重写代码。
2012-4-5 09:19
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
100a040要重新计算偏移位置的,1000A040 - 10001533 + 现在加载的该指令地址就可以了
2012-4-23 04:54
0
雪    币: 1737
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
dll导出函数的汇编代码~~
2012-4-23 07:44
0
游客
登录 | 注册 方可回帖
返回
//