首页
社区
课程
招聘
[旧帖] 脱壳中为什么要用到"修复IAT"。 0.00雪花
发表于: 2012-6-10 01:29 4215

[旧帖] 脱壳中为什么要用到"修复IAT"。 0.00雪花

2012-6-10 01:29
4215
是IAT表被转移了吗?
脱壳后的程序为什么不修复就不能运行。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
因为大多数外壳喜欢擦除IAT表以防止被脱壳。
2012-6-10 11:55
0
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那请问擦除了IAT后程序还可以正常运行么.
我dump出来的镜像中的确是有IAT的,为什么还要修复呢。
2012-6-10 12:28
0
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
查找旧文,看雪老大说:"dump出来的确实是有IAT的。但得到的是内存中的IAT函数地址,在不同的系统上无法使用。所以要以函数名字重新构建一张导入表"。可是有的软件同一台机,同一系统。脱壳后不重启的情况也无法使用啊。难道dump下来的是假的IAT?如何修复。
2012-6-10 13:21
0
雪    币: 12
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你把别人的东西拆了 难道不要补好么
2012-6-10 16:42
0
雪    币: 854
活跃值: (1401)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
因为有两份IAT,壳有自己的一份,然后壳帮原程序也维护了一份。要修复,就是要修复原程序的那一份。加过壳后IAT指向的是,壳的那份。如果不修复,原程序的IAT就是壳的那份,但是原程序中的函数和壳的函数时不一样的,所以就找不到函数地址或者找错,导致程序无法启动或者崩溃。
2012-6-11 09:03
0
雪    币: 36
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
PE的存储的时候和运行的时候 IAT是不一样的。
2012-6-11 09:23
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
8
IAT 有一张需要系统根据情况填充的地址表。你dump出来的,只是一张填充好的地址表。如果需要动态被填充。需要一个完整的能够顺利解析的IAT链表
2012-6-11 12:10
0
游客
登录 | 注册 方可回帖
返回
//