You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅注入作弊DLL失效,需同时注入依赖DLL,求排查VS设置问题

问题描述

我出于学习目的使用digital-sdk源码,之前只注入作弊DLL就能正常运行。但修改Visual Studio设置并把源码复制到其他文件夹后,单独注入作弊DLL不再生效,必须同时注入编译生成的所有DLL才能正常工作。试了其他注入器也没用,怀疑是项目/Visual Studio设置出问题,其他项目运行正常。

相关代码
DWORD WINAPI HackThread(HMODULE hModule)
{
    AllocConsole();
    FILE* f;
    freopen_s(&f, "CONOUT$", "w", stdout);

//My Stuff bla bla..

while (!GetAsyncKeyState(VK_END) & 1)
    {
        Sleep(20);
    }
    if (f) fclose(f);
    FreeConsole();
    FreeLibraryAndExitThread(hModule, 0);
    return 0;
}


BOOL APIENTRY DllMain( HMODULE hmodule,
                       DWORD reason_for_call,
                       LPVOID reserved
) {
    if ( reason_for_call != DLL_PROCESS_ATTACH )
        return FALSE;

    DisableThreadLibraryCalls( hmodule );

    std::thread( instance ).detach( );

    return TRUE;
}
排查方向
  • 依赖项链接方式变更:检查项目属性中C/C++ -> 代码生成 -> 运行库,看是否从静态链接的/MT改成了动态链接的/MD;再看链接器 -> 输入 -> 附加依赖项,确认是否新增了需要动态加载的外部库。如果是动态链接,作弊DLL运行时必须依赖这些额外DLL才能加载。
  • 输出目录与依赖路径问题:复制源码后,编译生成的依赖DLL可能没和作弊DLL在同一目录。Windows加载DLL时会按固定路径查找依赖,若依赖DLL不在进程当前目录、系统目录等位置,就会加载失败。可以把所有生成的DLL放到同一目录再尝试注入,或者检查生成事件 -> 后期生成事件里的复制脚本,确认路径是否因源码迁移失效。
  • 项目引用配置失效:如果作弊DLL项目引用了digital-sdk的其他子项目,复制后引用路径可能错误。进入项目 -> 引用,确认引用的项目路径正确,且引用属性里的复制本地设为True,确保编译时依赖DLL会被复制到输出目录。
  • 线程启动代码错误:注意到DllMain里启动的是std::thread( instance ).detach(),但你的线程函数是HackThread,函数名不匹配。这会导致DLL加载后根本没启动预期的线程,看起来像是“无效”。应该改成std::thread(HackThread, hmodule).detach(),先修正这个代码错误再测试。

内容的提问来源于stack exchange,提问作者Pandorax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:42:28