精品连载丨安卓 App 逆向课程一之环境配置

2024-05-15 13:32

本文主要是介绍精品连载丨安卓 App 逆向课程一之环境配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

阅读本文大概需要 8 分钟。

我们知道,现在爬虫可以说是越来越难做了,几乎不是 JavaScript 逆向就是 App 逆向。但总的来说,我的公众号里面有关 App (安卓)逆向的文章还是比较少的。

在这里我与网络安全界大拿、安卓逆向大神「肉丝姐 r0ysue」建立了合作(某种不可告人的交易)关系,肉丝姐会在本公众号连载一系列安卓逆向 FRIDA 相关的教程,带大家入门安卓逆向。

本篇文章是第一篇——环境配置,工欲善其事,必先利其器,搭建好了安卓逆向环境之后,我们才能方便地开展各种逆向骚操作。

那么废话不多说了,来一起学习吧。嚯嚯嚯嚯嚯嚯嚯嚯!



硬件准备

在手机硬件的考虑上,首先优选谷歌的“亲儿子”:NexusPixel系列,鉴于官网上测试案例在Nexus 5X手机,系统为Android 8.1.0版本上进行测试,我们也会选用这款手机、和这个系统版本来进行实验。

官网也指出不可能在所有手机和所有 ROM 上完全进行测试,肯定是具体情况具体分析。

Also note that most of our recent testing has been taking place on a Nexus 5X running Android 8.1.0. Older and newer ROMs may work, but if you’re running into basic issues like Frida crashing the system when launching an app, this is due to ROM-specific quirks. We cannot test on all possible devices, so we count on your help to improve on this. However if you’re just starting out with Frida it is strongly recommended to go with a Nexus device with factory software, or an official 8.x emulator image for arm or arm64. (x86 may work too but has gone through significantly less testing.)

官网上依旧指出,选择Android 8.x系统的模拟器也是没问题的,架构必须选择arm或者arm64x86可能会有crash的情况发生。

Nexus 5X这款手机的硬件参数为:

刷入官方 Android 8.1

