话说,样本真操蛋~到处是花~~那个下载体Alg.exe我就不逆了~
逆完在VMWARE测试发现很多bug,很多bug啊~
修改,修改去把bootloader改的bug不多了~,PmVirus里肉眼可见的也改了不少了~但是还是开机卡住~不过从IDA里看没问题~纠结有boot调试环境的人来再改改吧~
开源,发代码,是我的习惯~有实力改改做坏事的人请自己淡定~
加个参考资料链接
http://blog.csdn.net/gaa_ra/article/details/6589324
http://blog.csdn.net/gaa_ra/article/details/6593860
http://blog.csdn.net/gaa_ra/article/details/6594815
0.这是个对样本的逆向整理的版本,不要当作真的病毒,只包编译通过,其中去掉了原始鬼影样本中加密解密部分!!!!!
1.编译环境需要:
MASM32v10
WINDOWS 2003 sp1 IFS DDK
VS 2010 sp1
WinSDK 7.0A
2.编译方法:
a.按F7生成解决方案
b.到bin目录执行 makebin.bat
c.选中MakeVirusContent点重新生成
d.到bin目录执行 cmd.bat 然后在命令行下输入 MakeVirusContent.exe 需要命令行参数!!将你的下载者打包进VirusContent
e.选中ShadowGhost3点重新生成
f.bin目录里的shadowGhost3.exe就是最后的毒了!
3.编译环境目录:
Masm32v10 请安装在D:\
Windows 2003 sp1 ifs ddk用默认路径安装于C:\盘
4.有关卡机卡住的bug的说明
a.ProtectModeVirus的pmVirus.asm代码里可能有些问题,可能是bootloader.asm修改其中代码发生了问题
目录:
│ ShadowGhost3.sln
│ ShadowGhost3.vssscc
│ 说明.txt
│
├─bin
│ │ Bin2Hex.exe
│ │ bootload.bin
│ │ bootload.h
│ │ bootload.obj
│ │ cmd.bat
│ │ Driver.h
│ │ Driver.sys
│ │ makebin.bat
│ │ MakeVirusContent.exe
│ │ makeVirusHead.bat
│ │ obj2bin.exe
│ │ PmVirus.bin
│ │ PmVirus.h
│ │ PmVirus.obj
│ │ ShadowGhost3.exe
│ │ VirusContent.bin
│ │ VirusContent.h
│ │
│ └─i386
│ Bin2Hex.exe
│ Driver.sys
│
├─Bin2Hex
│ Bin2Hex.cpp
│ Bin2Hex.vcxproj
│ Bin2Hex.vcxproj.filters
│ Bin2Hex.vcxproj.user
│ Bin2Hex.vcxproj.vspscc
│ buildfre_wnet_x86.log
│ ddkbuild.bat
│ ddkbuild.cmd
│ MAKEFILE
│ mybuild.bat
│ readme.txt
│ SOURCES
│
├─MakeVirusContent
│ MakeVirusContent.cpp
│ MakeVirusContent.vcxproj
│ MakeVirusContent.vcxproj.filters
│ MakeVirusContent.vcxproj.user
│ MakeVirusContent.vcxproj.vspscc
│ ReadMe.txt
│ stdafx.cpp
│ stdafx.h
│ targetver.h
│
├─obj2bin
│ obj2bin.cpp
│ obj2bin.vcxproj
│ obj2bin.vcxproj.filters
│ obj2bin.vcxproj.user
│ obj2bin.vcxproj.vspscc
│ ReadMe.txt
│ stdafx.cpp
│ stdafx.h
│ targetver.h
│
├─ProtectModeVirus
│ make.bat
│ PmVirus.asm
│ ProtectModeVirus.vcxproj
│ ProtectModeVirus.vcxproj.filters
│ ProtectModeVirus.vcxproj.user
│ ProtectModeVirus.vcxproj.vspscc
│ readme.txt
│
├─ShadowGhost3
│ drvss.cpp
│ drvss.h
│ ntdll.h
│ ntdll.lib
│ ReadMe.txt
│ ShadowGhost3.cpp
│ ShadowGhost3.vcxproj
│ ShadowGhost3.vcxproj.filters
│ ShadowGhost3.vcxproj.user
│ ShadowGhost3.vcxproj.vspscc
│ stdafx.cpp
│ stdafx.h
│ targetver.h
│
├─Sys
│ │ buildfre_wnet_x86.log
│ │ ddkbuild.bat
│ │ ddkbuild.cmd
│ │ Main.c
│ │ MAKEFILE
│ │ mybuild.bat
│ │ ntifs_48.h
│ │ readme.txt
│ │ SOURCES
│ │ stdafx.h
│ │ Sys.vcxproj
│ │ Sys.vcxproj.filters
│ │ Sys.vcxproj.user
│ │ Sys.vcxproj.vspscc
│ │ zwfunc.h
│ │
│ ├─Debug
│ │ Sys.log
│ │
│ ├─driver
│ │ └─i386
│ │ Driver.pdb
│ │ Driver.sys
│ │
│ ├─objfre_wnet_x86
│ │ │ _objects.mac
│ │ │
│ │ └─i386
│ │ main.obj
│ │
│ └─Release
│ Sys.log
│
└─VirusMBR
│ bootload.asm
│ make.bat
│ readme.txt
│ VirusMBR.vcxproj
│ VirusMBR.vcxproj.filters
│ VirusMBR.vcxproj.user
│ VirusMBR.vcxproj.vspscc
│
├─Debug
│ VirusMBR.log
│
└─Release
VirusMBR.log
看附件吧~~
无聊了~感冒了,心情不好看这个样本然后结合各种东西,逆来逆去 花了3天时间各种调bug~然后不想再弄下去了,所性放了~
感冒好了,不准备搞TDL4逆向包编译通过鸟,忙着干别的,四处求donate~
TDL的MBR部分很简单就是把ldr16 Load进来,然后把控制权交给ldr16~
然后ldr16会hook int13,然后通过hook判断Mz头pe头(根据MZ和PE头的一些数据判断版本号和系统x64与否)来实现文件替换(其实kdcom在硬盘上是连续存放的,用ldr32/ldr64来替换)和签名绕过
巧妙的地方是修改绕过签名的/mini启动模式参数修改~
然后ldr32/ldr64会弄出对应drv32/drv64到内核~
好了说完了,基本上TDL就是这么个功能~
至于真正有趣的地方是丫的drv部分实现了HiddenPartDisk在Win下挂接自己的硬盘对象和自定义的文件系统HiddenFSIoCreateDevice这个函数用的很好强大~
- 标 题:逆向整理包编译通过版鬼影3.0代码~
- 作 者:cvcvxk
- 时 间:2011-08-18 09:26:37
- 链 接:http://bbs.pediy.com/showthread.php?t=138978