代码混淆技术是一种用于阻碍逆向工程分析人员解析程序代码的指令处理技术
0x1 字符串变换
在逆向工程中字符串经常会起到路标的作用,一些编程人员会着手解决这个问题,会采用一些变换手法,让他人不能直接通过IDA或者16进制编辑器直接搜索到字符串。
0x2 可执行代码
在正常执行的指令序列中插入一些虽然可以被执行的但是没有任何作用的指令,本身就是一种代码混淆技术。
- 插入垃圾代码
- 多个指令组合代替原来的一个指令
mov op1,op2 —–> push op2,pop op1
- 始终执行或者从来不会执行的代码
在跳转下添加代码,这样的代码会永远被跳过,但是可以混淆静态汇编工具。
另一种是不会改变核心寄存器,然后就增加他们之间的信息传递来混淆分析人员。
- 把指令序列搞乱
通过跳转指令将原本有顺序的指令变成无顺序的指令,但是程序还可以正常执行。
- 使用间接指针