IDA PRO 实践02 - 静态逆向分析入门

一般来说,逆向分析并不是对那些庞大的程序进行完整的逆向,只是分析特定位置的一个或几个函数。

首先从静态分析 CRUEHEAD’s CRACKME 这个程序开始。

程序加载

打开菜单上的 VIEW-OPEN SUBVIEW-SEGMENTS,可以看到已经自动加载的程序区块。

HEADER段是没有加载的,IDA仅仅自动加载了一些可执行的区段。想要加载HEADER段需要手动加载。

在区段的名称(NAME)一列后面,是区段起始(START)和终点(END)的地址。RWX 这一列显示初始状态下这个区段是否有读 READ(R)、写 WRITE(W)以及执行 EXECUTION(X)权限。

后面的 D 和 L 两列分别对应于 DEBUGGER(调试器)和 LOADER(加载器)。

第一列(D)为空,只有程序在调试模式时才会填充已经加载的区段。L 这一列显示了加载器创建的区段。其他列的内容不是那么重要。

在这个例子里面,加载 HEADER 区段也不是那么有意义。依然介绍一下如何加载 HEADER 段。

重新加载 CRACKME.exe 程序。

选择手动加载(MANUAL LOAD),点击 OK。

按照程序提示,输入加载的基址:

在Windows操作系统中,程序的加载基址通常取决于程序的位数和其他因素。

  1. 32位程序:默认的加载基址通常是0x00400000。这个地址是Windows为32位应用程序预留的空间。

  2. 64位程序:64位应用程序的默认加载基址是0x0000000140000000。这个地址是Windows为64位应用程序预留的空间。

不过,实际加载基址可能会因为地址空间随机化(ASLR)等安全机制而有所不同。系统可能会在运行时选择不同的地址来加载程序,以提高安全性

在接下来弹出的每一个对话框上点击 OK 加载所有区段:

完成之后,可以看到:

通常这是操作不必要的,有时候考虑进来会更好。

切到反汇编视图,跳转到 0x400000 位置,也就是程序起始位置:

HEADER:00400000                               ;
HEADER:00400000                               ; +-------------------------------------------------------------------------+
HEADER:00400000                               ; |      This file was generated by The Interactive Disassembler (IDA)      |
HEADER:00400000                               ; |           Copyright (c) 2022 Hex-Rays, <support@hex-rays.com>           |
HEADER:00400000                               ; +-------------------------------------------------------------------------+
HEADER:00400000                               ;
HEADER:00400000                               ; Input SHA256 : 0C7CDFDB6D4C8876E9C5BAE906FCF1CBF174F019EF45D518954885856501A0BE
HEADER:00400000                               ; Input MD5    : 66F573036F8B99863D75743EFF84F15D
HEADER:00400000                               ; Input CRC32  : 503D64C9
HEADER:00400000
HEADER:00400000                     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二手的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值