能力值:
( LV4,RANK:50 )
|
-
-
2 楼
要知道这个,首先需要了解PE中导出表结构 typedef struct _IMAGE_EXPORT_DIRECTORY {
DWORD Characteristics; // 标志, 未用
DWORD TimeDateStamp; // 时间戳
WORD MajorVersion; // 未用
WORD MinorVersion; // 未用
DWORD Name; // 指向该导出表的文件名字符串
DWORD Base; // 导出函数的起始值
DWORD NumberOfFunctions; // 所有的导出函数个数
DWORD NumberOfNames; // 以函数名导出的函数的个数
DWORD AddressOfFunctions; // 导出函数地址表RVA(RVA from base of image)
DWORD AddressOfNames; // 函数名称地址表RVA(RVA from base of image)
DWORD AddressOfNameOrdinals; // 函数序号地址表 (RVA from base of image)
} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; 通过函数名查找函数地址: 1、先确定send在哪个动态链接库中 2、加载动态链接库并确定导出表地址 3、AddressOfNames 字段里边存放着函数名地址,用函数名send与里边的函数名去匹配,找到后会确定一个该函数名地址的索引index1 4、再查看AddressOfNameOrdinals 字段中index1处存放的值假设为index2 5、AddressOfFunctions 字段中index2处存放的地址就是send的地址。 前几天刚学了导出表,不知道这样回答对不对?
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
RichardE
要知道这个,首先需要了解PE中导出表结构typedef struct _IMAGE_EXPORT_DIRECTORY {
& ...
不应该是导入表么?
|
能力值:
( LV9,RANK:175 )
|
-
-
4 楼
好像是加载程序的时候,OD会解析PE导入表相关数据保存在内存的表中,加载模块的时候也是。BP时就直接在自己的内存里面查就行了。用到了reftable,或者是调用Expression(sod),查找到对应label地址。 bp不仅可以下函数名也可以下标签名,不需要加载dll,不需要读对方内存。 如果是要知道PE的找function知识那百度查一下就有了。
|
|
|