您的位置:首页 > 移动开发 > Android开发

Android版日语学习应用的逆向分析

2016-06-01 20:44 288 查看
今天是六一儿童节,先提前祝各位读者节日快乐,今天我主要分享的是Android逆向工程的一个思路,其实文章在公司内部早有分享过,看很多朋友对这块还蛮感兴趣的,所以今天又重新整理一下分享给大家。

一.简单介绍

Android中的破解通常分为静态分析和动态分析,静态分析是指在不运行代码的情况下对程序文件进行反汇编代码,然后通过分析反汇编的代码来寻找程序的突破口,动态分析通常指运行时来分析程序功能的一种技术。对于这两种方式又可以细分为Java层面的(dex文件、smail文件)和native层面的(so文件)。今天主要跟大家分享如何利用现有的分析工具,快速的分析Android应用程序。

1.准备工作

A.基本知识储备:无特殊要求

B.分析工具使用:Apktool
2.大体思路分析
主程序(apk文件)->反编译工具反编译(各别加壳的程序需要特殊处理)->分析代码找到突破点并修改突破点(这是关键)->重新编译apk文件并签名->安装调试(破解完成)
3.案例分析
软件名称:XXXX日语学习软件
软件下载量(某手机管家):65万



图1
软件介绍:官网介绍是这样XXX一款最方便你随身携带的日语学习软件,听力、口语、日剧、职场,各种日语素材尽在掌握。清新简洁的页面,丰富及时的内容,让你玩转日语世界。文字、视频等多媒体阅读体验,边看边听边读,全面提升你的听说读技能。
软件性质:免费内容+收费内容+弹出广告



图2
点击【加入会员】按钮弹出的付费界面,红色字体【特别提示】很重要



图3

通过上面的大体思路分析,就是使用apktool工具将程序逆向,然后根据弹出的关键字进行全局搜索,因为关键字在Android开发时,开发者可能将这些字符串硬编码到资源中,也可能引用res\values\strings.xml文件,程序在打包的时候就会将strings.xml文件的字符串加密存储resources.arsc文件中并打到apk文件里,当我们反编译后,这个文件也被反编译回来。所以我们只要利用搜索工具搜索关键字即可。我这里关键字定位”加入会员”。备注:沿着这个思路往下走的时候,我发现我绕了很多弯路,其实这个软件破解并没想象中的那么复杂,甚至简单到都不用重新编译APK文件,读者在读到后面时候会豁然开朗,我先卖个关子,按套路来。

二.实战演练

1.第一步,反编译apk文件。
①.反编译工具:apktool
【反编译apk命令】:apktool d[ecode] [opts]<file.apk>[outputdir]

Eg: apktool d /opt/share/mydhc.apk/opt/output

【编译apk命令】:apktool b[build] [opts]
[<apppath>][outputdir]



图4

②.反编译后目录:



图5

③.目录结构:

Assets: 该目录用于存放项目相关的资源及配置文件。

Lib: 通常存放第三方库。如.so文件

Res: 通常存放着所有的图片文件以及xml文件等资源文件,跟用eclipse开发Android工程时,项目目录中res下面的资源文件一样。

Smali:通常放些Android程序的反编译代码,类似于一种中间代码,虽然并不是源码,但也是基于文本的,我们就是靠分析这些代码来达到破解的。

AndroidManifest.xml文件: Android程序中必须的文件,这个文件可以暴露应用程序注册的权限,各自的实现类以及程序的启动类等。

apktool.yml文件:该文件放些反编译之后apktool的配置信息,通常反编译完程序在编译回去如果没有此文件会报错。

备注:不同的逆向分析工具分析出来的文件目录可能会稍有差别,不过大同小异,读者根据实际情况进行分析。

2.第二步,全局搜索关键字“加入会员”。
备注:在Android开发中,String.xml文件的所以字符串资源都会保存在【项目/gen/包名/R.java】中,并且每个字符串都有唯一的int类型索引值name如图6【umeng_common_pause_notification_prefix】,当我们反编译Android项目后,所有的索引值将会保存在String.xml同名目录的public.xml文件中如【res/values/public.xml】,然后在public.xml中找到【umeng_common_pause_notification_prefix】对应的ID值【0x7f0a00e7】如图7,然后再将这个ID值在【.smali】文件中搜索,进而继续分析找出突破口。



图6



图7

但是,你会神器的发现,在这个APP中,按这个套路分析并行不通如图8。导致思路中断,这个时候我们前面介绍的【③.目录结构】你可能会有所启发,Assets文件夹会存放资源及配置文件。没错!这个APP是混合模式开发的,经过仔细分析目录的资源文件,你会找到程序的突破点,这里直接上结果如图9和图10,下载地址复制到下载软件中即可下载会员版本。备注:我这里之所以会想到有会员版的下载地址,是因为在付费界面当中有个特别提示,见上面付费界面图。作者的这种实现方式给我们破解带来了福利,省去了不少分析步骤,还有其实这个软件分析到这可以直接用压缩软件解压,然后分析文件内容,不用apktool也可以。



图8



图9



图10



图11最终效果图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: