IDA Pro分析Android软件

本文转载自:http://www.52pojie.cn/thread-237886-1-1.html



IDA Pro: 被称为最强大的 Android静态分析工具


说明:本图文教程的方法及工具均分享自看雪移动区版主@非虫的原创图书《Android软件安全与逆向分析》#5.6.3#

          特为整理出来,新手教程 求高手指点啊O(∩_∩)O

========
使用IDA Pro定位关键代码的方法:
1、搜索特征字符串。具体操作为:①快捷键Ctrl+S,打开搜索类型选择对话框-->双击Strings,跳到字符串段-->菜单项“Search-->Text”;
                                                      ②快捷键Alt+T,打开文本搜索对话框,在String文本框中输入要搜索的字符串点击OK即可;


    
不过 目前IDA Pro对中文字符串的显示和搜索都不支持,需要编写相关的字符串处理插件来解决。
2、搜索关键的API。搜索方法与上面的是一样的。
Tips:
Android API(可供调用的系统接口)可以分为:可选API、Wi-Fi API、定位服务、多媒体API、图形API等;

3、通过方法名来判断方法的功能。这种方法比较笨拙 对于混淆过的代码,定位关键代码比较困难。下面的CrackMe就可以通过方法名来定位关键代码。

======== 
下面我们就以一个CrackMe为实例来演示IDA Pro分析Android的流程。
首先安装运行APK程序 可以看到主界面上有两个按钮,点击第一个按钮“获取注解” 会Toast弹出三条信息;点击第二个按钮“检测注册码
则会显示“注册码错误”。很显然 第一个按钮是混淆视听的。
Tips:
IDA Pro是直接分析Android程序的主体dex文件 所以需要将dex文件从原程序中分离出来 可以用RAR压缩解压缩软件直接将dex从apk中拉出来,修改修复以后再借助它压缩进去即可。


所以我们就可以按钮事件的响应为突破口来查找关键代码。
很容易知道该CrackMe.apk的主Activity类为MainActivity,于是在Exports选项卡页面上输入Main,代码会自动定位到以Main开头的所在行 其中
的方法也就一目了然了。
Tips:
一个Android程序是由一个或多个的Activity以及其他组件组成 每个Activity都是相同级别的,不同的Activity实现不同的功能。每个Activity都是Android程序的一个显示“页面” 主要负责数据的处理及展示工作。
每个Android程序有且仅有一个主Activity(隐藏程序除外) 它是程序启动的第一个Activity 通常标识为“android.intent.action.MAIN”.

     

通过图我们可以看到有两个名为OnClick()的方法 我们可以试试它们分别是对应哪一个。分别双击这两个代码行 会来到相应的反汇编代码(IDA View-A)处,
按下空格键切换到流程图。从而容易得出第二个OnClick()方法是关键 且可以看到代码的分水岭就是“if-eqz v2,loc_2D0DC”。左边红色箭头表示不满足时执行的路线;
右边表示条件满足时执行的路线。


 


将鼠标定位到指令“if-eqz v2,loc_2D0DC”,然后点击IDA Pro主界面上的“Hex View-A”选项卡,


 


知偏移地址为0x2D0BE 相应的字节码为“38 02 0f 00”,
所以只需将if-eqz的OpCode值38改为if-nez的OpCode值39即可。
(说明:也就是利用十六进制编辑器 将偏移地址0x2D0BE的“38 02 0f ”改为“39 02 0f”,具体什么什么是OpCode 我不明白了o(╯□╰)o)
修改好之后的修复dex文件的合法性 所以就借助@非虫的工具 

 


修复好之后 拖进RAR解压压缩软件 并删除其中的签名文件夹“META-INF”,这时CrackMe.apk的破解就完成了 签名安装就可以测试了。

附件:  CrackMe DexFixer.rar (162.49 KB, 下载次数: 382) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值