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

原创 2016年06月01日 20:44:16

今天是六一儿童节,先提前祝各位读者节日快乐,今天我主要分享的是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最终效果图





版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂

网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂 一、服务简介 网易云加密为网易公司旗下产品,致力于为移动应用程序提供专业保护方案,让...
  • asmcvc
  • asmcvc
  • 2015年11月11日 09:47
  • 3053

Android开发学习之路--逆向分析反编译

一般情况下我们想要了解别人的app怎么实现这个动画,这个效果的时候,总是会想到反编译一下,看下布局,看下代码实现。对,这对于有经验的玩家确实手到擒来了,但是初学者,根本就不知道怎么反编译,怎么看代码,...

Android逆向分析学习与研究(1)————工欲善其事必先利其器

注:头连天参加一个慕课网的活动发表的文章,从哪里搬到这里来 一.什么是逆向     所谓逆向,就是对于程序的“逆向工程”,英文叫“reverse”,是计算机安全领域中一项重要的技术。常见...
  • C_Major
  • C_Major
  • 2014年12月16日 11:10
  • 2614

Android逆向分析学习与研究(2)————通过“轮盘赌”简要看看smali的基本流程控制

1.我写的一个简单的Andriod小Demo,“轮盘赌!”。 我写的这个轮盘赌小游戏(姑且称它为游戏吧),主要玩法是第一次点击屏幕中间的大按钮,会弹出“子弹已上膛”的提示,再次点击会出现“扣动扳...
  • C_Major
  • C_Major
  • 2014年12月25日 10:40
  • 2053

Android软件安全与逆向分析

  • 2017年11月06日 21:26
  • 99.08MB
  • 下载

Android逆向分析工具

  • 2016年01月15日 09:41
  • 34.68MB
  • 下载

【移动安全】移动应用加密协议逆向分析成功

1、相关工具: apktoolkitv2.1,Jeb破解版本 Apk上上签 vstart软件管理工具 2、分析过程: 确认数据传输流程:利用工具反编译apk文件,之后通过jeb软件找到疑似算法位...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android版日语学习应用的逆向分析
举报原因:
原因补充:

(最多只允许输入30个字)