特征码免杀就是修改病毒文件的内容,从而躲过杀毒软件根据特征码的查杀。
特征码免杀要根据杀毒软件定位到的病毒的特征码来进行有针对性的修改,如果胡乱修改,有可能造成病毒体遭到破坏,失去原有的作用。
常用的特征码修改的方法有(1)16进制差1 (2)大小写切换 (3)相同命令替换 (4)特征码移位 (5)通用跳转等。
16进制差1,大小写切换就不说了。相同命令替换就是将原有的汇编命令替换为功能相同的其他的命令。特征码移位就是将这处特征码移到别的地方或者将相邻两个命令替换,然后可能还要通过工具修改文件,来定位到这个特征码。通用跳转通过 jmp 命令来实现跳转,通常是改变入口点时用到,或者是在特征码的地方用 jmp 跳到别的地方,然后再跳回来(在 OD 中修改完成后,然后右键选择复制到可执行文件,所有修改,最后保存文件)。
修改入口点时有 入口点加1和 入口点移位。入口点加1就是用 LordPE 来将他的入口点加上 1 。入口点移位就是将它的入口点的前几句话移到别的地方(零区域),然后通过 jmp 跳到原有的地方继续执行,最后通过 LordPE 修改为新的入口点。
可以用 Restorator 来增加病毒的版本、数字签名,躲过一些杀毒软件的查杀。
修改相关的输入表。输入表是病毒调用的一些系统函数(dll),方法有函数指针移位,函数指针换位,重建输入表, 加空格法、NOP, 修改OriginalFirstThunk、日期时间标志、ForwarderChain ,输入表加密等。函数指针移位、函数指针换位就不说了。重建输入表就是删去原来的输入表,然后重建一个输入表。还可在LordPE中修改OriginalFirstThunk、日期时间标志、ForwarderChain等。可以用一些输入表加密工具将输入表加密。
ASCII相关免杀(函数ASCII字符),有ASCII字符串手工移位,ASCII字符串手工填充和替换,ASCII码内存动态恢复,ASCII码XOR加密、解密。ASCII字符串手工移位要注意移位后在 LordPE 中修改函数的地址。ASCII字符串手工填充和替换就是替换两个 ASCII 字符串的位置,同样要注意修改地址。ASCII码内存动态恢复就是将原有的字符删除,然后再程序运行中将字符写入原有地址处,可以用 dword 一次写入四个字节,word一次写入两个字节。动态恢复时可以用jmp跳转到恢复字符的区域,再跳回来,也可以用call来跳转。ASCII码XOR加密、解密用两次xor来恢复原有字符。
添加花指令。有直接加花,去头加花,加区加花,SEH异常结合花指令,加壳加花等。直接加花就是直接将花指令写入程序,设置为入口点。去头加花就是将原入口点的前几句话移到别的地方。添加上花指令,然后再跳回原来的地方执行。加区加花就是用一个加区工具给文件新加上一个区段,然后再这个区段中写入我们的花指令。
还有各种加壳,加上壳之后根据壳的特性在改一下,还可以再加上另一个壳。套多重壳时要注意壳的兼容性是不是能加,加壳的顺序不同时结果也可能不同。