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.新增代码执行后跳回入口地址

 

如果出现问题,可以用调试器检查哪里出错了。

posted @ 2020-12-12 13:10  Mz1  阅读(158)  评论(0编辑  收藏  举报