首页
社区
课程
招聘
[己解决]为什么OD与w32dasm得出的IAT不一样?
发表于: 2008-6-19 10:46 3897

[己解决]为什么OD与w32dasm得出的IAT不一样?

2008-6-19 10:46
3897
我用OD载入系统自带的NOTEPAD,得到一份IAT(表1)。
然后重新用w32dasm载入NOTEPAD,得到另一份IAT(表2)。
我本来以为2份IAT应该一模一样的,结果比较之后,发现有以下不同:
IAT表1(与表2相同的省略了,以下是表2中没有的):
01001050 >77F244CF  GDI32.StartDocW

01001138 >7C930331  ntdll.RtlGetLastWin32Error
01001140 >7C930340  ntdll.RtlSetLastWin32Error

0100131C >77C317AC  offset msvcrt._acmdln
0100132C >77C323D8  offset msvcrt._adjust_fdiv
IAT表2(与表1相同的省略了,以下是表1中没有的):
GDI32.TextOutW

KERNEL32.GetLastError
KERNEL32.SetEndOfFile
KERNEL32.SetLastError
我想请教大侠:难道同一个程序,它的引入函数不是固定的吗?

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没人回帖?
2008-6-19 20:29
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
还是没人回啊,自己最后顶一下
2008-6-20 20:25
0
雪    币: 50161
活跃值: (20625)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
你说的“w32dasm载入”是仅打开notepad.exe,还是用w32dasm调试的加载?如果是打开notepad.exe,看到的IAT是notepad默认的IAT。(notepad.exe 有Bound Import,IAT默认填充了的值,有关Bound Import含义请看PE格式)

如果用OllyDBG打开notepad.exe,如果绑定的IAT不对,会重新填充IAT。

另外,像kernel32!RestoreLastError的API,系统调用时,会重定向到ntdll!RtlRestoreLastWin32Error
2008-6-20 20:52
0
雪    币: 212
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看看老大的<加密与解密第二版>第8章(280页) , 就有说了.
2008-6-20 20:52
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
明白了,谢谢看雪老大,回答得简洁、明了。w32dasm只是打开,不是调试。

也谢谢5楼的朋友,不过我才涉足这个领域几个月,没有二版的书,打算买三版呢。
2008-6-21 09:29
0
游客
登录 | 注册 方可回帖
返回
//