逆向之路(一) 代码节空白区添加代码
这是人生中第一篇博客,记录逆向之路的开始,以便多年后能看到自己的成长,希望那时可以成为一个让自己看得起的人。好了废话不多说,开始正文。
代码节空白区添加代码,以添加MessageBox为例:
1..获取MessageBox地址,构造shellcode代码:OD->bp MessageBoxA->break断点有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。
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保存。
打开被改软件,弹出MessageBox,确定后程序正常运行
这里有个问题是messagebox关闭后ipmsg无法继续运行,我检查了OEP也没有改错,望大佬指正。