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

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

 2007-01-12 20:11:51 来源:WEB开发网   
核心提示: 摘要:在PE文件头+80偏移处存放着输入表的地址,输入表包含了DLL被调用的每个函数的函数名和FirstThunk,压缩与脱壳-脱壳高级篇 上(4),通常还有Forward Chain和TimeStamp,当运行程序时系统调用GetProcAddress,鉴于这个问题十分特殊,而且比较复杂

摘要:

在PE文件头+80偏移处存放着输入表的地址,输入表包含了DLL被调用的每个函数的函数名和FirstThunk,通常还有Forward Chain和TimeStamp。

当运行程序时系统调用GetProcAddress,将函数名作为参数,换取真正的函数入口地址,并在内存中写入输入表。当你对一个程序脱壳时你可能注意到你有了一个已经初始化的FirstThunk。例如,在我的WIN98上,函数GetProcAddress的入口地址是AE6DF7BF,在98上,所有的KERNEL32.dll函数调用地址看上去地址都象:xxxxF7BF,如果你在输入表中看到这些,你可以利用orignal thunk重建它,或者重建这个PE程序。

好了,我已经告诉你它们是如何工作的,我不是专家,如果你发现什么错误,请告诉我。

2、Import表的重建

原著:TiTi/BLiZZARD

翻译:Sun Bird [CCG]

1. 前言

=======

大家好 :) 我之所以写这篇短文,是由于我在 Dump 时发现,很多加压、加密软件都使得输入表(Import Table)不可用,所以 Dump 出的可执行文件必须要重建输入表。而在普通的讲授 Win32 汇编的站点上我没有找到这样的介绍,所以如果你对此感兴趣,那么这篇短文对你会有些帮助。

例如,为了让从内存中 Dump 出的经 PETite v2.1 压缩过的可执行文件正常运行,必须重建输入表。(对于 ASPack、PEPack、PESentry……也同样)这就是所有 Dump 软件都具备重建输入表功能的原因(例如 G-RoM/UCF 制作的 Phoenix Engine(ProcDump 内含),

或者由 Virogen/PC 和我制作的 PE Rebuilder)。

鉴于这个问题十分特殊,而且比较复杂,所以我假定你已经了解了 PE 文件结构。(你需要阅读有关 PE 文件的文档)

2. 预备知识

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

Tags:压缩 脱壳 脱壳

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