特别说明:
本软件谢绝任何支持或使用3721(及及该公司其他产品如雅虎助手等)的人士使用。
-----------------------------------------
multiCCL
by niu-cow in NE365
开发调试环境及工具 :
win2k+sp4
dev-cpp 4.992
Lcc_win32
MASM32 v9.0
Radasm
ollydbg 1.10
winHex 12.5
包含文档:
1. multiCCL_f.exe 文件特征码专用版
2. multiCCL_m.exe 内存特征码专用版
3. multiCCL_mm.exe 内存特征码加强版(此版不必特别设保护区域)
4. multiCCL_inj.exe 注入代码块内存定位专用版
5. bin\memtest.exe 用作内存定位时加载dll或运行exe或向目标进程注入的辅助程序
6. bin\multiLoader.exe 和 bin\multiLoader_mm.exe
加载管理器,方便内存定位时的加载卸载,提高内存定位的效率
7. bin\PeLdr.exe 和 bin\PeLdr_mm.exe 供multiLoader调用的加载器
(有“_mm”的供内存定位加强版调用)
8. AutoStartScanDll.dll 自动操作模块,使得部分操作自动化
9. multiCCL_readme.txt 本说明文档,兼作开发日志,包括更新历史。
10. multiCCL原理图示.htm 基本原理图示
11. bin\multiLoader.ini 和 bin\multiLoader_mm.ini
multiLoader的配置文件,内存定位时自动生成,不必管它
功能:
文件特征码定位功能 (对 PE文件 和 非PE文件)
内存特征码定位(对PE文件)
注入代码块内存定位(要先设法把注入的代码块dump下来)
因为现在杀毒软件针对特征码定位器设置了某些干扰,
最终决定把文件定位和内存定位做成独立的部分。
其实代码基本一样的,只为方便日后的维护和升级。
-----------------------------------
......重要提示......
开始定位之前,要把所有的病毒防火墙关掉,以免样本被意外地删除。
把.EXE等可能被双击执行的文件扩展名改为.EXX之类无意义的扩展名,
以免误运行。
......内存定位.重要提示.......
准备好用杀毒软件扫描内存
执行动作设置为“仅报告”或“提示用户操作”
只要杀毒软件报告检测结果就行了,不需要它删除或禁用什么
如果样本文件被杀毒软件禁用将导致定位失败!
使用内存定位加强版时,不要用杀毒软件去杀生成的文件,
也不要开实时监控,以免生成的文件被误删除。
(因为生成的文件与原样本几乎完全相同)
(另外,正在找有关驱动方面的资料)
------------------------------------
------------------------------------
原先用cmd界面只为测试方便,因为随时都可输出中间信息。
后来听 tankaiha 说CUI界面也不错,就干脆不写GUI界面了。
需要说明的问题是:
1. 开始定位一个样本时,如果发现样本目录中存在旧的记录文件,
程序会读取并认可 旧记录中的特征码。
如果想完全重新开始定位,应该先把旧的记录文件删除或改名,
之后再打开multiCCL 。
2. 输出目录里不要放置任何您想保留的文件,以免给您带来损失。
定位过程中将删除里面的一些文件。
最好是在某分区下建立个一级子目录专门用于定位时的输出。
3. 设置保护片段时,如果所保护的片段中包含独立的特征码,就会
导致定位失败,因为所生成的文件会全部被杀,而且一直如此。
所以在设置前,先要确认所保护的片段不是独立的特征码。
(定位过程中multiCCL也会自动检测的)
4. 适当降低定位过程中的精度,可排除某些杀毒软件(如nod32)的干扰。
5. 具体设置在定位过程中会有详细的说明和提示的。
; 要注意的是:
文件定位每次提醒杀毒时,一定要把识别出的文件全部删除,
否则程序会判断错误的。
内存定位则要根据杀毒软件扫描内存后的结果,把识别出的文件删除。
用内存加载管理器可以方便地进行这个操作。定位过程中它会在必要时自动打开。
注入代码的内存定位则要准确回答杀毒软件报告的扫描结果,
不需要删除文件。
=====================================================================
记录文件格式:
只要注意以下几个字段和键值就可以了:
[CharactorCodz]
;特征码总数
CharactorTotal=
;特征码的记录格式是:
; H_起始偏移_结束偏移_长度_……
;一般只要注意 起始偏移 结束偏移 就够了。记录的是文件偏移,
; 用十六进制表示
;特征码1
Codz1=
;特征码2
Codz2=
;……
;当OK=1时表示定位成功完成,ok=0表示定位没有完成
ok=
-----------
;文件定位的记录文件是: 文件名_multiCCL_f_Log.txt
;内存定位的记录文件是: 文件名_multiCCL_m_Log.txt
;内存定位加强版的记录文件: 文件名_multiCCL_mm_Log.txt
;注入代码块内存定位则是: 文件名_multiCCL_inj.txt
;都放在样本文件所在的目录下。
-----------
;看内存定位结果时,还有一个字段需要注意的:
[antiLocateCodz]
newCodz=1
OK=1
CharactorTotal=
Codz1=
Codz2=
……
;这是杀毒软件针对内存定位干扰码,( antiLocateCodz )
;定位不出内存特征码或修改内存特征码无效时,
;可以考虑修改入口点(修改代码或转移入口点),或试试修改干扰码。
;----------------------------
;另外也请看看更新记录,里面也有部分说明
;
; 同时也请帮助统计定位一个样本特征码所需的时间,大致记录下就行
; 结果请反馈到: http://vxer.cn/bbs/read.php?fid=9&tid=112&page=1
;-----------------------------------------------
;统计内容包括:
;--------
;基本信息: 哪种杀毒软件的XXX定位(病毒库版本XXXX)
;1 样本文件大小:
;2 总共定位出特征码片段的数量:
;3 总共需要杀毒软件扫描几次:
;4 定位总用时:
;5 定位结果评价: 基本可用/有较大偏差/很不可靠
;----------------------------------------------
;BTW: 本程序针对的目标是杀毒软件的复合特征码的定位,
当然也包括单一特征码了。
;免责声明:本程序只供学习,不得用于商业。本程序可能存在某些缺陷,
及其他可能隐含的问题,
使用中可能造成的一切后果,均由使用者自行负责。
如果您对此很在意则请勿使用。
;感谢您的测试,使用中请保留软件文档的完整,发现任何问题请到NE365的BBS上反馈。
;(借用一下NE365的空间 http://vxer.cn/bbs ,一并致谢NE365
;及各位网友的帮助和测试 ,大家多多支持NE365吧)
;
;特别说明:本软件谢绝任何支持或使用 3721 的人士使用。
niu-cow
2006-05-22
---------------------------------------------
大致上找到了特征码没完没了的原因了
在tanknight(myCCL的作者)的BLOG上看到NOD32定位的有关讨论,据说定位
精度太高时,对NOD32的定位往往失败。一般控制在8--16字节为宜。
依照这个原理增加了个控制定位精度的模块,重复的现象有所减少,但
问题好象还没有解决。2006-06-10 17:04 (v1.000)
------------
在实际测试中,又发现定位尾端的到逐字节推进时,NOD32有时会把生成的
文件全杀掉,这也是一种干扰定位。针对此现象修正了干扰码的判断和处理。
经实际测试基本解决了目前NOD32的干扰。2006-07-04 (v1.100)
(nod32的这种干扰相当有针对性,不知道算法上是如何实现的)
------------------------------------------------------------------
========================================================================================
------------------------------------------------------------------
更新历史:
v 1.205 (当前版本)
1. 增加了新的内存定位加强版,主文件名是multiCCL_mm.exe
原理是生成与原样本几乎完全一样的文件,
用加载器加载之后,再处理模块的内存,
这样就解决了之前版本的加载失败问题。
本版本可以定位位于输入表等关键区域的内存特征码了。
另外,由于加载器处理数据时要保留模块镜相的副本,这时占用较大的内存。
这部分内存在加载和处理完成后自动释放。
2. 发现并修正了一处在判断进一步处理时的潜在的逻辑错误。
3. 把加载器相关的文件全部放到bin子目录下。
2007-11-27
v 1.204
1、在执行自动定位时,自动禁用屏保、待机、休眠等系统自动动作。
仅在自动定位过程中起作用。
(但另外一些程序可能会激发这些动作,事先要设法避免)
2. 修正PE文件的RVA转OFFSET的一个BUG。
3. PE文件的内存定位的算法改为等分法,和文件定位一样了 。
4. 增加了加载管理程序multiLoader,提高内存定位的效率。
一些杀毒软件的实时监控在卸载时才报毒,这下也可处理了。
这个版本的内存定位可以对付位置在非关键部位的特征码。
关键部位指的是文件头、输入表、资源表等,这些部位被破坏