一、文件特征码定位:
一般我们先用MyCCL把被查杀文件的文件特征码定位出来,然后用C32判断定位出来的这个特征码是代码还
是字符串,或者是输入表、输出表、版权信息等…定位在不同的地方,就要用不同的方法来进行源码免杀。
如果特征码定位木马服务端的代码里,那么我们就把这个木马用OD载入,然后把特征码旁边(前
面和后面)调用了的API函数记录下来,再到源码里搜索并找到源码特征码。或者用另外一种"Map定位法",
也就是在编译的时候生成一个map后缀的文件,然后把MyCCL定位出来的文件地址转换为内存地址,再到
map文件里找到这个内存地址对应的行数。但这个方法比起刚才的方法来说麻烦了点,所以就不具体介绍了。
二、源码特征码修改:
把特征码前后调用了的API函数复制出来,然后到源码里搜索这个API函数,在它附近(一般加在前面)加花就
可以了。或者你也可以修改代码,把原来的代码改成能达到同样目的的代码。
如果你不想定位的话,那也可以随便给源码加花,也就是说不特意的去定位特征码,而是随便选一个地方
加花。除非字符串或者输入表函数被杀,不定位加花的方法几乎可以不用定位特征码而达到免杀的目的。
三、示例:
Example.cpp,把这个文件编译出来,然后我们来看看改变代码后编译出来的文件有什么变化
从这个例子中我们可以学到以下几点:
1.交换代码位置
2.代码的合并和分离
3.根据MyCCL定位出来的特征码找出对应的源码特征码位置
4.代码加花指令
5.函数调用交换
源码花指令:
__asm
{
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
}