能力值:
(RANK:350 )
2 楼
手动会累死你的。
ImportREC修复分2阶段:
1、恢复出完整的IAT(除了加密壳外,一般的壳IAT是没破坏的,如UPX等);
2、从这个IAT构造正确的输入表。
能力值:
( LV8,RANK:130 )
3 楼
有个老帖子讲到过怎么把函数地址转化成指向函数名的指针...
好象是叫手动脱壳高级篇...
能力值:
( LV2,RANK:10 )
4 楼
最初由 kanxue 发布 手动会累死你的。 ImportREC修复分2阶段: 1、恢复出完整的IAT(除了加密壳外,一般的壳IAT是没破坏的,如UPX等); 2、从这个IAT构造正确的输入表。
感谢老大回复,咱们学生有力量,嘿,有力量
能力值:
( LV2,RANK:10 )
5 楼
那是
手动修复的话
绝对是有得晕
所以工具还是快点
能力值:
( LV2,RANK:10 )
6 楼
工具是快,但是我们难道只能用别人写好的工具做我们的事,而不知道具体是什么原理!!!这样学来还有什么技术可言,只不过是一个苦力罢了!
用工具,但更要懂得原理!我也找了好久这些资料了
能力值:
( LV6,RANK:90 )
7 楼
我手头上到是有一些资料, 可惜是法文的,不知你是否会有兴趣.
虽然已经5年了, 可还算是写的挺好的文章,如果有兴趣,可以留下你的电子邮箱,我负责给你寄去...如果需要翻译成英文也可以
我也想过翻译成中文,可惜最近时间很不够用...
能力值:
( LV2,RANK:10 )
8 楼
非常感谢声声慢大哥,你的好意我心领啦
我看E文资料怀里都揣个金山词霸,而且还是云里雾里转。
还是我自己慢慢钻研吧
能力值:
( LV6,RANK:90 )
9 楼
呵呵,是姐姐.
能力值:
( LV2,RANK:10 )
10 楼
能力值:
( LV7,RANK:100 )
11 楼
能力值:
( LV2,RANK:10 )
12 楼
有没有前辈愿意指点我,thx
QQ:93056345
能力值:
( LV2,RANK:10 )
13 楼
晚上活动的兄弟怎么这么少啦???
能力值:
( LV9,RANK:3410 )
14 楼
不是太清楚你所谓的手动修复IAT的意思
不过你可以学习《加密解密2》中的相关部分
新建一个输入表都可以
能力值:
(RANK:10 )
15 楼
建议跟我一样,先把PE文件格式【彻底】弄明白再出来混~~~~~
能力值:
( LV6,RANK:90 )
16 楼
手动修复IAT就是在不利用ImportREC或Revirgin等工具前提下对IAT进行修复.
在现在工具这么发达的年代,恐怕只有那些正在消失的恐龙才会对全手动恋恋不舍
不过有时这种方法也有利于理解,我想,这就是以上的朋友要学习的原因吧?
我刚学脱壳的时候,看过一些挺好的文章,我已经开始翻译了,可是第一篇就有15页,慢慢来吧,每天抽几十分钟,看看这次能否坚持到底...
要是在我还没弹尽粮绝的情况下,那就15天后见吧.
能力值:
( LV8,RANK:130 )
17 楼
不知道你是不是外挂论坛里的“阵雨”,感谢你曾经在那里提示过我解决了一个问题,加密与解密第一版就有的,不过很麻烦的
能力值:
( LV9,RANK:3410 )
18 楼
最初由 声声慢 发布 手动修复IAT就是在不利用ImportREC或Revirgin等工具前提下对IAT进行修复. 在现在工具这么发达的年代,恐怕只有那些正在消失的恐龙才会对全手动恋恋不舍 不过有时这种方法也有利于理解,我想,这就是以上的朋友要学习的原因吧? ........ 找出加密IAT的地方,避开
论坛里有几篇这样的
如果所有的壳都想这样做
呵呵,去试试吧
能力值:
( LV6,RANK:90 )
19 楼
所以Mackt才发明了ImportREC呀.
能力值:
( LV2,RANK:10 )
20 楼
老大们,我也想学,我严重支持楼主,我现在也是想手动脱壳:)
能力值:
( 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里获得导入函数的入口地址。
以上是我个人的理解,因为我是菜鸟,所以不知道是错是对,希望对你有帮助!
能力值:
( LV2,RANK:10 )
22 楼
看
ImportREC
原程序,你能做到精通
能力值:
( LV6,RANK:90 )
23 楼
好了,译完了,希望能对你用一点帮助吧...
其实这篇文章的续集写得更好,可是有20页呢,也许下次吧...
http://bbs.pediy.com/showthread.php?s=&threadid=10773
http://sowhat.hollosite.com/IAT%20TUT/index.htm
声声慢
能力值:
( LV2,RANK:10 )
24 楼
“其实这篇文章的续集写得更好,可是有20页呢,也许下次吧...”
我会等待的。
声声慢,你好。冒昧地问一下:“能转发原文吗?”
能力值:
( LV8,RANK:130 )
25 楼
最初由 声声慢 发布 我手头上到是有一些资料, 可惜是法文的,不知你是否会有兴趣. 虽然已经5年了, 可还算是写的挺好的文章,如果有兴趣,可以留下你的电子邮箱,我负责给你寄去...如果需要翻译成英文也可以 我也想过翻译成中文,可惜最近时间很不够用... 冒昧的问一下 可否给我发一份?英文的
我的E : *************** (暂时加密 期待中。。。。。。
)
不知道这算不算违规叻。。。。。。。。。。。。