Android APP逆向分析工具和方法汇总

这篇具有很好参考价值的文章主要介绍了Android APP逆向分析工具和方法汇总。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

受益于移动设备的广泛普及,移动应用近年来得到了蓬勃发展。基于移动设备集成的各类传感器,众多功能丰富的移动应用被开发出来,聚集了大量高价值用户隐私数据,包括用户身份信息、地理位置信息、账户资料信息等。用户在享受移动应用带来便利的同时,其隐私安全也受到了重大威胁。在这样的背景下,移动应用隐私合规检测应运而生。同时在云游戏新业态新业务场景下,通常由于云游戏容器不具备移动设备那么丰富的传感器,但 同时又需要运行诸多的游戏应用,但很多移动应用基于移动设备开发,在云游戏容器下将使得某些功能不能正常工作或者运行行为怪异,因此和移动应用隐私合规检测如出一辙的逆向分析技术也显得尤为重要。虽然一个为攻一个为守,但两者使用的基础分析技术——移动应用隐私合规检测却是相同的。
本文简要介绍移动应用逆向分析工具和方法,帮助相关的同学进行移动应用隐私合规检测来分析云游戏或者移动应用的使用了那些系统API,从而帮助更好的解决现实场景下的问题。

二、现有技术

隐私合规检测(或者称为逆向分析方法),从技术形态上可以分为静态检测方案与动态检测方案。由于本文只会重点介绍一种技术,先对现有技术做一个简单的介绍,然后会详细的介绍一种方法或者工具的使用方法。

2.1 静态检测

静态检测方案通过对移动应用的安装包进行反编译,进而通过静态数据流、控制流分析等技术,检测移动应用中可能存在的隐私泄露问题。在该领域中,常用到以下工具:

Apktool [1]: 反编译安卓Apk,可以反编译资源,并在进行修改之后重新打包Apk

dex2jar [2]: 将Apk反编译成Java源码(classes.dex转化成jar文件)

Jadx[3] :JADX是一款优秀的Android反编译工具,支持命令行和图形化界面,能为我们省下大量的反编译时间

Soot [4]:Soot最初是Java优化框架,发展至今已广泛应用于分析优化和可视化Java和Android应用程序。

Flowdroid [5]: 基于IFDS算法实现的针对Android的静态污点分析框架
利用上述工具,开发者可以制定相应的规范检测项, 从而检测到应用中存在的隐私泄露隐患。本文不对相关的技术细节和使用方法进行详细介绍,感兴趣的同学可以自行找寻相关资料进行研究。

2.2 动态检测

动态检测方案通过运行待检测应用于真实手机或者模拟器沙箱,通过监控移动应用对系统内敏感资源的访问,结合移动应用的隐私政策声明分析,检测移动应用是否包含隐私违规行为。应用运行则可以由人工进行或者UI自动化。

2.2.1 敏感API调用行为监测

敏感API调用行为监测或者说运行时敏感行监测实时监控应用对用户隐私敏感数据的访问。在实现上分为两种:一种是直接在源码中添加监控代码。如在AOSP代码中的WifiManager的wifi是否使能API中直接添加代码,记录API访问行为。另一种则是通过hook方案,不直接修改源码,而是在系统运行APP时添加逻辑钩子,在APP调用特定敏感API时,先跳转至hook函数,最后再返回调用原敏感API。其中,hook函数负责记录应用的API访问行为(本文第三节中将详细介绍此类方法)。

2.2.2 UI自动化

移动应用自动化即通过程序控制移动应用UI交互。该领域典型的工具有: monkey [6],进行UI界面随机点击以及系统级事件。第三方UI自动化工具:uiautomator2 [7]和AndroidViewClient [8], 基于系统工具uiautomator实现,能够实现基本的自动化UI测试功能编程。

三、Camille工具

为了解决云游戏场景下,API调用的行为分析,有一个工具Camille较好的实现了逆向分析的功能。本小结想详细的介绍他的使用方法。
Camille工具git地址:https://github.com/zhengjim/camille
它依赖python、frida和frida-tools等工具。

3.1 Camille依赖环境安装和使用方法

步骤1、安装python3环境
可以参考python3安装参考菜鸟教程[9].
步骤2、安装frida、frida-tools
frida官网:https://frida.re
frida github地址:https://github.com/frida/frida
pip3 install frida-tools # CLI tools
pip3 install frida # Python bindings
npm install frida # Node.js bindings
步骤3、ROOT板卡
例如865板块可以使用adb命令来root
adb root
步骤4、安装frida-server

参看本机frida安装版本及CPU版本
frida --version
adb shell getprop ro.product.cpu.abi
本机电脑上frida安装的版本是:V15.2.2,CPU为:arm64-v8a

根据所安装frida版本下载对应的frida-server版本
frida-server下载地址:https://github.com/frida/frida/releases
本机安装的frida版本为:V15.2.2,CPU为:arm64-v8a,所以下载的frida-server版本为:frida-server-15.2.2-android-arm64.xz

将下载的frida-server文件push到手机目录
adb push 本地frida-server文件路径 /data/local/tmp/

通过命令进入安卓手机并切换root用户
adb shell
su

进入frida-server文件目录,同时更改frida-server文件的权限
cd /data/local/tmp/ chmod 755 文件名

运行frida-server
./frida-server-15.2.2-android-arm64
步骤5、运行camille工具检测APP
python3 camille.py APP包名

3.2 camille定制

