首页
社区
课程
招聘
各位前辈,有没有手动修复IAT的教程[求助]
发表于: 2005-1-27 02:53 8695

各位前辈,有没有手动修复IAT的教程[求助]

2005-1-27 02:53
8695
最近开始学脱壳,看了好多脱壳教程都是讲的ImportREC修复IAT,虽然用这个工具能达到目的,不过我想既然是学习手动脱壳,那么就因该弄清楚所有原理,所以我想学习手动修复IAT,不知道有没有教程啊

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

收藏
免费 0
支持
分享
最新回复 (27)
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
手动会累死你的。
ImportREC修复分2阶段:
1、恢复出完整的IAT(除了加密壳外,一般的壳IAT是没破坏的,如UPX等);
2、从这个IAT构造正确的输入表。
2005-1-27 08:12
0
雪    币: 159
活跃值: (339)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
有个老帖子讲到过怎么把函数地址转化成指向函数名的指针...
好象是叫手动脱壳高级篇...
2005-1-27 13:42
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 kanxue 发布
手动会累死你的。
ImportREC修复分2阶段:
1、恢复出完整的IAT(除了加密壳外,一般的壳IAT是没破坏的,如UPX等);
2、从这个IAT构造正确的输入表。


感谢老大回复,咱们学生有力量,嘿,有力量
2005-1-27 14:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
那是
手动修复的话
绝对是有得晕
所以工具还是快点
2005-1-27 15:58
0
雪    币: 203
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
工具是快,但是我们难道只能用别人写好的工具做我们的事,而不知道具体是什么原理!!!这样学来还有什么技术可言,只不过是一个苦力罢了!

用工具,但更要懂得原理!我也找了好久这些资料了
2005-1-27 17:43
0
雪    币: 212
活跃值: (105)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
我手头上到是有一些资料, 可惜是法文的,不知你是否会有兴趣.
虽然已经5年了, 可还算是写的挺好的文章,如果有兴趣,可以留下你的电子邮箱,我负责给你寄去...如果需要翻译成英文也可以
我也想过翻译成中文,可惜最近时间很不够用...
2005-1-28 00:02
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
非常感谢声声慢大哥,你的好意我心领啦
我看E文资料怀里都揣个金山词霸,而且还是云里雾里转。
还是我自己慢慢钻研吧
2005-1-28 00:50
0
雪    币: 212
活跃值: (105)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
呵呵,是姐姐.
2005-1-28 01:20
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
2005-1-28 01:47
0
雪    币: 14870
活跃值: (4663)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
11
最初由 声声慢 发布
呵呵,是姐姐.

2005-1-28 02:44
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
有没有前辈愿意指点我,thx
QQ:93056345
2005-1-28 02:54
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
晚上活动的兄弟怎么这么少啦???
2005-1-28 06:48
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
14
不是太清楚你所谓的手动修复IAT的意思
不过你可以学习《加密解密2》中的相关部分
新建一个输入表都可以
2005-1-28 10:31
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
15
建议跟我一样,先把PE文件格式【彻底】弄明白再出来混~~~~~
2005-1-28 11:00
0
雪    币: 212
活跃值: (105)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
手动修复IAT就是在不利用ImportREC或Revirgin等工具前提下对IAT进行修复.

在现在工具这么发达的年代,恐怕只有那些正在消失的恐龙才会对全手动恋恋不舍
不过有时这种方法也有利于理解,我想,这就是以上的朋友要学习的原因吧?

我刚学脱壳的时候,看过一些挺好的文章,我已经开始翻译了,可是第一篇就有15页,慢慢来吧,每天抽几十分钟,看看这次能否坚持到底...

要是在我还没弹尽粮绝的情况下,那就15天后见吧.
2005-1-28 22:59
0
雪    币: 241
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
17
不知道你是不是外挂论坛里的“阵雨”,感谢你曾经在那里提示过我解决了一个问题,加密与解密第一版就有的,不过很麻烦的
2005-1-29 00:16
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
18
最初由 声声慢 发布
手动修复IAT就是在不利用ImportREC或Revirgin等工具前提下对IAT进行修复.

