RelocAlloc:使用 .reloc 节替换典型的分配调用
代码说明:
- 首先,我们定位映射到我们进程中的所有 dll 的地址。
- 然后我们构造一个结构体数组,并用一些数据填充它,这就是 Initialize() 函数。
- 现在,我们有了一个完整的数组,下一步是搜索正确的地址。
- 调用 GetSuitableAddress(SIZE_T ShellcodeSize) 就能完成这项工作;它会为我们找到合适的代码洞(内存中的空位置,大小适合 shellcode)。
- 如果找到,它将被返回。
- 要使用它,我们必须调整内存保护为可写/可执行……(poc 直接就是 rwx)
演示:
img1
img2
注意:这仅适用于较小的 shellcode,因为它依赖于所映射的 dll,.reloc 节越大,获得有效地址的机会就越大。此外,这仅在 x64 机器上测试过,但它应该也能在 x86 上工作(我想 :p)
# 敬请期待更多内容
120064592-a5c83480-c075-11eb-89c1-78732ecaf8d3