5句代码共19个字节,与未修改时的一样。由于OD不能直接打开SYS,所以我们用UltraEdit打开PcHide.SYS,直接修改十六进制数据。修改完后保存,再用KV检测。怎么样,文件免杀成功。
下面是非常关键的一步,修改文件的校验和(CheckSum)。这一步也许是众多网友修改后的驱动无法加载的原因。用PeInfo打开sys文件,点击CheckSum,程序自动计算出结果,再点修改就可以了。那么驱动的文件特征码改完了,内存的需不需要改呢?我们来试一下:用驱动加载程序将PcHide.sys加载到内存中,用KV进行内存检测。加载工具用InstDvr(
www.rootkit.com/vault/hoglund/InstDvr.zip),运行时输入sys文件全路径,先是Install安装,然后Start开始执行。若显示Operation was successful,表示操作成功。用KV检测,呵呵,检测不到,这样就避免了我们修改内存特征码的麻烦。(没试之前我还真犯愁,CCL暂不具备定位驱动文件内存特征码的功能,这下可以偷懒了,不用再写代码!)
PcClient.dll、PcKey.dll与PcInit.exe的文件特征码修改。PS共包括四个关键文件,除了那个SYS处就是这三个。既然不是驱动程序,修改起来真是得心应手。过程就不多说了,只详细说一下改PcClient.dll的,其它直接给出结果,中间的注意事项会提出来。PcClient第一次定位设置:手动,生成100个文件,范围为整个文件。定位结果为:
0001 00000000 0000028E 0000028E
0002 00002B6E 00000147 00002CB5
0003 000036ED 00000147 00003834
0004 00007D2E 000002D2 00008000
注意,手动检测如果能剩余多个文件不被杀(文件头被覆盖的除外,比如0001项),说明该文件既使有多处特征码,也只需修改一处既可免杀。看结果,范围较大,我们将定位精度调高,再检测一次。将CCL设置为:手动,替换精度16字节,范围为00002B6E开始处0x147个字节(既选取了0002项),再次定位结果就一项:
0001 00002C3E 00000070 00002CAE
为什么我们将精度设为16,结果的范围却这么大,为70。这说明该特征码本身范围较大,任意改动一小处既可搞定。OK,都不用IDA出手,直接用OD打开PcClient.dll,来到10002C3E处,有如下代码:
…
.text:10002C41 mov edi, [esp+lpServiceName]
.text:10002C45 mov esi, eax
…
.text:10002C81 mov edi, [esp+lpDisplayName]
.text:10002C85 mov esi, eax
…
好爽,最简单的方法,交换顺序既可。保存后再用KV检测,免杀again!下面是其余两个文件的修改,这时我没用手动,而用了自动定位,检测范围就是text段,给出结果先。PcKey.dll这样修改:
.text:10001191 mov esi, eax
.text:10001193 test esi, esi
.text:10001195 jz short loc_100011F7
.text:10001197 mov ecx, 0FFh
.text:1000119C xor eax, eax
.text:1000119E lea edi, [esp+608h+var_400+1]
将test esi,esi换为or esi,esi既可。(晕死,改了一个字节就搞定,服了KV!)PcInit.exe共修改两处,一处是
.text:004016AE stosd
.text:004016AF stosb
第二处是
.text:004017CE test eax, eax
怎么改不用我说了吧。交换顺序,test变or。再检测,成功。到这里,三个文件的文件特征码全部修改成功。这里说一下上文提到的CCL定位结果排列组合功能,比如在定位PcKey.dll时,自动定位结果为:
0001 00001180 00000070 000011F0
0002 00001790 00000020 000017B0
0003 000017C0 00000010 000017D0
0004 000017E0 00000010 000017F0
精度已经够小了,可四处结果先改哪一处好呢。这时就可以用CCL的该功能:打开PcKey.dll,导入刚才的定位结果,然后点生成。如图4所示。在output文件夹里生成了一些文件名为R_X_XXXXXX的文件。用KV对output文件夹扫描,完后删除报警的文件(这里一个也没有删除),再点击检测钮,CCL会给出如下结果:
只修改一处特征码时,仅需修改
第 1 处
或 第 2 处
或 第 3 处
或 第 4 处
同时修改两处特征码时,可以修改
第 1 处 和 第 2 处
或 第 1 处 和 第 3 处
或 第 1 处 和 第 4 处
或 第 2 处 和 第 3 处
或 第 2 处 和 第 4 处
或 第 3 处 和 第 4 处
同时修改三处特征码时,可以修改
第 1 处 、第 2 处 和 第 3 处
或 第 1 处 、第 2 处 和 第 4 处
或 第 1 处 、第 3 处 和 第 4 处
或 第 2 处 、第 3 处 和 第 4 处
这说明只需任意修改一处既可。爽吧,不用一个个去试了!