《Windows PE》5.3 导出表应用

本节我们将通过三个实验来说明导出表的应用。实验一修改导出表中的函数地址。实验二直接替换导出函数的代码。实验三导出私有函数

本节必须掌握的知识点:

        修改导出函数地址

        替换导出函数代码

        导出私有函数

5.3.1 修改导出函数地址

实验三十七:修改导出函数地址

修改winResult.dll导出结构中的函数地址。仅需要将导出函数调用的RVA地址交换位置,即可实现导出导出函数的覆盖。无需修改程序FirstWindow.exe,直接测试,发现显示窗口的动画效果发生了变化。

第一步:将winResult.dll拖入WinHex中,找到导出表,如下所示:

00001910   00 00 00 00 FF FF FF FF  00 00 00 00 60 25 00 00   ........`%..

00001920   01 00 00 00 04 00 00 00  04 00 00 00 38 25 00 00   ............8%..

00001930   48 25 00 00 58 25 00 00  F0 10 00 00 10 10 00 00   H%..X%..?......

00001940   C0 11 00 00 A0 12 00 00  6E 25 00 00 7B 25 00 00   ?..?..n%..{%..

00001950   87 25 00 00 92 25 00 00  00 00 01 00 02 00 03 00   ?..?..........

00001960   77 69 6E 52 65 73 75 6C  74 2E 64 6C 6C 00 41 6E   winResult.dll.An

00001970   69 6D 61 74 65 43 6C 6F  73 65 00 41 6E 69 6D 61   imateClose.Anima

00001980   74 65 4F 70 65 6E 00 46  61 64 65 49 6E 4F 70 65   teOpen.FadeInOpe

00001990   6E 00 46 61 64 65 4F 75  74 43 6C 6F 73 65 00 00   n.FadeOutClose..

第二步:交换导出函数AnimateOpen和FadeInOpen的RVA地址,如下所示:

00001930   48 25 00 00 58 25 00 00  F0 10 00 00 C0 11 00 00   H%..X%..?......

00001940   10 10 00 00 A0 12 00 00  6E 25 00 00 7B 25 00 00   ?..?..n%..{%..

第三步:保存后,直接运行FirstWindow.exe。

 

总结

在使用导出函数地址覆盖技术的时候,首先要保证所涉及的两个函数参数入口要一致,否则调用完成后栈不平衡,这会导致应用程序调用失败;其次,要求用户对两个函数的内部实现要有充分的了解,使得地址转向后,能够保证应用程序在功能上可以全面兼容并运行良好。

5.3.2 替换导出函数代码

实验三十八:替换导出函数代码

我们还是以winResult.dll为例。找到导出函数FadelnOpen的代码,然后将其替换为MessageBox,弹出一个对话框窗口。无需修改程序FirstWindow.exe。

第一步:将winResult.dll拖入OD调试器,打开内存映射窗口,找到winResult.dll模块,如图所示:

图5-7 内存映射窗口

       第二步:双击winResult.dll的.text节区,打开代码段,找到0x6D010000+0x000011C0地址处,即函数FadelnOpen的地址,如下所示:

6D0111C055              PUSH EBP

6D0111C1    8BEC            MOV EBP,ESP

6D0111C3    83EC 38         SUB ESP,0x38

6D0111C6    A1 0430016D     MOV EAX,DWORD PTR DS:[__security_cookie]

6D0111CB    33C5            XOR EAX,EBP

6D0111CD    8945 FC         MOV DWORD PTR SS:[EBP-0x4],EAX

6D0111D0&nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值