PE结构->【输入表】Import【上】

来源:互联网 发布:ps软件在线升级 编辑:程序博客网 时间:2024/06/07 14:16

使用工具:PEinfo.exe, hello.exe,UE

输入函数

在代码分析或编程中经常遇到“输入函数(Import Functions,也称导入函数)”的概念。
这里我们就来解释下,输入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于相关的DLL 文件中,在调用者程序中只保留相关的函数信息(如函数名、DLL 文件名等)就可以。

这里写图片描述

以上是咱这次实验的小青蛙哈~灰常简单的一个小程序,如图双击程序只显示一个对话窗口,然后就结束~试验用小程序,我们尽量的将内部的结构删减,调试起来才方便些。
我们这次体验的目的就是想靠所学的知识,试图来找到MessageBox 在内存中的地址。

注:MessageBox 是来自于USER32.DLL 动态链接库里的一个函数,我们通过对PE 文件的静态反编译分析来观察hello.exe 这个试验品是如何定位和调用MessageBox 这个在“异乡”的函数哈。

MessageBox 有两个版本,一个是MessageBoxA 还有一个是MessageBoxW 分别带便ASCII码形式和UNICODE~历史故事了~)

体验开始:
1. 我们用曾经号称为屠龙刀的W32DAM 对hello.exe进行反编译,如图:
这里写图片描述

我们可以看到这个程序只有两个导入模块(Import Module),分别导入来自两个动态链接库(USER32.DLL和KERNEL32.DLL)的若干函数。

我们还清晰可见,咱要跟踪的MessageBoxA 就在USER32.DLL 中,这里程序还自动给我们定位了它的虚拟地址:2A2DC,但我们不要用这个。

我们通过W32DASM 的查找功能找出MessageBox 这个函数代码的位置,并试图查看他的汇编跳转~

这里写图片描述
各位看官看到了吧?push xxxx push xxxx push xxxx push xxxx 之后再来一个Call xxxx ……

没错,这就是调用函数的一个标准形式。每个push 其实就是将所要调用的函数需要的参数入栈

int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType // style of message box );

由定义可见MessageBox 函数共有四个参数,因此我们四次push xxxx 分别将参数按照STDCALL 的方式入栈之后,就可以CALL MessageBox 这个函数了。

好,既然是CALL 我们的目标函数了,通过反汇编我们就可以观察到它的地址是:[0042A2AC],难道就这么简单?

那我们就直接把程序往下拉,试图找找这个 42A2AC 的地址吧~
可是…… ……

这里写图片描述

我们悲剧的发觉,程序压根还没到 42A2AC 这地方,到了421FF8 就结束了!!什么情况呢?
没错,这是一个VA 哈

需要根据VA换算成实际地址,42A2AC 落在了 .idata区块中,请看下图:

这里写图片描述

我们看到,咱的42A2AC 地址加载咱的2A000 和 2B000 之间(改程序VC编写,映像基地址为400000打头哦~),因此我们可以将该地址定位到改程序位于.idata 区块内。

该区块的VA 起始地址为42A000,因此42A2AC – 42A000 = 2AC,raw data offs 跟我们说该区块的物理地址是28000,因此42A2AC 这个VA 所对应的物理偏移地址就是 28000 + (2A2AC-2A000 )= 282AC

咱用UE 打开看下282AC 这偏移地址上有啥东西……

这里写图片描述

282AC 这个地址上存放着 DCA20200 这个数据,翻译成ASCII 码也是莫名其妙的说~

但我们把DCA20200 当成一个DWORD 类型的数据来读的话我们得到数据 0002A2DC(还记得大端与小端吧)

慢着,是不是很熟悉,又是2A****开头,跟咱之前的地址是不是差不多?
那好,我们又按照刚才的方法转化为偏移地址试试,转化后得到的偏移地址是:282DC,【计算方式:28000+(2a2dc-2a000)=282DC】,咱再看看282DC 里边有啥神秘的东西吧?

这里写图片描述

哈哈,看到奇迹了吗?从282DC 地址读起,ASCII 码对应的值是MessageBoxA.USER32.dll

但根本问题我们还是没能解决:MessageBox 的地址是?其实在这里我们还不能帮大家解决这个问题,因为我们缺乏对输入表的深入理解。
所以我们期待吧,下节课将揭开输入表的神秘面纱……

原创粉丝点击