1:当然是设计复杂的算法;
2:花指令;
3:SMC;
4:反断点;
5:信息隐藏;
通过隐藏显示的字符串提示,防止爆破和;最简单的方法是将字符串加密后存放;
6:多态和变形;
7:文件完整性校验;
8:检验和;
PE文件头中提供的检验方式;
9:内存映像检验;
可以对搞变量断点,如int 3
必要的时候只要检验关键代码段即可;
反跟踪:
反跟踪主要是对抗动态调试器和监测软件;
10:通过进程PEB结构中的BeingDebugged来判断当前进程是否处于调试状态;
注:hook掉所有的检测debug的API函数,这个方法就完了!
11:标志寄存器的第8位称为陷阱标志trap flag。如果该位设置,则CPU运行于单步模式。CPU将在每条指令后产生一个debug异常。当debug 异常产生后,陷阱标志自动清除。
反逆向:
12:删除二进制文件的符号信息;
13:代码混淆,在保持程序功能的情况下,改变程序的逻辑布局等;从而降低程序的可读性;
这里的技术非常多,足够一本厚书来介绍;
14:导入函数采用序号;