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应用逆向——分析反编译代码之大神器

如果说使用dex2jar和JD-GUI获得了一个APP反编译后的JAVA代码,再结合smali代码调试器来进行调试还不够爽,不够畅快的话,下面将介绍一个帮助分析代码执行流程的大神器。这个神器优点很多,...
  • CharlesSimonyi
  • CharlesSimonyi
  • 2016年07月25日 21:18
  • 4942

手把手教你逆向分析 Android 程序

转载自:https://segmentfault.com/a/1190000005133219  作者真是高手 很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写...
  • Working_Harder
  • Working_Harder
  • 2016年11月22日 16:32
  • 7082

android逆向开发工程师需要掌握的技能--实习一个月总结报告

必须掌握的技能1、负责安卓程序的加解密和数据传输分析、拆解、逆向等工作; 2 、逆向APK,了解运行过程; 3 、Andorid本地提权获得root权限; 4 、熟练掌握软件逆向静态分析、动态调...
  • tangsilian
  • tangsilian
  • 2016年07月02日 20:41
  • 8281

《Android软件安全与逆向分析》最新 完整版 清晰版 带书签 (PDF)

  • 2018年01月10日 19:26
  • 75.96MB
  • 下载

《Android软件安全与逆向分析》最新 完整版 清晰版 带书签 (PDF)

  • 2017年12月23日 14:43
  • 75.96MB
  • 下载

Android软件安全与逆向分析(完整版)

  • 2016年01月26日 11:20
  • 48.41MB
  • 下载

Android软件安全与逆向分析(完整版)

  • 2014年09月18日 15:36
  • 48.41MB
  • 下载

Android软件安全与逆向分析 pdf扫描版 完整12章

  • 2013年11月07日 08:58
  • 48.41MB
  • 下载

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

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

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

一般情况下我们想要了解别人的app怎么实现这个动画,这个效果的时候,总是会想到反编译一下,看下布局,看下代码实现。对,这对于有经验的玩家确实手到擒来了,但是初学者,根本就不知道怎么反编译,怎么看代码,...
  • eastmoon502136
  • eastmoon502136
  • 2016年08月25日 11:29
  • 5314
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android版日语学习应用的逆向分析
举报原因:
原因补充:

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