WEB开发网
开发学院网络安全黑客技术 压缩与脱壳-脱壳高级篇 上 阅读

压缩与脱壳-脱壳高级篇 上

 2007-01-12 20:11:51 来源:WEB开发网   
核心提示: 每个IID的第四个字段表示的是名字,通过它我们可以知道被调用的函数名,压缩与脱壳-脱壳高级篇 上(3),第一个IID的名字字段是8C30 0000,翻转过来也就是地址0000308C,偏移B08处字符串为MessageBoxA,明白了吧,将它减去2600可以得到原始偏移,308C-2600

每个IID的第四个字段表示的是名字,通过它我们可以知道被调用的函数名。第一个IID的名字字段是8C30 0000,翻转过来也就是地址0000308C,将它减去2600可以得到原始偏移,308C-2600=A8C,来到文件偏移A8C处,我们看到了什么?啊哈!原来调用的是KERNEL32.dll。

好了,接下来我们就要去找出KERNEL32.dll中被调用的函数。回到第一个IID。

FirstThunk字段包含了被调用的函数名的标志,OriginalFirstThunk仅仅是FirstThunk的备份,甚至有的程序根本没有,所以我们通常看FirstThunk,它在程序运行时被初始化。

KERNEL32.dll的FirstThunk字段值是6430 0000,翻转过来也就是地址00003064,减去2600得A64,在偏移A64处就是我们的IMAGE_THUNK_DATA,它存储的是一串地址,以一串00结束。如下: 

A430 0000/B230 0000/C030 0000/CE30 0000/DE30 0000/EA30 0000/F630 0000/0000 0000

通常在一个完整的程序里都将有这些。我们现在有了7个函数调用,让我们来看其中的两个:

DE30 0000翻转后是30DE,减去2600后等于ADE,看在偏移ADE处的字符串是ReadFile,

EA30 0000翻转后是30EA,减去2600后等于AEA,看在偏移AEA处的字符串是WriteFile,

你可能注意到了,在函数名前还有2个这字节的00,它是被作为一个提示。

很简单吧,你可以自己来试一下。回到A00,看第二个DLL的调用

5C30 0000 / 0000 0000 / 0000 0000 / 9930 0000 / 8430 0000

{OrignalFirstThunk} {TimeDateStamp} {ForwardChain} {Name} {First Thunk}

先找它的DLL文件名。9930翻转为3099-2600 =A99,在偏移A99处找到USER32.dll。再看FirstThunk字段值:8430翻转为3084-2600=A84,偏移A84处保存的地址为08310000,翻转后3108-2600=B08,偏移B08处字符串为MessageBoxA。明白了吧,接下来你就可以把这些用在你自己的EXE文件上了。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:压缩 脱壳 脱壳

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接