1,概念与基础
逆向要求:
(1)把不带符号表的exe(debug && release版本)还原成高级代码;
(2)最初还原等价代码 ,终极目标还原相同源码(变量名可以不一样);
ida基础:
d:定义光标处的汇编为某数据;
c:定义光标处的汇编为代码;
a: 定义光标处的汇编为字符串
n:更改光标处变量名;
快速定位main函数:
主要是熟悉各个开发环境中的结构,一般来说,大部分是三个push后就是main;
ide编译选项:Debug,release:
vc6与vs2013:




2,逆向之四则运算:加减法
2.1,常量折叠与常量传播(在release版本下会出现)
所谓常量折叠就是,常量的运算在编译期间直接完成;
int a = 1+3;
折叠后直接:
int a =4;
常量传播就是,变量在引用之前没有被修改过,就可以直接替换;
int a = 2;
int b =3;
int c = a + b;
常量传播后:
int c = 2+ 3;
折叠后:
int c = 5;
2.2,逆向方法:
把ida的源码复制出来,一行

本文介绍了Windows逆向分析的基础,包括逆向要求、加减法和乘法的逆向方法。讲解了常量折叠、常量传播在不同编译模式下的表现,并详细探讨了乘法的四种常见情况:常量*常量、变量*常量(非2的n次方)、变量*常量(2的n次方)和变量*变量,总结了不同环境下乘法指令的优化策略。最后提到了流水线优化在release版本中的应用。
最低0.47元/天 解锁文章
719

被折叠的 条评论
为什么被折叠?



