吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 94548|回复: 175
上一主题 下一主题
收起左侧

[Android 原创] [实例]利用IDA Pro分析Android软件基础教程

    [复制链接]
跳转到指定楼层
楼主
淡然出尘 发表于 2014-2-13 01:38 回帖奖励
本帖最后由 淡然出尘 于 2014-2-13 10:33 编辑


说明:本图文教程的方法及工具均分享自看雪移动区版主@非虫的原创图书《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, 下载次数: 732)







点评

淡然牛。你果然深山打野20年 出山了么。。。  发表于 2014-12-22 18:45
淡然牛。你果然深山打野20年 出山了么。。。  发表于 2014-4-12 13:21
淡然牛。你果然深山打野20年 出山了么。。。  发表于 2014-3-9 01:09
淡然牛。你果然深山打野20年 出山了么。。。  发表于 2014-2-14 11:44
淡然牛。你果然深山打野20年 出山了么。。。  发表于 2014-2-13 16:45

免费评分

参与人数 25热心值 +25 收起 理由
zhong1047842950 + 1 谢谢@Thanks!
469164323 + 1 这个逼装的给满分
诸葛阳明 + 1 淡然牛。你果然深山打野20年 出山了么。。.
yyshun + 1 谢谢@Thanks!
Flowerinjury + 1 热心回复!
sjezana + 1 谢谢@Thanks!
luojianeng + 1 谢谢@Thanks!
xbing9 + 1 我很赞同!
等老子火了 + 1 大神
alxe1528 + 1 我很赞同!
xouou + 1 我很赞同!
小叨 + 1 太牛了,膜拜
野生的沫沫 + 1 我很赞同!
yuan71058 + 1 都玩安卓了
caroline + 1 我很赞同!
马斯维尔 + 1 淡然牛。你果然深山打野20年 出山了么。。。.
Smallhorse + 1 淡然牛。你果然深山打野20年 出山了么。。
Freedom_XY_ + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
蒂兰圣雪 + 1 暂时看不懂 先留名感谢。...
暗夜∮孤星 + 1 已答复!
吾爱扣扣 + 1 闭关修炼出山了。。
kakachy + 1 我很赞同!
zz990349157 + 1 热心回复!
ylf + 1 我很赞同!
雨轩丨灬Arvin + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
傲世V雄哥720 发表于 2014-12-5 18:49
本帖最后由 傲世V雄哥720 于 2014-12-5 18:51 编辑

改SO简单易懂教程:
打开IDA
载入SO
载入SO完毕
搜索结果,选中按空格键跳转到图形模式
修改判断,【依据Dalvik跳转指令或ARM跳转指令修改】
对准该代码,然后Hex View-A
然后使用C32ASM或者Win Hex修改
【请注意:这里啰嗦一句,代码的“名词”很容易让人听不懂】
偏移地址的解释:
Hex【十六进制】 View-A
0x2CB72 49 59 07 0A
0x2CB72就是“偏移地址”   
49 59 07 0A就是要改的地方
教程结束。
沙发
zhaoqianjing 发表于 2014-2-13 01:56
3#
djxinqing 发表于 2014-2-13 02:27
4#
2161608 发表于 2014-2-13 03:21
djxinqing 发表于 2014-2-13 02:27
值得收藏!谢谢楼主

深夜发帖,赞一个
5#
雨轩丨灬Arvin 发表于 2014-2-13 03:51
支持一下,学习了。
6#
逍遥枷锁 发表于 2014-2-13 07:50
缺少这样的技术帖子,非常感谢。
7#
ylf 发表于 2014-2-13 08:53
感谢分享,又学了一招!
8#
1354669803 发表于 2014-2-13 11:46
膜拜淡然大大 大大有空教我分析?
9#
zuxin521 发表于 2014-2-13 14:52
技术牛人啊,顶你
10#
吾爱-路人甲 发表于 2014-2-13 15:37
好教程,感谢分享呀
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表