[置顶] 第5章 IDA Pro 破解实战

第5章 IDA Pro 破解实战

1、工具IDA Pro 6.6版本

 

1、定位关键码

 

1)      搜索特殊字符串

首先按下快捷键CTRL+S 打开段选择对话框,双击STRINGS段跳转到字符串段,然后按下ALT+T,打开文本搜索对话框,在String旁边的文本框输入要搜索的字符串后点击OK按钮,稍等片刻就会定位到搜索结果。

2)      搜索关键API

首先按下快捷键CTRL+S打开段选择对话框,双击第一个CODE段跳转到数据起始段,然后按下ALT+T,打开文本搜索对话框,在String旁边的文本框中输入要搜索的API名称后点击OK按钮,如果API被多次调用,按CTRL+T来搜索下一项。

3)      判断方法功能,这个办法比较笨拙,对于混淆过的代码,定位关键代码比较困难。

比如crackme0502.apk程序的主Activity类为MainActivity,于是在Exports(注意:中文版是导出表)选项卡页面上输入Main,代码会自动定位到Main开头所在行如下:

[置顶] 第5章 IDA Pro 破解实战_第1张图片

 

2 、破解crackme0502.apk包

1)     首先安装运行apk程序,运行后有两个按钮,点击获取注解,按钮会Toast弹出3条信息。在文本框中输入任何字符串后,点击“检测注册码”按钮,程序弹出注册码错误的提示信息。这里以按钮事件响应为突破口来查找关键代码。

2)     开启andriod虚拟机(注意:这里不介绍了前面的章节已经介绍过了)

3)     使用adb命令安装crackme0502.apk包

root@strom-virtual-machine:~/apktool#adb install crackme0502.apk

1357 KB/s (157657 bytes in 0.113s)

pkg: /data/local/tmp/crackme0502.apk

Success

 [置顶] 第5章 IDA Pro 破解实战_第2张图片

4)     通过IDA Pro工具查看反汇编代码

查找onClick() 方法

 [置顶] 第5章 IDA Pro 破解实战_第3张图片

5)     在IDA Pro反汇编中调用了MainActivity的getAnnotations()方法

[置顶] 第5章 IDA Pro 破解实战_第4张图片

注意:这样就知道了MainActivity$1.onClick()就是前面的按钮事件的响应代码。

6)     查看MainActivity$2.onClick()方法然后按下空格键如下:

 [置顶] 第5章 IDA Pro 破解实战_第5张图片

[置顶] 第5章 IDA Pro 破解实战_第6张图片

 

代码对应着if-qez v2 ,loc_2D0C6。(注意:左图上方的红色箭头表示不满足条件线路,右上方的绿色箭头表示满足条件线路)

7)     接着将鼠标选择loc_2D0C6位置,再次按下空格键这时IDA-游览器A会跳到选择loc_2D0C6位置。


注意:可以看到if-eqz对应的code0x2D0BE

[置顶] 第5章 IDA Pro 破解实战_第7张图片

根据前面所学的知识将“38 02 0F 00”改为“39 02 0F 00”通过C32asm工具进行修改,接着通过检验签名工具进行重新生成校验码。

 

8)     破解成功

 [置顶] 第5章 IDA Pro 破解实战_第8张图片

 

你可能感兴趣的:([置顶] 第5章 IDA Pro 破解实战)