今天是六一儿童节,先提前祝各位读者节日快乐,今天我主要分享的是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版日语学习应用的逆向分析相关推荐

  1. 基于Android实现日语学习app设计与实现演示【附项目源码+论文说明】分享

    基于Android实现日语学习app设计与实现演示 摘要 随着手机使用的普及,人们获取与保存信息的方式已经发生了激动人心的转变.智能手机正在逐步融入我们的生活,并影响和改变着我们的生活.由于现在各种智 ...

  2. 基于Android实现日语学习app设计与实现演示【附项目源码+论文说明】

    基于Android实现日语学习app设计与实现演示 摘要 随着手机使用的普及,人们获取与保存信息的方式已经发生了激动人心的转变.智能手机正在逐步融入我们的生活,并影响和改变着我们的生活.由于现在各种智 ...

  3. android版微信打飞机无敌补丁分析及其制作方法

    本文出自:http://www.creturn.com/android版微信打飞机无敌补丁分析及其制作方法/ 原创作品,转载请注明来源及其作者信息,负责后果自负! 最近微信5.0版本发布后增加了游戏中 ...

  4. 最新学习通JS逆向分析

    目标网址:https://passport2.chaoxing.com/login 重要说明:文章教程仅供参考学习,请勿用于非法用途,否则后果自负. 目录 一.接口请求参数分析 二.参数加密逻辑分析

  5. android百度脱壳,[原创]百度加固逆向分析

    最近一直在研究百度壳,发现网上这方面的资料非常少.所以我把自己做的发出来跟大家分享,共同学习进步. 下面开始: 一.init_array 我们发现init_array中存在多个函数地址,JNI_Onl ...

  6. Android FM模块学习之四源码分析(五)

    前几章我们分析了FM模块的几个主要的类文件,今天要分析的是:FMTransceiver.java public class FmTransceiver {/* Primary FM States :* ...

  7. [安全攻防进阶篇] 一.什么是逆向分析、逆向分析应用及经典扫雷游戏逆向

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

  8. [系统安全] 二.如何学好逆向分析及吕布传游戏逆向案例

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  9. Android 渗透测试学习手册 第三章 Android 应用的逆向和审计

    第三章 Android 应用的逆向和审计 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 在本章中,我们将查看 Android 应用程序或.apk文件,并了解其不同的 ...

  10. 专访丰生强:Android软件安全与逆向分析

    [专家简介]   丰生强(@非虫)   Android软件安全专家:看雪论坛Android安全版版主,安卓巴士开发进阶板块版主.对Android软件与系统安全有狂热的爱好和独到的见解,对Android ...

最新文章

  1. 三同轴连接器_罗森伯格射频同轴连接器之板间连接器三
  2. APT-高级软件包管理
  3. mongodb spring 超时时间_spring data mongodb 配置遇到的几个问题
  4. 产品网络推广方案之网站导航栏如何设置会更利于排名提升?
  5. WDS配置时遇到的问题
  6. html5 判断手机电脑,H5_0006:JS判断PC,平板,手机平台的方法
  7. 深度学习-清晰易懂的马尔科夫链原理介绍
  8. Hadoop 2.2.0 集群搭建
  9. [Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel
  10. mysql批量生成修改表和列注释语句
  11. python文件的路径_如何从目录中给出python文件的路径
  12. php负载均衡慕课网,Nginx实现负载均衡
  13. django后台集成富文本编辑器Tinymce的使用
  14. 超级简单却不知道:html标签的嵌套规则
  15. 解决小键盘灯不亮的方法
  16. 扬州市 工程师职称计算机考试,扬州市建筑专业工程师专业技术资格条件
  17. 写个单机版斗地主程序,复习c++面向对象
  18. Latex系列[2]--公式中的字体
  19. .netcf 图片区域拷贝[图片切割]
  20. NexusJar包私服

热门文章

  1. xshell常用指令
  2. [bzoj1878][SDOI2009]HH的项链
  3. 【转】HDC,CDC,CWindowDC,CClientDC,CPaintDC等等
  4. HTTP所承载的货物(图像、文本、软件等)要满足的条件
  5. GNU make manual 翻译(五十二)
  6. 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
  7. 100天搞定机器学习|Day4-6 逻辑回归
  8. 转:oracle常见重要视图-v$sql,v$sql_plan,v$sqltext,v$sqlarea,v$sql_plan_statistcs
  9. MySQL灾备恢复在线主从复制变成主主复制及多源复制【转】
  10. [BZOJ4539][HNOI2016]树(主席树)