虚拟代码还原与优化方法研究.pptx

第六章虚拟代码还原练习3.还原中的优化还原方法

待优化的目标代码:目标代码1.真实指令到1级虚拟指令优化2.1级虚拟指令到2级虚拟指令还原。3.2级虚拟指令的优化。

1级虚拟指令是由混淆的真实指令实现。有混淆的情况下,对我们识别1级虚拟指令增加了很多难度。去除该混淆的方法思路:优化方法真实指令到1级虚拟指令1.去除无用指令。(指不影响上下文的指令)2.去除重复赋值。(连续多条指令对同一个寄存器赋值)

例子1去除无用指令去掉jmp、test、cmp、标志位指令。1级虚拟指令popdreg

例子1去除重复赋值指令去掉解析虚拟寄存器索引前给索引赋值的指令。

1级虚拟指令到2级虚拟指令的还原,在基于虚拟栈平衡的基础上,还需用到一些优化还原方法:还原方法1级虚拟指令到2级虚拟指令1.常量合并。(常量由多个常量运算得到)2.逻辑运算化简优化

例子2合并常量合并常量运算2级虚拟指令movdreg[28],5c

例子3逻辑运算化简优化逻辑运算化简

2级虚拟指令等价于原指令,但是在虚拟化时,在原指令的基础上先进行了混淆,再虚拟化,所以我们还要进行2级虚拟指令的优化,使用到的优化方法:优化方法2级虚拟指令的优化1.去除无用指令。(指不影响上下文的指令)2.去除重复赋值。(连续多条指令对同一个寄存器赋值)

例子4去除无用指令去除无用指令movwreg[1c],wreg[1c]cmpdreg[2

文档评论(0)

1亿VIP精品文档

相关文档