从零开始IDA-crackme分析
9unk Lv5

目标程序

程序下载:CRACKME

解压密码:9unk

任务目标:通过 IDA 学习分析程序并进行打补丁

分析步骤

  1. 自动加载分析程序

打开 Programe Segmentation 窗口显示程序的段列表

4.jpg

5.jpg

一个程序的应该是从 0x400000 的 Header 区块开始,但是这里并没有显示加载 Header 区块,这是因为 IDA 在加载程序的过程中,它只加载除了 header 区块以外的可执行部分。

Programe Segmentation 窗口(需要关注的列)

1
2
3
4
5
6
7
8
9
NAME:各区块的名称
Start:各区块起始地址
End:各区块的结束地址
R(Read):可读
W(Write):可写
X(Execution):可执行
D(Debugger):调试模式(此时程序不在调试模式,所以值为空)
L(Loader):加载模式
其它的列为各个区段寄存器默认值
  1. 手动加载程序

手动定位基地址

1.jpg

确认代码区域的基地址是否在 0x401000,选择 “yes”。后面全都默认选择 yes

2.jpg

3.jpg

6.jpg

再次进入Programe Segmentation 窗口可以看到所有的区块(这些操作都不是必要的,但还是需要了解一下)

7.jpg

  1. 创建快照
    由于 IDA 不提供撤销功能,如果不小心按错了某个键,导致 IDA 数据库发生了改变,就得重新来过,所以要记得操作的时候创建快照。快捷键:Ctrl+Shift+W(可根据情况设置快照描述信息)

8.jpg

  1. 管理快照
    当我们需要恢复、重命名、删除快照时可使用管理快照的功能。快捷键:Ctrl+Shft+T

9.jpg

  1. 程序分析
    查看程序的关键信息

10.jpg

打开 String 窗口,搜索字符串

11.jpg

12.jpg

双击,在 0x402169 定位到关键信息的位置

13.jpg

在该地址上按 D,将字符串转化成十六进制数据。

14.jpg

在该地址按 A,将十六进制数据恢复成字符串

15.jpg

左击该地址或者标号并按下 X,查看程序在哪边调用了这个错误字符串。

16.jpg

从上面看这个字符串被两个函数调用。一个是 sub_401362 和 sub_40137E。第一列的描述信息是 “UP” 说明这两个函数的位置在该地址之前。

我们双击第一个函数,查看这个函数的代码

17.jpg

18.jpg

可以看到这是一个调用 MessageBox API弹出错误消息框的函数

我们用快捷键 “N”,将这个函数重命名为 “CALL_ERROR”

19.jpg

20.jpg

我们继续按 X,看看这个错误函数在哪里被调用了

21.jpg

按 “空格” 进入图形模式,查看此时程序的运行逻辑

22.jpg

23.jpg

可以看到,运行错误就会执行 CALL_ERROR 函数,正确就会执行 loc_40124C 这个函数

我们先修改 CALL_ERROR 函数的背景颜色,这样使分析更加快速方便

24.jpg

25.jpg

我们继续分析 loc_40124C 中的 sub_40134D 函数

26.jpg

27.jpg

从上图中可以看到这是一个正确的消息弹窗,我们继续修改函数名称为 CALL_GOOD

28.jpg

双击 WndProc 函数,回到原来的视图,并把正确的函数做好背景标记

29.jpg

我们继续看一下上一个函数的 JZ 跳转指令

30.jpg

我们左击到 JZ 跳转指令处,使用快捷键 Ctrl+Alt+K(打补丁功能) 把 JZ 指令,修改成 JNZ 指令。

31.jpg

32.jpg

最后对打补丁后的程序进行保存

33.jpg

34.jpg

我们输入任意用户名和密码,可以看到程序已经打补丁成功

35.jpg

后面我们还需要修补另一个报错信息

36.jpg

37.jpg

38.jpg

我们经过一些分析,可以看到这是判断输入的用户名是否有数字,如果有数字就会跳转报错。

39.jpg

42.jpg

40.jpg

41.jpg

我们这里将 JB 指令,改成空指令 NOP,来忽略这个跳转。

43.jpg

44.jpg

45.jpg

最后再对程序打补丁,验证。

46.jpg

47.jpg

reference

翻译自:8-REVERSING WITH IDA PRO FROM SCRATCH [Ricardo Narvaja]

  • 本文标题:从零开始IDA-crackme分析
  • 本文作者:9unk
  • 创建时间:2021-02-24 18:26:28
  • 本文链接:https://9unkk.github.io/2021/02/24/cong-ling-kai-shi-ida-crackme-fen-xi/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!