逆向调试入门-PE结构-输入表输出表05/07
source link: https://blog.51cto.com/apple0/5433088
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
逆向调试入门-PE结构-输入表输出表05/07
原创输入函数,表示被程序调用但是它的代码不在程序代码中的,而在dll中的函数。对于这些函数,磁盘上的可执行文件只是保留相关的函数信息,如函数名,dll文件名等。在程序运行前,程序是没有保存这些函数在内存中的地址。当程序运行起来时,windows加载器会把相关的dll装入内存,并且将输入函数的指令与函数真在内存中正的地址联系起来。输入表(导入表)就是用来保存这些函数的信息的。
_ANONYMOUS_UNION union { //00h
DWORD Characteristics;
DWORD OriginalFirstThunk;
} DUMMYUNIONNAME;
DWORD TimeDateStamp; //04h
DWORD ForwarderChain; //08h
DWORD Name; //0Ch
DWORD FirstThunk; //10h
} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
union {
DWORD ForwarderString;
DWORD Function;
DWORD Ordinal;
DWORD AddressOfData;
} u1;
} IMAGE_THUNK_DATA32,*PIMAGE_THUNK_DATA32;
两个结构体的作用是一样的,都是为了方便寻找DLL的函数。
IMT是文件在磁盘中的指向的位置
IAT是文件加载进内存后指向的位置
我们使用Stud_PE进行查看
程序hello的作用紧紧是弹出一个对话框
由此我们判断使用了MessagesBox
使用该工具打开程序副本
在文件头部,可以查看出来了输入表的信息
我们打开“在16进制位编辑器中视图文件头树”
我们查看数据的目录
可以看到文件中的输入表位置
有两个数组,两个函数,因为是8个字节
在282acH中
下面我们使用OD进行实例分析
我们准备一个hello文件
该程序的功能只是弹出一个对话框。
我们使用OD软件调试程序
在call函数中发现问题
发现了MessageBoxA
在高地址位发现messageBoxtimeoutA
那就可以知道,前面的一段都是这个函数的内容了。
导出表的结构较为简单。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK