第一种方法:搜索特征字符串

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

2024-12-31T08:44:52.png

第二种方法:搜索关键API

首先按下快捷键CTRL+S打开段选择对话框,双击第1个CODE段跳转到数据起始段,然后点击菜单项“Search→text”,或者按下快捷键 ALT+T,打开文本搜索对话框,在String旁边的文本框中输入要搜索的API名称后点击OK按钮,稍等片刻就会定位到搜索结果。如果API被调用多次,可以按下快捷键CTRL+T来搜索下一项。

第三种方法:通过方法名判断方法功能

打开Exports选项,查看方法名进行粗略判断

在 Exports 选项卡页面上输入 Main,代码会自动定位到以 Main 开头的所在的行

2025-01-14T05:49:27.png

实战案例:破解crackme0502

把classes.dex用idapro打开

打开exports选项,输入main,定位到如上图所在的地方

点击第二个onclick函数,找到关键的if-eqz分支

2025-01-14T05:56:31.png

虽然不知道这堆乱码字符串分别是什么,但通过最后调用的Toast 来看,直接修改 if-eqz即可将程序破解。将鼠标定位到指令“if-eqzv2,loc 2DODC”所在行,然后点击IDAPro主界面的“Hex View-A”选项卡,可看到这条指令所在的文件偏移为0x2DOBE,相应的字节码为“38020f00”,通过前面的学习,我们知道只需将if-eqz的 OpCode 值 38 改成 if-nez的 OpCode 值 39 即可。说干说干,使用 C32asm 打开 classes.dex 文件,将 0x2DOBE 的 38改为 39,然后保存退出。接着将dex 文件进行Hash 修复后导入apk 文件,对 apk重新签名后安装测试发现程序已经破解成功了。

2025-01-14T06:09:28.png

笔记出处

  • 《android软件安全与逆向分析》

《Android软件安全与逆向分析》pdf书下载

公众号(破晓一代网络)回复:Android软件安全与逆向分析

发表评论