给软件添加代码

一. 代码节空白区域添加代码

1. 根据SizeOfRawData - VirtualAddress的值来判断剩余空间是否足以添加代码

2. 根据SizeOfRawData + PointerToRawData来到空余部分

3. 将汇编指令转为硬编码:此处添加的代码是MessageBox,可以通过OD(走下角命令 bp MessageBoxA)来查看MessageBox的地址。

6a 00 6a 00 6a 00 6a 00 e8 00 00 00 00 e9 00 00 00 00

push 6a
call   e8
jmp  e9

目标地址 = 下一行地址(运行时的地址) + 硬编码(命令后的地址)

call :761a1060 - (01caad + 400000) = 75D8 45B3
000193BE + 400000 = 4193be 目标地址 (EIP地址 + ImageBase)
41cab2 下一行地址
jmp :FFFF C90C‬ 硬编码

4. 改EIP

此时不用加上ImageBase

 

二. 任意节空白区添加代码

注意:在DOS后面是不可以直接作为程序入口添加硬编码的。

其他内容基本同上。

 

三. 增加节

需要修改的数据

1. 添加一个新的节(可以copy一份)

2. 在新增节后面 填充一个节大小的000

3. 修改PE头中节的数量

4. 修改sizeOfImage的大小

5. 再原有数据的最后,新增一个节的数据(内存对齐的整数倍).

6. 修正新增节表的属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值