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
浙公网安备 33010602011771号