在现在工具这么发达的年代,恐怕只有那些正在消失的恐龙才会对全手动恋恋不舍
不过有时这种方法也有利于理解,我想,这就是以上的朋友要学习的原因吧?

........


找出加密IAT的地方,避开
论坛里有几篇这样的

如果所有的壳都想这样做
呵呵,去试试吧
2005-1-29 19:49
0
雪    币: 212
活跃值: (105)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
19
所以Mackt才发明了ImportREC呀.
2005-1-29 19:55
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
老大们,我也想学,我严重支持楼主,我现在也是想手动脱壳:)
2005-1-29 20:48
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
昨晚啃看雪的《加密与解密二》到三点,终于有了点眉目啦,呵呵....

我们知道输入表结构是一个IID结构数组,以下是IMAGE_IMPORT_DESCRIPTOR结构定义:

typedef struct _IMAGE_IMPORT_DESCRIPTOR {
  union {
    DWORD Characteristics;    // 0 for terminating null import descriptor
    DWORD OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
  };
  DWORD   TimeDateStamp;      // 0 if not bound,
                              // -1 if bound, and real date\time stamp
                              // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
                              // O.W. date/time stamp of DLL bound to (Old BIND)
  DWORD   ForwarderChain;     // -1 if no forwarders
  DWORD   Name;               // 指向一个以Null结束的DLL文件名的RVA地址。
  DWORD   FirstThunk;         // RVA to IAT (if bound this IAT has actual addresses)
} IMAGE_IMPORT_DESCRIPTOR;

每引用一个DLL就会在输入表里就会多一个IDD结构(最后一个IDD结构全为0),其中每个IDD结构的Name指向DLL的文件名(以Null结束),FirstThunk(因为一般都看FirstThunk的值)指向一个IMAGE_THUNK_DATA结构,而IMAGE_THUNK_DATA结构是一个指向IMAGE_IMPORT_BY_NAME结构的指针数组(以Null结束),每个指针指向一个IMAGE_IMPORT_BY_NAME结构,以下是IMAGE_IMPORT_BY_NAME结构的定义:

IMAGE_IMPORT_BY_NAME STRUCT {
  WORD Hint; \\ 函数在其所驻留DLL的引出表中的索引号
  Byte Name; \\ 函数的函数名
} IMAGE_IMPORT_BY_NAME ENDS;

好了,到这里我终于明白,要修复IAT是因为脱壳后,IMAGE_THUNK_DATA指针数组无法正确得到导入函数的入口地址,所以要修复IAT要先修正OriginalFirstThunk或FirstThunk指向的IMAGE_THUNK_DATA指针数组,使其指向正确的IMAGE_IMPORT_BY_NAME,这样才可以使PE加载后可以从IMAGE_IMPORT_BY_NAME里获得导入函数的入口地址。

以上是我个人的理解,因为我是菜鸟,所以不知道是错是对,希望对你有帮助!
2005-1-30 13:21
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22

ImportREC
原程序,你能做到精通
2005-1-30 21:01
0
雪    币: 212
活跃值: (105)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
23
好了,译完了,希望能对你用一点帮助吧...
其实这篇文章的续集写得更好,可是有20页呢,也许下次吧...

http://bbs.pediy.com/showthread.php?s=&threadid=10773
http://sowhat.hollosite.com/IAT%20TUT/index.htm

声声慢
2005-2-4 06:29
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
“其实这篇文章的续集写得更好,可是有20页呢,也许下次吧...”

我会等待的。

声声慢,你好。冒昧地问一下:“能转发原文吗?”
2005-2-5 20:50
0
雪    币: 261
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
25
最初由 声声慢 发布
我手头上到是有一些资料, 可惜是法文的,不知你是否会有兴趣.
虽然已经5年了, 可还算是写的挺好的文章,如果有兴趣,可以留下你的电子邮箱,我负责给你寄去...如果需要翻译成英文也可以
我也想过翻译成中文,可惜最近时间很不够用...


冒昧的问一下  可否给我发一份?英文的
我的E : *************** (暂时加密 期待中。。。。。。 )
不知道这算不算违规叻。。。。。。。。。。。。
2005-2-7 18:19
0
游客
登录 | 注册 方可回帖
返回
//