逆向分析主要有2个过程:
- 静态分析:查看段、字符串、函数,反汇编(看汇编程序),反编译(看c/c++程序)
- 动态调试
1. 工具
工具主要分以下几类:
- 系统监控工具:监控网络活动,文件访问,注册表访问等
- IDA Pro,强大的静态分析工具,方便查看汇编和反编译后的源码
- Ollydbg,动态调试器
- GDB,如果无法使用Ollydbg,在linux上使用GDB也是个不错的方式,尤其是开发板上
- Windbg,windows上的调试工具
- Win32Dasml,反编译工具,它可以将应用程序静态反编译为WIN 32汇编代码,用于静态分析
2. 开始
2.1 写一个简单的c++程序
#include <stdio.h>
int main(int argc, char **argv)
{
int a = 2;
if (argc > a)
{
printf("haha %d", a);
}
else
{
printf("heihei 2");
}
return 0;
}
编译:
g++ -o ida_test ./main.cpp
2.2 目标
- 修改a的值
- 修改输出的字符串
2.3 使用IDA打开编译后的文件
2.3.1 框图显示(Graph View)

2.3.2 文本显示(Text View)
在框图中点击右键,再点击 Text View显示文本。然后在 Options => Generas 设置 Number of opcode bytes 为 16。

2.3.3 显示文本二进制


2.3.4 逆向代码显示
在文本或框图显示界面下按F5,逆向代码

2.3.5 16进制显示

2.3.6 字符串窗口(Strings window)
Views => Open subviews => Strings

2.4 修改数值(text段)
-
选中要修改的汇编行,右键选择【Keypatch】=> Patcher


-
修改Assembly
-
点击Patch
-
保存文件
Edit = > Patch program => Apply patches to input file

2.5 修改字符串(rodata段)
在Strings window找到字符串,然后在Text View中定位到:

Edit => Patch Program => Change byte :

修改二进制值。
保存:
Edit => Patch Program => Apply patches to input file :



1307

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



