感谢Freedom师傅
小结
如果制作一个VM虚拟机,那么我们至少要为程序准备一个寄存器和栈进行数值的传递,为程序要输出的字符串准备一个缓冲区BUFFER
常见设计
1.初始化分配模拟寄存器空间
2.初始化分配模拟栈空间
3.初始化分配模拟数据存储空间 : data段
4.初始化分配OPCODE(机器指令)空间 : text段
常见运行流程:
1.输入OPCODE
2.分析转化为伪汇编指令,逐条执行
各种复杂算法的作用:将机器码转化伪汇编指令,本质:相当于一条汇编指令
常用的算法gadget:
a1 & 0xf:最低一位字节
HIBYTE(a1):最高一位字节
通杀方法
核心是逆向出伪汇编指令,摸清每个指令的含义
常见漏洞:读写越界引发的漏洞