软件逆向破解入门系列(2)—静态分析利器IDA使用方法及爆破初探

本文先教大家IDA的重要技巧,在文章最后我们通过暴力破解一个CrackMe程序来巩固所学知识!

用IDA打开程序CrackMe.exe,下载链接如下:

CrackMe破解联系程序1-系统安全文档类资源-CSDN下载

这是一个32位的程序,直接用IDA x32打开,选项均默认即可:

待IDA分析完成后,我们开始介绍各个子窗口的用法:

一、IDA子窗口功能介绍:

1、反汇编窗口

中间红框框住的就是反汇编窗口,一种是图形模式,一种是文本模式,在窗口内右键可以切换:

 

2、Functions 函数窗口:

主窗口左侧为函数窗口,显示了程序中所有的函数,有的是系统API,有的则是程序自身实现的。支持搜索。

3、Imports 导入函数窗口

该窗口内的函数是该程序的导入表,也就是依赖于其他DLL导出,而本程序依赖的,比如各种系统API,此窗口很重要。

4、Exports 导出表函数窗口

 与导入表函数窗口对应,此窗口对应导出程序的导出表,对于exe而言,导出表只有一个start函数,而DLL可能就有很多导出函数了。

5、Names 全局函数窗口

 

 此窗口展示的是程序内部的全局函数

6、Strings 字符串窗口

 

此窗口中显示的字符串,是程序内部定义的各种字符串常量, 默认是ANSI编码,可以在切换成Unicode,但需要重启该窗口:

 确认后要重启Strings窗口。

二、C语言伪代码:

 在Names窗口随便点击一个函数,进入后按F5,即可生成C语言的伪代码,以辅助我们分析,很方便。

 其他窗口的函数也可以,但若程序不是C/C++写的,有可能无法生成伪代码,有时候即便是C/C++编写的也可能无法识别,这是正常的。

三、交叉引用

我们进入到Imports窗口,双机MessageBoxA函数,右键菜单,选择(List Cross Reference to),即枚举在程序用调用该API的代码段,此功能非常重要

 

 显然,在这个程序中只有一个地方调用了MessageBoxA,双机即可跳转过去。

四、用IDA逆向分析实战

本文重头戏来了,我们双机运行程序看看功能,

 点最左边的按钮

 要求输入名字和序列号,如果输入错误就会报错

 开始分析:

很明显,这是一个MessageBox弹窗,我们先从Imports导入表窗口入手,看MessageBoxA或MessageBoxW的调用:

根据函数名排序,我们发现有两个MessageBoxA函数,我们依次看一下该函数的交叉引用,先跟第一个:

这个函数是一个MessageBoxA的声明:

 我们再在该函数XREF上右键,查看交叉引用:

 

发现,此处代码并非我们想要的结果!

回到导入表窗口,我们跟进第二个MessageBoxA:

像上一步那样跟踪,我们发现确实有两处调用,但不能确定,故我们换一种方法。

我们这次用更简单粗暴的方法,我们可以看到这里有失败弹窗

 我们查看字符串窗口,发现有这个字符串:

 跟进并查看引用,发现有如下汇编代码:

 我们按F5查看伪代码:

经分析,我们把这段代码改成强制跳转,绕过报错:

选中本行汇编: 

 

 将jge改成jmp确定即可:

我们再F5查看一下伪代码:

 我们还需要处理if..else这个判断:

经分析,我们只需要将这个跳转指令改成空指令即可,然后可以直接达到暴力破解的效果:

 用上面修改汇编的方法,再来一次,jnz等同于两个nop指令,

 修改完成后是这样的:

看一下伪代码,确认一下:

OK,没有问题, 关掉我们启动的CrackMe程序,保存我们的修改:

此时,我们再运行一下CrackMe这个程序:

发现直接就成功啦!由于本次只使用静态分析工具,并未动静结合,然仍能搞定暴力破解,可见静态分析工具的厉害之处。

 对了,顺便提一下,在IDA中ESC键是返回上一步。

还有,本文已经破解了左边那个功能,右边的就交给你练手啦!

​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宇龍_

若帮助到你,希望能给予鼓励!

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

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

打赏作者

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

抵扣说明:

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

余额充值