IDA Pro——CrackMe.exe调试

版本:IDA pro 6.1(看雪学院下载)

1.配置
1)菜单Option配置,只对当前项目有效
2)ida.cfg文件配置

2.主界面
IDA Pro——CrackMe.exe调试_第1张图片
蓝色代码段,棕色数据段,红色内核

窗口管理
IDA Pro——CrackMe.exe调试_第2张图片

名字窗口(Names window):
IDA Pro——CrackMe.exe调试_第3张图片
F:导入函数/自己写的函数
I:导入函数/自己写的
A:字符串
L:库函数
D:全局的命令代码

函数窗口
IDA Pro——CrackMe.exe调试_第4张图片
Sub子程序
loc地址
byte8位数据
word16位数据
dword双字数据
unk未知的

3.自定义结构体
IDA之所以在分析阶段无法识别结构体,可能源于两个原因。
第一种:了解结构体,但没有判断出程序使用了结构体。
第二种:不了解结构体,即程序中用的结构体是非标准结构体。

例如,对于自定义的Student结构体:

struct student
    { int id;
      char name[20];
      int age;
    };

方法一:手工建立结构
结构体管理面板–>Insert键–>输入结构体名称Student
加入数据(id、age等):选中Student ends那一行–>D 创建数据,默认名为field_0–>N 修改名字为id/age–>D 切换数据类型db、dw、dd。
加入ASCII字符(name等):A 创建数组
方法二:C头文件导入结构 Loadfile–>Parse C header file

定义好结构体后,找到对应的代码(必须选中所有结构体的代码),菜单Edit–>Struct var–>选择student,数据按照结构体显示
这里写图片描述

修改结构体的偏移量:选中所有要替换的代码–>菜单Edit–>Offset–>选择student自动修改
IDA Pro——CrackMe.exe调试_第5张图片

4.自定义枚举类型
打开枚举窗口–>insert添加枚举类型–>N 添加枚举成员(名字对应数字)–>选中对应代码中数字–>M

CrackMe.exe调试

IDA Pro——CrackMe.exe调试_第6张图片

1.找到“序列号不对,重新再试一次!”提示信息;
2.往前找cmp、test、je、jne等表示比较的指令;
3.找到关键代码
IDA Pro——CrackMe.exe调试_第7张图片
4.爆破:让004010C9一句不跳转(用OD、WinHex等修改文件)
方法一:把jne改成je即可,修改寄存器
方法二:改成空指令,即nop指令:jne2字节,用两个nop指令替代
5.找到正确序列号:
打开文件,跳到.data区块,发现数字即正确密码。

你可能感兴趣的:(逆向)