pszDllFile定义为LPCSTR,但当TCHAR用了
pszDllFile传入的是什么编码格式?

解决方案 »

  1.   

    EnableDebugPriv(); 为提升权限
    void EnableDebugPriv()
    {
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
    LookupPrivilegeValue(NULL, SE_DEBUG_NAME,&tkp.Privileges[0].Luid);
    tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
    CloseHandle( hToken );
    }
      

  2.   

    做过断点,卡在 CreateRemoteThread 这一步就之后就让被注入程序崩溃掉了,而且检测 xp下 pszRemoteBuf 参数正常,在win7跟踪显示 “错误的指针地址”,跟这个有关?
      

  3.   


    也是用ANSI方式编译的吧?
      

  4.   


    是的是的,整个项目ANSI编译环境
      

  5.   

    问题是编译出的程序,在xp下注入进程成功,但是在win7注入进程失败,导致被注入进程崩溃
      

  6.   

    win7,vs2010,刚测试了代码,注入记事本,正常
      

  7.   


    是用你的代码测试全部都导致崩溃么?一种可能是被注入进程导入表没有LoadLibraryA函数,而用了LoadLibraryW,或两者都没有
      

  8.   

    求加好友,我只针对我某一个非系统程序的进程,你说 可能没有 LoadLibraryA 或者 LoadLibraryW,我对此单一测试测试哈
      

  9.   


    现在我只做:lpThreadFun = (PTHREAD_START_ROUTINE)::GetProcAddress(::GetModuleHandle(_T("Kernel32")), "LoadLibraryW");居然发现程序不崩溃了,但是貌似后续工作也没成功
      

  10.   

    所以,貌似只能走 
    LoadLibraryA
      

  11.   


    pszDllFile用了Unicode格式没?
      

  12.   

    没有,整个函数 ,只走了 LoadLibraryA
    pszDllFile一直是 LPCSTR
    倒是pszRemoteBuf是 TCHAR的,就是我一开始发的代码
      

  13.   

    说不定你的dll不能在windows7正常工作
      

  14.   

    多字符集的编码环境,非unicode下的·
      

  15.   

    调试一下算了。用vc挂载要注入的进程。
    把你Dll的源码拉到vc里面。断点Dllmain开始即可。
    dll要调试版的的啊。
    然后执行你那个注入的程序。
    不出意外。就断了下来。看看在DllMain出来什么问题。如果进不了DllMain就崩溃。那就是DLL有问题。或者是LoadLibrary有问题。独自写个工程在win7加载这个dll试试。
      

  16.   

    LoadLibraryA 只能走它,W的话,不能进行后续工作~
      

  17.   

    win7下权限问题无疑,编译的时候设置一下就好了
    连接器->清单文件->UAC执行级别:选择requireAdministrator 就OK了
      

  18.   

    楼主,我也遇到过你的问题,我把动态链接库用VC6编译一下就好了,估计你的dll是VS编译的
      

  19.   


    试了 ,用vc6编译,问题依然,xp下可顺利进行,win7注入的时候,会将被注入进程挂掉
      

  20.   

    还有一点是,我的动态链接库里面的函数全部是动态获取的,不能有全局变量。运行dllmain的时候可能会出现你需要的动态链接库宿主进程没有加载。
      

  21.   

    你直接编译一个空的dll工程,看看能不能注入,如果能就是你程序的问题,如果不能就是编译器的问题,用VC6
      

  22.   

    WIN7什么版本 ?之前我就碰到过,后来调试时发现原来是我的DLL不支持WIN7 64位~~关于WIN7远程线程注入确实有点麻烦,你可以参考一下这篇文章!
    Win7 CreateRemoteThread 另类使用方法
      

  23.   

    建议你生成一下MAP,在OD里调试一下看看~~