花指令
花指令指的是没有作用,会干扰代码阅读甚至反编译,却不影响程序功能的代码。
{
现代反汇编器有两种思路:
- 线性扫描
从开头到结尾依次读取机器码并进行反汇编 - 递归下降(ida)
从程序入口向后反汇编,遇到条件跳转则分别从分支的地方继续反汇编,无条件跳转则尝试从目的指令继续反汇编
}
今天学习了会干扰反汇编、影响机器码解析但不影响正常机器码的类型
例如构建一定成功的跳转(jz+jnz)(xor+jz)
去花的方法是把无用的地方改为0x90即nop
然后进行函数的删除和再构造
再进行f5 就能正常的分析伪码了
常见的花指令
{
jx + jnx
call + pop
call + add esp, 4
call + add [esp], x + retn
stx + jx
}
ida去花首先应该尝试建立函数
然后找到ida报错的地方
把不需要的指令nop掉
再建立
不行就再nop
然后尝试f5
找到报错
nop
循环,就完成了手工去花
MFC
属实没太听懂。
今天学到的是
如果是dos里的程序,寻找scanf( )函数再进行分析即可找到所需的地址然后进行分析
如果是小窗口,可以进行点击的那种,则需要寻找关于点击的函数然后再进行分析寻找
逆向技巧
1.字符串搜索
–通过消息处理函数中的字符串来寻找切入点
2.API下断
–通过消息处理函数中的API,例如MessageBox、GetWindowText等来3.寻找切入点
–使用xspy、spy++等工具
----xspy是一个通过注入dll到目标进程,然后利用MFC特性来获取相关数据的自动化工具,非常方便
常见算法