注意事项1

在编写dll部分时,为了方便执行dll,我写了一个程序快速执行dll

HMODULE dllname = LoadLibraryA("dll.dll");
if (!dllname) {
printf("dllname don't exitsts!\n");
return 0;
}
ReflectiveLoaderFunc myfuc = (ReflectiveLoaderFunc)GetProcAddress(dllname, "ReflectiveLoader");
myfuc();

然而这样的程序在反射式dll处理重定位表时会出大问题: • 通过 LoadLibrary 加载的DLL已被系统修改(重定位+导入表处理),.reloc 节可能被丢弃或擦写。

及其重要的一点是不要提前返回,因为反射式注入的dll代码无法及时调试,所以一定要勤用反汇编软件查看内存分配,或在注入器代码中内嵌调试语句。