好就没看过pe了,做几个简单的实验复习一下pe知识,今天来实现一下空白姐添加代码,实现弹出Messagebox。
注意:
1.本文作为复习原理所用,仅实现了最简单的添加代码,并没有写入shellcode,算的地址也仅在本机有效。
2.若发现地址rva在调试时,对应不上,可尝试关闭aslr解决
PE文件之空白节添加代码
如何弹出MessageBox
首先我们先要看,如何实现一个MessageBox弹窗。
如果想要调用messagebox,可以看到下面的代码,就是push 参数,call函数地址。
空白区添加代码
实现原理
修改程序入口(OEP),跳转到我们写代码的空白区,然后执行我们的代码,最后在跳回到原oep跳转地址。
听起来很像hook。
实现步骤
1.寻找OEP所对应的文件偏移位置
2在文件中修改OEP的指向,指向我们的空白区
3.空白区添加我们的代码
4.跳回原oep指向的地址
1.寻找OEP所对应的文件偏移位置.
我们要修改OEP指向的话,那么首先就要找到OEP所在的位置
第一种方法:通过rva和va计算
首先随便找一个exe文件,查看扩展头中OEP RVA 以及 ImageBase, 并且换算出属于哪个节.并且转换为文件偏移。