丁同亚的博客
夺朱非正色

1.首先获取 代码节内存中的实际大小,文件中的对齐后大小

00 02 10 F0   内存中尺寸
10 00         内存对齐后起始位置
00 02 20 00   文件大小(对齐后)
10 00         文件对齐后起始位置

文件大小(对齐后) > 内存中尺寸 可以添加代码(小于的话意味着不存在空白区)

 

2.计算添加代码的位置

 内存中的位置 = 内存中的尺寸+节内存偏移

 将内存中的位置换算成文件位置

(如果节文件偏移和内存偏移一样那么代码添加位置,内存和文件一致)

220F0

 

3.添加代码 如下(调用messageBox的代码)

6A 00 6A 00 6A 00 6A 00 E8 XX XX XX XX E9 XX XX XX XX

E8 后跟的是下一行指令和要调用的指令的距离

比如messageBox的地址 77 9B E9 C9

E8 下一行指令的地址 220fd

E8后跟的值 = 77 9B E9 C9 - 220fd - 40 00 00(ImageBase)

E9后跟的地址

执行完call之后要跳回原来的程序入口

解析PE得到原来的程序入口 14d0

E9 后跟的值 = 14d0 - 22102 =  FFFD F3CE

修改原来程序入口的值为 220F0 

 

posted on 2025-03-04 19:56  丁同亚的博客  阅读(10)  评论(0)    收藏  举报