PE文件结构 | 在PE文件的空白区添加代码
初探shellcode~
主要思路:
0.构造要写入的代码:
例:MessageBox:
(push 00)*4 = 6a00
call MessageBox(通过要跳转的地址-E8这行指令的地址-5):
相对跳转
E8 xx xx xx xx
jmp 回到正常的执行流程:
同上也是相对跳转
E9 xx xx xx xx
硬编码:
6a00
6a00
6a00
6a00
e800000000
e900000000
一共18个bytes
1.在PE的空白区构造一段代码:
通常写在哪儿都行
目前的跳转目标是在自己的机器上能运行
所以直接查MessageBox在user32.dll中的地址
M地址-在内存中的地址(ImageBase+偏移)-5
找扩展pe头中的AddressOfEntryPoint,计算怎么跳回去,计算方法跟上面差不多。
2.修改入口地址为新增代码:
修改AddressOfEntryPoint指向shellcode
3.新增代码执行后跳回入口地址
如果出现问题,可以用调试器检查哪里出错了。
本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/14124352.html
如果有问题可以在下方评论或者email:mzi_mzi@163.com