frida官网指出的factory software就是谷歌的[官方工厂镜像网站 https://developers.google.com/android/images,打开这个网站可能需要科学上网。网站中间有一些操作指南,右边就是手机型号一览表,在这里我们选择 Nexus 5X 的型号 bullhead。

可以看到从安卓6到安卓8均支持,而且最新支持到8.1.0

我们使用wget命令来下载最新的8.1.0 (OPM7.181205.001, Dec 2018)版本,这样速度最快。

下载完成后记得校验SHA-256 Checksum,必须得于官网一致,否则下载文件已经损坏,无法使用,必须重新下载。

$ openssl dgst -sha256 bullhead-opm7.181205.001-factory-5f189d84.zip
SHA256(bullhead-opm7.181205.001-factory-5f189d84.zip)= 5f189d84781a26b49aca0de84a941a32ae0150da0aab89f1d7709d56c31b3c0a

可见SHA-256 Checksum与官网相同,接下来就是刷入该系统。

首先将手机进入fastboot状态,操作流程如下:

1.将USB线断开,并确保手机有80%左右的电量;2.将手机完全关机;3.同时按住音量向下键和开机键;4.手机将进入fastboot状态;

状态如下:

PS:如果手机并没有解锁,也就是DEVICE STATE -显示locked,那手机需要先解锁,得是unlocked,也就是图上的状态,才可以后续刷入recovery等操作。Nexus 5X手机解锁是比较简单的,这里不做演示了。

手机用USB线连上电脑,运行脚本,将系统刷进手机。

$ unzip bullhead-opm7.181205.001-factory-5f189d84.zip
Archive:  bullhead-opm7.181205.001-factory-5f189d84.zipcreating: bullhead-opm7.181205.001/inflating: bullhead-opm7.181205.001/radio-bullhead-m8994f-2.6.42.5.03.imginflating: bullhead-opm7.181205.001/bootloader-bullhead-bhz32c.imginflating: bullhead-opm7.181205.001/flash-all.batinflating: bullhead-opm7.181205.001/flash-all.shextracting: bullhead-opm7.181205.001/image-bullhead-opm7.181205.001.zipinflating: bullhead-opm7.181205.001/flash-base.sh
$ cd bullhead-opm7.181205.001
$ ./flash-all.sh
target reported max download size of 536870912 bytes
sending 'bootloader' (4610 KB)...
OKAY [  0.197s]
writing 'bootloader'...
OKAY [  0.174s]
finished. total time: 0.371s
rebooting into bootloader...
OKAY [  0.020s]
finished. total time: 0.020s
target reported max download size of 536870912 bytes
sending 'radio' (56630 KB)...
OKAY [  1.629s]
writing 'radio'...
OKAY [  0.917s]
finished. total time: 2.546s
rebooting into bootloader...
OKAY [  0.020s]
finished. total time: 0.020s
extracting android-info.txt (0 MB) to RAM...
extracting boot.img (11 MB) to disk... took 0.125s
target reported max download size of 536870912 bytes
archive does not contain 'boot.sig'
archive does not contain 'dtbo.img'
archive does not contain 'dt.img'
extracting recovery.img (17 MB) to disk... took 0.093s
archive does not contain 'recovery.sig'
extracting system.img (1909 MB) to disk... took 17.733s
archive does not contain 'system.sig'
archive does not contain 'vbmeta.img'
extracting vendor.img (185 MB) to disk... took 1.895s
archive does not contain 'vendor.sig'
wiping userdata...
mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 2874363 4k blocks and 719488 inodes
Filesystem UUID: 79218aab-c322-4823-a83f-5a26ad3fd27e
Superblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: donewiping cache...
mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 24576 4k blocks and 24576 inodesAllocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done--------------------------------------------
Bootloader Version...: BHZ32c
Baseband Version.....: M8994F-2.6.42.5.03
Serial Number........: 00f4d2e97de8bd23
--------------------------------------------
checking product...
OKAY [  0.020s]
checking version-bootloader...
OKAY [  0.020s]
checking version-baseband...
OKAY [  0.020s]
sending 'boot' (11781 KB)...
OKAY [  0.358s]
writing 'boot'...
OKAY [  0.192s]
sending 'recovery' (17425 KB)...
OKAY [  0.519s]
writing 'recovery'...
OKAY [  0.294s]
erasing 'system'...
OKAY [  0.452s]
sending sparse 'system' 1/4 (508768 KB)...
OKAY [ 14.932s]
writing 'system' 1/4...
OKAY [  9.061s]
sending sparse 'system' 2/4 (524238 KB)...
OKAY [ 15.055s]
writing 'system' 2/4...
OKAY [  9.168s]
sending sparse 'system' 3/4 (501061 KB)...
OKAY [ 15.391s]
writing 'system' 3/4...
OKAY [  9.779s]
sending sparse 'system' 4/4 (421469 KB)...
OKAY [ 12.113s]
writing 'system' 4/4...
OKAY [  7.220s]
erasing 'vendor'...
OKAY [  0.110s]
sending 'vendor' (190332 KB)...
OKAY [  5.327s]
writing 'vendor'...
OKAY [  3.776s]
erasing 'userdata'...
OKAY [  0.758s]
sending 'userdata' (4284 KB)...
OKAY [  0.199s]
writing 'userdata'...
OKAY [  0.104s]
erasing 'cache'...
OKAY [  0.077s]
sending 'cache' (92 KB)...
OKAY [  0.082s]
writing 'cache'...
OKAY [  0.020s]
rebooting...finished. total time: 105.131s

刷机完成后,手机会自动重启,重启完成后即可自动进入系统。

刷入twrp recovery

recovery相当于Windows PE微型系统,在recovery里我们也可以挂载磁盘,修改系统分区,使用adb命令,等一系列功能。详细的功能列表可以百度或者谷歌。

我们这里只需要下载twrp针对bullhead机型的镜像,刷进去即可。

我们下载最新的twrp-3.2.3-0-bullhead.img镜像文件。

然后将手机设置到fastboot模式,使用fastboot命令将镜像刷进去。

$ fastboot flash recovery twrp-3.2.3-0-bullhead.img
target reported max download size of 536870912 bytes
sending 'recovery' (16289 KB)...
OKAY [  0.499s]
writing 'recovery'...
OKAY [  0.275s]
finished. total time: 0.774s

刷完之后,在手机上按两次音量向下键,选择Recovery mode,按电源键进入。

稍等片刻之后,就会进入twrp 3.2.3-0系统。

直接滑开即可。意味着允许修改系统。

可以看到功能非常丰富。

刷入Magisk

自从SuperSU卖给中国人,并且不再更新之后,大家已经不怎么使用这款root软件了,取而代之的是Magisk

Magisk是由中国台湾省小伙儿topjohnwu开发的一款完全开源的root软件,其github项目托管主页在 https://github.com/topjohnwu/Magisk。

有关Magisk的详细中文介绍,大家可以看https://xposed.appkg.com/2536.html,我们只是用Magisk来获取root权限。

github项目主页的release页面,下载最新的卡刷包:Magisk-v17.3.zip

然后使用adb命令将卡刷包上传到手机中去。

$ adb push Magisk-v17.3.zip /sdcard/
* daemon not running; starting now at tcp:5037
* daemon started successfully
Magisk-v17.3.zip: 1 file pushed. 6.5 MB/s (4178628 bytes in 0.610s)

然后使用twrp将这个卡刷包安装进手机里。首先点选上一节最后一张图中的Install

然后选择我们刚刚传输进去的Magisk-v17.3.zip卡刷包。

滑动确认安装。

安装完成后直接重启即可,Reboot System

滑动重启。

重启后发现Magisk Manager已经安装好了,并且是作为系统App,卸载不了的。卸载只有安装官网release页面里的Magisk-uninstaller-20181022.zip卡刷包。

打开App可以看到安装成功。

获取root权限

接下来就是使用adb命令进入安卓手机的shell,并且获取root权限,为下一节做好准备。

在手机上找到设置→系统→关于手机→版本号,点击版本号五下,打开开发者选项,然后进入设置→系统→开发者选项,打开USB调试选项。然后USB连接到电脑,使用adb命令连上去。手机上会出现授权,点击接受该指纹的电脑连接。

$ adb shell
bullhead:/ $
bullhead:/ $
bullhead:/ $ whoami
shell
bullhead:/ $

此时是shell权限,权限非常小。我们来切换到root用户:

bullhead:/ $ su -

此时手机上会出现Magisk的超级用户请求,点击允许,com.android.shell即可获取root权限。

点击允许之后,su -这个命令才会返回,然后运行whoami命令,可以看到已经是root了。

bullhead:/ #
bullhead:/ # whoami
root
bullhead:/ #
bullhead:/ #

这时候就可以用root的权限来做一些事情了。

Android frida-server 安装

上一节中刷机,获取root其实倒是蛮复杂的,这一节安装frida-server其实倒是简单很多,我们从官方github页面的release标签里,找到最新版的frida-server,注意要匹配系统和架构,比如armarm64就不能搞错,比如我们这里选择的就是frida-server-12.2.26-android-arm64.xz的版本。

下载完成后进行解压,获得linux原生的可执行文件,我们将它重命名为frida-server

$ file frida-server
frida-server-arm64: ELF 64-bit LSB shared object ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /system/bin/linker64, stripped

使用adb命令将其推送到手机上去。

$ adb push frida-server /data/local/tmp/

然后使用adb shell命令进入到手机中去,执行以下命令:

$ adb shell
bullhead:/ $ su -
bullhead:/ # whoami
root
bullhead:/ # cd /data/local/tmp/
bullhead:/data/local/tmp # chmod 755 /data/local/tmp/frida-server
bullhead:/data/local/tmp # ./frida-server &
[1] 9849
bullhead:/data/local/tmp #

frida-server即可运行成功。

此时在电脑上新开一个shell,运行frida-ps -U命令,即可显示手机中正在运行的进程。

$ frida-ps -UPID  Name
----  ---------------------------------------------------
9628  -
5389  .esfm591  ATFWD-daemon
2953  adbd596  android.hardware.biometrics.fingerprint@2.1-service398  android.hardware.cas@1.0-service399  android.hardware.configstore@1.0-service400  android.hardware.dumpstate@1.0-service.bullhead401  android.hardware.graphics.allocator@2.0-service402  android.hardware.usb@1.0-service403  android.hardware.wifi@1.0-service397  android.hidl.allocator@1.0-service
7456  android.process.acore
3098  android.process.media567  audioserver568  cameraserver592  cnd588  cnss-daemon977  com.android.bluetooth
8829  com.android.connectivity.metrics
8275  com.android.keychain
3026  com.android.nfc
1175  com.android.phone
5184  com.android.settings
1020  com.android.systemui
7414  com.android.vending
3417  com.estrongs.android.pop
8247  com.estrongs.android.pop:local
5916  com.google.android.apps.gcs
8711  com.google.android.apps.messaging
8747  com.google.android.apps.messaging:rcs
7721  com.google.android.apps.photos

到这里我们在64位手机Nexus 5X的安卓原生8.1系统上安装frida-server就成功了。

怎么样?如果大家对安卓逆向感兴趣,想学到更多的知识,或者想与肉丝姐进一步交流的话,欢迎加入肉丝姐的星球来学习。

这里我跟肉丝姐还申请到了专属的半价(原价 50 元)优惠,一杯咖啡的钱大家就能学到更多关于安卓逆向的知识,感兴趣的朋友来扫码加入吧。

好文和朋友一起看~

这篇关于精品连载丨安卓 App 逆向课程一之环境配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991943

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

API-环境对象

学习目标: 掌握环境对象 学习内容: 环境对象作用 环境对象: 指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境。 作用: 弄清楚this的指向,可以让我们代码更简洁。 函数的调用方式不同,this指代的对象也不同。【谁调用,this就是谁】是判断this指向的粗略规则。直接调用函数,其实相当于是window.函数,所以this指代window。

微信小程序开发必知必会:文件结构和基本配置

一、微信小程序基本文件结构 1.  project.config.json:项目的基本配置文件,包括项目名称、appid、项目目录、页面文件夹等。     {"setting": {"urlCheck": false,"es6": true,"postcss": true,"nodeModulesPath": "D:\\\\node_modules"},"appid": "wxd678e

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通