一般情况下camille自带来许多的API hook,可以清楚的看到app调用了情况,如下表所示为自带的模块分析:
模块名
备注
permission
申请权限
phone
电话、基站
system
系统信息(AndroidId/标识/content敏感信息)
app
其他app信息
location
位置信息
network
getNetwork
camera
照相机
bluetooth
蓝牙
如果有需要,可以自行修改script.js增加、删除、改动相关的部分来定制化自己的场景要求,从而实现更多的逆向分析行为。
同时camille也支持将分析结果自动生成excel表格,可以使用下面命令来使能该方法。
python3 camille.py APP包名 -ns -f demo.xls

-ns:不显示日志。默认显示

-f: 保存app行为轨迹到到execl里。默认不保存。
更多的方法请参考文献[10].

四、参考文献和开源链接

[1] Apktool:https://ibotpeaches.github.io/Apktool/
[2] Dex2jar:https://github.com/pxb1988/dex2jar
[3] Jadx : https://github.com/skylot/jadx
[4] Soot:http://soot-oss.github.io/soot/
[5] Flowdroid: https://blogs.uni-paderborn.de/
[6] Monkey:https://developer.android.com/studio/test/monkey?hl=zh-cn
[7] uiautomator2:https://github.com/openatx/uiautomator2
[8] AndroidViewClient:https://github.com/dtmilano/And
[9] 《Python3 环境搭建》 https://www.runoob.com/python3/python3-install.html
[10] https://github.com/zhengjim/camille文章来源地址https://www.toymoban.com/news/detail-658777.html

到了这里,关于Android APP逆向分析工具和方法汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web逆向、软件逆向、安卓逆向、APP逆向,关于网络安全这些你必须懂

    逆向工程是网络安全行业里面一项很重要的技术。 逆向是一个相对正向而言的解释,相对正向来说,对一个程序来讲,正向就是开发的过程,从0到1。 就是在一个软件诞生的整个生命周期中的一个过程, 也就是按照需求通过编码把需求实现,产生一个程序,当然这个程序可

    2024年02月07日
    浏览(43)
  • 安卓逆向_0 --- 逆向、安全、工具集

    ​吾爱 工具集 官网:https://www.52pojie.cn/ 工具集:https://down.52pojie.cn  :https://www.52pojie.cn/thread-811805-1-1.html 看雪 工具集 官网:https://bbs.kanxue.com/ 工具集:https://tools.pediy.com 看雪 知识库 看雪 知识库:https://www.kanxue.com/chm.htm?id=14693 安卓 逆向环境 r0env 安装设置 r0env :https://m

    2024年02月09日
    浏览(72)
  • Android安卓实战项目(12)—关于身体分析,BMI计算,喝水提醒,食物卡路里计算APP【支持中英文切换】生活助手类APP(源码在文末)

    B站演示 【Android安卓实战项目(12)—生活助手类APP—关于身体分析,BMI计算,喝水提醒,食物卡路里计算APP【支持中英文切换】】 https://www.bilibili.com/video/BV1Wu4y1C76j/?share_source=copy_webvd_source=b2e9b9ed746acda34f499009647748ed 这段代码是一个Android应用程序的主要活动(Activity),它是一

    2024年02月10日
    浏览(46)
  • APP攻防--安卓逆向&JEB动态调试&LSPosed模块&算法提取&Hook技术

    安装java环境变量(最好jdk11) 安装adb环境变量 设置adb环境变量最好以Android命名 启动开发者模式 设置--关于平板电脑--版本号(单机五次) 开启USB调试 设置--系统--高级--开发者选项--USB调试 开启USB调试目的是为了后续让JEB能够获取模拟器上的进程 安装激活JEB 软件安装包和破解参

    2024年02月05日
    浏览(66)
  • 【Android安全】Flutter app逆向

    参考:https://www.bilibili.com/video/BV1SM41147g5 flutter app特征: lib/armeabi-v7a/下面有libapp.so和libflutter.so 逆向分析工具: 看雪:Flutter逆向助手 可以解析libapp.so文件,将其转换成dart文件 将libapp.so导入到手机,然后打开手机上的 flutter逆向助手 选中libapp.so,解析,得到dart文件 (注意要

    2024年02月13日
    浏览(40)
  • 某果app逆向分析

    分析流程: App-Signature: package com.p330tt.sdk.http.Interceptor; /* renamed from: c */ public MapString, String m20821c(b0 b0Var) throws IOException { package p399la; /* renamed from: la.a / / compiled from: DataController */ public class DataController { /* renamed from: b */ public String m20884b(int i, String str, String str2) { return this.f1502

    2024年02月06日
    浏览(40)
  • 米斗APP逆向分析

    该app难点就是个360数字壳 : com.touchtv.midou 直接脱壳处理,脱完壳分析dex: package com.touchtv.internetSDK.network; 时间戳 ,md5 ,64se64 , 还有请求的url ,参数等做了一些操作。 我们重点看下:\\\"X-ITOUCHTV-Ca-Signature“ 走了一个r方法: =======判断x(str) 其除了请求中/baoliaoservice,则秘钥为:

    2024年02月12日
    浏览(38)
  • 某嘀大厂APP逆向分析

    sign解密,为header及data中的key-value拼接,并进行前后和盐值拼接,进行MD5加密; 本章记录定位的算法位置,方便后续观看; demo:

    2024年02月16日
    浏览(41)
  • xx音乐app逆向分析

    目标 看一下评论的请求 抓包 这里使用httpcanary 请求包如下 参数分析 首先看看变化的参数 结果如下 clienttime是时间戳,那么只要知道key是怎么来的就行了 反编译apk 直接用jadx反编译,使用最新版本的可以不用内存大小。 接着就要看看是不是在java层。首先搜索show_admin_tags试试

    2024年02月10日
    浏览(49)
  • Andriod APP逆向——常用工具

    ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 ADB 命令以图

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包