-
-
[求助]CreateFileWImplementation和CreateFileW的关系?
-
2019-10-24 14:09
3465
-
[求助]CreateFileWImplementation和CreateFileW的关系?
Dada直接看【实例分析】一节上方
windbg查看PE信息
配置符号文件
配置环境变量:
name: _NT_SYMBOL_PATH
value: SRV*c:\mysymbol* http://msdl.microsoft.com/download/symbols
查看PE信息
加载符号文件之后,等待下载完毕,然后重载文件。
查看PE的IMAGE字段
dt ntdll!*IMAGE*
之后会显示出,所有的IMAGE
字段
PE文件首先是IMAGE_DOS_HEADER
结构体,所以可以查看该结构体的各项值
dt ntdll!_IMAGE_DOS_HEADER 00400000
有一些字段显示不对,例如e_lfanew
字段,可根据偏移查看该字段值
dd 00400000+3c
查看IMAGE_NT_HEADERS
结构体,e_lfanew
为该结构体偏移
dt ntdll!_IMAGE_NT_HEADERS 00400000+e0
根据该方法,继续查看IMAGE_OPTIONAL_HEADER
结构体
dt ntdll!_IMAGE_OPTIONAL_HEADER 00400000+e0+18
相比上面那样查看PE信息,下面这样更加方便,但是不准确
!dh 00400000
查看IMAGE_DATA_DIRECTORY
数组,共16个,每个占8字节,第一个代表输出表,第二个代表输入表,以输入表为例
dt ntdll!_IMAGE_DATA_DIRECTORY 00400000+e0+18+60+8
dd 00400000+9718
查看导入的模块名称
db 00400000+9a90 lc
查看所有导入函数名字表HNT
dd 00400000+979c
看第一个函数名字
db 00400000+9974 l10
有了模块名,有了函数名,可以直接查看函数反汇编代码
uf kernel32!CreateFileW
# 或
u kernel32!CreateFileW l10
搜索kernel32中CreateFile开头的函数
x kernel32!CreateFile*
回头再去找IAT
dd 00400000+900c
本来觉得IAT
和HNT
之间是一一对应的,然后观察IAT地址和之前搜索到的函数地址比较,发现并不是CreateFileW
,而是CreateFileWimplementation
。
u 7dd73f5c
经过观察CreateFileA
,并没有Implementation
后缀的函数,带Implementation
和不带它的函数内容也是不一样的。这里不太清楚为什么。
实例分析
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法