Closed 793359277 closed 1 month ago
多谢指出问题。有没有可以复现的example? 调用哪个dll的哪个函数, 我测试一下。
多谢指出问题。有没有可以复现的example? 调用哪个dll的哪个函数, 我测试一下。
就普通的32位DLL, 只要是序号导出的都会报错
// dllmain.cpp : 定义 DLL 应用程序的入口点。
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: MessageBoxA(NULL, "DLL_PROCESS_ATTACH", "DLL", MB_ICONASTERISK); htons((USHORT)0x1234); case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
内存加载DLL的话, 改这里就行, 绑区段那种方式就得改g_membindiat_code32了
我修复了这个bug, 重新生成了shellcode, 理论上应该可以了
我修复了这个bug, 重新生成了shellcode, 理论上应该可以了
测试正常了, 非常感谢!
作者您好, 我这边测试将DLL附加到区段, 64位EXE没有问题, 但是32DLL附加32EXE虽然写出成功, 但运行会崩溃, x32dbg调试看堆栈发现是在调用GetProcAddress时, 参数2 序号不正常导致的
0019FF08 77130000 ws2_32.77130000 0019FF0C 8040B076 //这不是序号的格式, 也不是可访问的函数名字符串地址
用studyPE查看导入表中的WS2_32: IAT ThunkFoa ThunkVal Hint Function Name 0004C420 0005EE78 80000074 - 00000074
序号应该是0x74 调试器中手动将8040B076改为0x74, 运行正常, g_membindiat_code32该更新了
还有这里判断最高位写错了, 应该判断_addr winpe_membindiat