原文连接:http://hi.baidu.com/%BA%CE%B3%C9%B8%D5/blog/item/080ebd09b04d8e206b60fb21


MYCCL特征码定位器的详细使用
2008年02月09日 星期六 08:26
ab1edaf972a0d756252df2c8.jpg
看见不少朋友对 MYCCL 这款特征码定位器不会使用,所以今天就给大家做一下这方面
的教程。
以前我们定位特征码都是应用 CCL 这款软件,对于特征码免杀来说确实很方便,但是随着杀毒软件的技术更新,我们所生成***的特征码不再是单一的,而是多区多段,比如以前我们用 OD 可以一半一半法定位特征码,但是现在,你把所有区段都 NOP 了,也是查不出来特征码的,为什么呢?因为现在的杀毒软件都是把文件特征码和内存特征码混在一起,并且设定的特征码位置比以前多了很多,并不象以前只是把特征码定位在 CODE 里而且只有一个。 例如:
                PE 文件   节表信息   这个是黑防灰鸽子的客户端共有 8 个区段               
文件名 :D:Documents and SettingsAdministrator.BPLG 桌面 MYCLL( 定位内存组合包 )Server.exe
------------------------------------------------
节名称          起始位置          物理长度       
   CODE        00000400     000A1200    以前特征码多数在这个区段,并且只有一个
   DATA           000A1600       00002C00    现在的特征码有很多处。
   BSS           000A4200       00000000   
.idata         000A4200       00003400
   .tls             000A7600       00000000
rdata         000A7600       00000200
.reloc         000A7800       0000A400
   .rsrc         000B1C00      00008200
首先,我们要知道现在的杀软,以瑞星查杀内存是最厉害的,瑞星内存免杀能过的话,其他大多数杀毒软件的内存都基本能过的。所以今天我们就以瑞星杀软,对 MYCCL 进行讲解。修改特征代码免杀一般分为文件和内存二种,我们要先查找文件特征码进行免杀(表面免杀),然后才可以查找内存特征代码进行免杀。有的朋友错误的认为,给***加壳、加花、加密,这样文件(表面)免杀了,然后再用这个查找内存特征码,这样理解是错误的。
现在我们开始进行黑防灰鸽子的文件特征码定位查找:
首先我们要生成一个无壳的鸽子客户端,我已经生成好了。
打开 MYCCL 复合特征码定位器软件,把我们要查找的鸽子打开,带后缀不要选(这个在查找内存特征码时在选上)。目录,我在桌面已经建一个了,大家可以随便建一个。分块个数设置在 50—100 之间。单位长度和填充我们默认不写;开始位置我们写这里的:
区段           开始位置         分段长度
CODE        00000400        000A1200        95% 的特征码都是在这个区段里
正向(反向)都可以,无所谓。结束位置是自动的,我们不用管它。选复合定位,因为特征码不是一个,会有很多个,所以选复合定位。开始点生成。 2 次处理前,我们对生成的文件用瑞星进行查杀并删除。我们继续 2 次处理,用瑞星杀毒删除,直到查不出为止。
特征码   物理地址 / 物理长度   如下 :
[ 特征 00092E3D_00001DB3
[ 特征 ] 000969A3_00001DB3
[ 特征 ] 0009C2BC_00005919
这里一共有 3 大段,我们看其中一个,  00092E3D 这个是特征代码; 00001DB3 这个是此特征代码的偏移量,偏移量太大了,怎么办?我们继续。使它更精确一些。
选其中一个,复合定位此区间,它默认的分块个数太大,我们重新设置分块,我们设置 100 ,重复上面的步骤。
刚才的偏移量由 00001DB3 缩小到 0000004C 。但是它还是比较大,我们继续对它进行缩小定位,步骤和上面一样。我们看单位长度已经在 2 了,所以我们就不用进行分块设置了,这里大家也看到了,分块越大,单位长度越小,但是分块越多,我们生成的文件数也越多,生成的文件数太多的话,我们的电脑会受不了的   呵呵。我们所要的精确定位就是偏移量在 2 4 ,太大我们无法进行特征码的修改,下面我们继续把其他大的偏移量缩小,步骤是一样的。
[ 特征 ] 000969A3_00001DB3
[ 特征 ] 0009C2BC_00005919  这二个是大的偏移量,你们应该知道怎么精确的去定位了吧。
还有   要说明的是我们的分块个数是怎么设置的,大的文件(比如鸽子 700 k )一般设置在 100—200 之间,小的文件分块个数设置在 100 以内就可以了,二次处理的时候会出现分块个数是 100 多点(比如 114 ),单位长度是 2 ,这样我们就不需要在改回分块个数是 100 了,因为单位长度 2 或者是 4 ,正好是我们所需要的大小。
这是我定位好的了,一共有 9 处:
特征码   物理地址 / 物理长度   如下 :
[ 特征 ] 000949A7_00000002
[ 特征 ] 00094B3D_00000002
[ 特征 ] 000973E9_00000002
[ 特征 ] 0009CBBC_00000002
[ 特征 ] 0009F5A6_00000002
[ 特征 ] 000A0A46_00000002
[ 特征 ] 000A0DD2_00000002
[ 特征 ] 000A1250_00000002
[ 特征 ] 000A12A2_00000002
我们测试一下,看看是否正确。用 WinHex 进行修改,也可以用 UltraEdit 或者 C32Asm 都可以。我们找到特征码所在的位置,偏移量是 2 个字节,我们用 0 填充,为了节余时间,其他的你们填充吧。看到了,修改正确。教程到此,下次讲内存特征码的定位。