-
-
[原创]软件保护壳专题 - 处理引出表
-
发表于:
2009-1-13 13:57
10895
-
这节与后面的给感染驱动都是新添加的章节,并且把第2部分的关于变形方面的章节合成为一节 "变形引擎的构建"。变形引擎可能要慢些。争取打造一份实用的东西出来。过了年在写,呵呵。这节主要讲解输出表的结构,输出表的HOOK,并实现了一个HOOK输出的小程序。
<目录>
1.什么是输出表
2.输出表的结构
3.输出表的HOOK
4.分析ExportHandler代码分析
<正文>
1.什么是输出表
用于定制一些函数,并提供给其他程序使用,建立一个函数与调用地址的映射。这种表一般存在与DLL文件当中。EXE文件中少有,不过不是不可以存在与EXE文件中。
2.输出表的结构
首先说明一下输出表的定位,输出表的目录存在于PE->可选头->数据目录的第一项中。可以通过此
目录获取输出表的RVA以及输出表的长度。通过RVA获取到它在文件中的偏移。读取偏移的第一个
结构为输出目录表,如下:
IMAGE_EXPORT_DIRECTORY STRUCT
;; 总是为0
Characteristics DWORD ?
;; 文件创建的时间
TimeDateStamp DWORD ?
;; 主版本号,一般为0
MajorVersion WORD ?
;; 次版本号,一般为0
MinorVersion WORD ?
;; DLL名称的RVA
nName DWORD ?
;; 序号基值, 一般为0
nBase DWORD ?
;; 输出函数的数量
NumberOfFunctions DWORD ?
;; 以名字输出的数量
NumberOfNames DWORD ?
;; 地址表的RVA
AddressOfFunctions DWORD ?
;; 名字表的RVA
AddressOfNames DWORD ?
;; 名字序号表的RVA
AddressOfNameOrdinals DWORD ?
IMAGE_EXPORT_DIRECTORY ENDS
// export handlder script
// 一个简单的配置脚本
// 新节属性
$section_size = 1024;
$section_name = logic;
$section_characteristics = W|R|X;
// 新函数
$hostname = 53 55 56 57 8B F9;
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!