优势
完整实操步骤
○ 每个节表占40字节;节表不能覆盖后面第一个节的原始数据
○ Name:自定义节名,最多 8 字节

○ VirtualSize:节内存实际大小

○ VirtualAddress (RVA): 读.reloc的 VirtualAddress+VirtualSize 再对齐:0x0ABAC0 + 0x0EF7C8 = 0x19B288 ,向上对齐0x1000 → 新节 VirtualAddress = 0x19C000

○ SizeOfRawData:磁盘大小,向上对齐FileAlignment(0x200)

○ PointerToRawData:读.reloc的PointerToRawData+SizeOfRawData0x0A7EC0 + 0x0EF800 = 0x1976C0,向上对齐FileAlignment(0x200) → 新节PointerToRawData = 0x197800

○ 重定位、行号全部填 0
○ Characteristics:设置权限,shellcode 需要0x60000040(可读 + 可写 + 可执行)

修改IMAGE_FILE_HEADER → NumberOfSections:节数量 + 1
改为10 00
计算新镜像总大小:新节RVA + VirtualSize,向上对齐SectionAlignment(0x1000),写入SizeOfImage
新节 RVA=0x19C000,VirtualSize=0x1000
0x19C000+0x1000 =0x19D000
在磁盘文件PointerToRawData偏移处,追加对应大小的 00,写入 shellcode
修改入口点(OEP),JMP 跳转到新节 shellcode,执行完再跳回原 OEP
运行测试,保证原程序功能正常
三种技术对比
| 洞穴注入 | 不改节表,改动最小 | 空间有限,容易破坏原有数据 | 小段 shellcode |
| 扩大最后一节 | 不用新增节表 | 只能操作最后一节,容易破坏资源节 | 中等长度代码 |
| 新增节 | 完全独立,不污染原有节 | 改动项多,步骤繁琐 | 大段 shellcode,shellcode 开发 |
网硕互联帮助中心



评论前必须登录!
注册