第一种方法:搜索特征字符串
首先按下快捷键CTRLS+S
打开段选择对话框,双击STRINGS
段跳转到字符串段,然后点击菜单项“Search→text”,或者按下快捷键ALT+T
,打开文本搜索对话框,在String旁边的文本框中输入要搜索的字符串后点击OK按钮,稍等片刻就会定位到搜索结果。
第二种方法:搜索关键API
首先按下快捷键CTRL+S
打开段选择对话框,双击第1个CODE段跳转到数据起始段,然后点击菜单项“Search→text”,或者按下快捷键 ALT+T,打开文本搜索对话框,在String旁边的文本框中输入要搜索的API名称后点击OK按钮,稍等片刻就会定位到搜索结果。如果API被调用多次,可以按下快捷键CTRL+T来搜索下一项。
第三种方法:通过方法名判断方法功能
打开Exports
选项,查看方法名进行粗略判断
在 Exports 选项卡页面上输入 Main,代码会自动定位到以 Main 开头的所在的行
实战案例:破解crackme0502
把classes.dex用idapro打开
打开exports
选项,输入main,定位到如上图所在的地方
点击第二个onclick
函数,找到关键的if-eqz
分支
虽然不知道这堆乱码字符串分别是什么,但通过最后调用的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重新签名后安装测试发现程序已经破解成功了。
笔记出处
- 《android软件安全与逆向分析》
《Android软件安全与逆向分析》pdf书下载
公众号(破晓一代网络)回复:Android软件安全与逆向分析