逆向之路(一) 代码节空白区添加代码

这是人生中第一篇博客,记录逆向之路的开始,以便多年后能看到自己的成长,希望那时可以成为一个让自己看得起的人。好了废话不多说,开始正文。

代码节空白区添加代码,以添加MessageBox为例:
1..获取MessageBox地址,构造shellcode代码:OD->bp MessageBoxA->break断点
逆向之路(一) 代码节空白区添加代码_第1张图片
有user32.dll的程序有MessageBox

确定MessageBox的真正地址是768CCF50

通过VC6.0按alt+8进入反汇编中查看MessageBox(0,0,0,0)

(4次push 0, 1次call,1次jmp)

故要加程序为6A 00 6A 00 6A 00 6A 00 E8 00 00 00 00 E9 00 00 00 00

2.加入代码空白区,查看剩余空间是否够18个字节,若SizeOfRawData-VirtualSize>18则够加



3.文件偏移从PointerToRawData开始,从PointerToRawData+SizeOfRawData往前找空闲区,找到最上头一行开始更改代码:6A 00 6A 00 6A 00 6A 00 E8 00 00 00 00 E9 00 00 00 00。

逆向之路(一) 代码节空白区添加代码_第2张图片


4.计算E8文件偏移:真正在内存中运行地址:ImageBase+'E9'所在地址


ImageBase=400000 ,'E9'所在地址为450BD
400000+450BD=4450BD

x=MessageBox真正地址-真正在内存中运行地址
x=768CCF50-4450BD=76487E93

即E8 93 7E 48 76

5.计算E9文件偏移:真正地址=EntryPoint+ImageBase
y=真正地址-E9的下一条指令的地址

y=441EC+400000-450C2=3FF12A

即E9 2A F1 3F 00



6.修改OEP,从6A 00……所在行开始执行,记录所在行地址为新OEP;将原OEP(OP头中)改为新入口。ctrl+s保存。

逆向之路(一) 代码节空白区添加代码_第3张图片

打开被改软件,弹出MessageBox,确定后程序正常运行
逆向之路(一) 代码节空白区添加代码_第4张图片

这里有个问题是messagebox关闭后ipmsg无法继续运行,我检查了OEP也没有改错,望大佬指正。

                                                                                                              —————时二O一八年三月九日黄昏  by Snippers

你可能感兴趣的:(PE)