看我如何让 360 把 helloword 干掉

其实这篇文章是讲讲最简单的花指令,这标题是写到后面发现 360 爆木马,所以有此题目。

开始之前

首先编写一个简单的 hello world 程序,并编译

花指令可以简单理解为欺骗杀软,给分析者增加障碍的指令,但是对程序的运行结果没有影响的指令,比如下面的(高级点的使 ida 反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向)

再比如:

有时候会在 jmp 的下一行插入一些干扰 ida 静态分析的字节,而 jmp 是刚好跳过这些垃圾字节的

实践

指导思想:我们使用 od 编写一些简单花指令放在程序比较靠后没有代码的地址上,之后跳回真正的入口点(当然我们要将程序的入口点修改为我们的代码的地址)

实践前我们先查下壳(其实这是 vs2015 编译的)

我们编写如下代码,当然你可以根据自己的需要写出自己的

之后我们通过计算可以知道我们的代码的相对偏移为 0x1C5A (这是针对我的程序,只要减去当前程序加载的基址就行了)

当然不要忘记复制到文件中了

最后我们修改程序的入口点(用 lordpe 比较方便)

【注:由于我 od 打开了这个文件,所以截图是 readonly 了,所以修改时记得关闭程序,之后你的保存按纽就会点亮】

当然你也可以自己通过工具找到偏移,再用 winhex 等 16 进制工具修改

我们看看程序能否正常运行

360 马上报毒……

通过这个实验,我们可以知道 360 会对程序的入口点的汇编代码进行检测,因为壳以及混淆过的代码都比较不正常,这也是检测病毒木马能杀错也不放过的一种方式

关闭 360 先,ok 成功运行

我们现在再来查查壳,peid 核心扫描是扫不出来的,因为它是基于 userdb.txt 里面的特征查找的,还是从入口点开始查找的

其实这个还是可以查到的,推荐个工具

后记

其实代码加花的初衷是想给人阅读和判断制造障碍,绕过杀软等,但是 360 宁可错杀也不放过 helloworld ……



发表评论

您的电子邮箱地址不会被公开。