1 逆向基本流程

1 获取目标app(官网,豌豆荚),尽量不要去华为应用市场,小米应用市场下载--多渠道打包,安装到手机上

2 使用抓包工具抓包分析(charles,fiddler。。。)

3 使用反编译工具(JADX,JD-GUI。。),把apk反编译成java代码,分析java代码,定位代码位置

4 使用动态分析工具,如:frida,xposed。。通过hook,动态跟踪,确定代码位置,理解应用程序的执行流程

5 使用python还原代码,模拟发送 请求,完成我们的操作

目标:抓取数据,自动注册,刷评论。。。,模拟发送请求

2 ADB配置和使用

2.1 ADB是什么?

「adb」即 Android Debug Bridge ,亦称安卓调试桥,是谷歌为安卓开发者提供的开发工具之一,可以让你的电脑以指令窗口的方式控制手机。

可以在安卓开发者网页中的 SDK 平台工具页面下直接下载对应系统的 adb 配置文件,大小只有几十MB

1 下载地址(下载对应平台的adb)最新版:

https://developer.android.com/studio/releases/platform-tools?hl=zh-cn

2 各平台历史版本下载地址:

https://androidmtk.com/download-android-sdk-platform-tools

3 对应平台压缩包下载后,解压即可(配置好环境变量:在任意位置可以执行adb命令)

内含:adb工具和fastboot工具

2.3 ADB 安装和配置

2.3.1 win平台安装

1 下载压缩包后,解压 到 C:\soft\platform-tools

2 把该路径加入到环境变量:我的电脑---》属性---》高级系统设置---》环境变量

3 在cmd中验证(以管理员身份打开)

adb version

2.3.2 mac/linux平台安装配置

1 下载好的 platform-tools_r30.0.5-mac.zip,解压到某个路径: /User/你的名字/soft/platform-tools

2 把这个路径加入到环境变量

-打开Terminal

-敲 cd 回车 ,进入到你的家路径 # pwd看一下,打印出 /User/你的名字

-敲 vi .zprofile # 使用vi命令打开文件,写入

-敲 a 进入到 追加模式

-export PATH=${PATH}:/Users/你的名字/soft/platform-tools # 粘贴到最后

-敲 esc 敲 :wq 退出

3 让环境变量生效

source .zprofile

4 打开 Terminal,测试

adb version



2.3.3 环境变量介绍

无论在mac还是win上,都需要加环境变量

环境变量是什么?

环境变量是操作系统中用于存储系统级别配置信息的一种机制,可以为应用程序提供统一的配置和运行环境

环境变量有什么作用?

-解压的压缩包中有 adb.exe 可执行文件,想在任意路径下都能找到并且执行这个可执行文件

-打开cmd,默认路径是:C:\Users\Administrator

-这个路径下没有 adb.exe

-在cmd窗口中 敲 adb (adb.exe 后缀可以不写),正常来讲是没有任何返回,会报错,说命令找不到

-但是敲 有反应,原因就是:adb.exe 所在的路径,已经被我们加入到环境变量了,它就能找到了

-如果 一个可执行文件的路径没有被加入到环境变量,想执行这个可执行文件,必须进入到这个可执行文件所在路径才能执行

用户环境变量和系统环境变量:

-操作系统分用户,可以多用户登录

-如果把环境变量配置在当前用户下:只针对于当前用户生效

-如果把它配置在系统环境变量下:所有用户都会生效

2.4 ADB 操作手机

2.4.1 开启USB调试

# 1 点击Settings(设置) ->  About phone(关于手机) ->版本号(最底部)--->点击7次(开启usb调试)
# 2 点击Settings(设置) -> 系统---> 高级--->开发者选项--》进入
-开启USB调试
# 3 数据线连接电脑,按照下图提示操作

2.5 ADB常用命令

# 开启关闭adb服务
adb start-server 启动ADB
adb kill-server 关闭ADB
adb devices 查看已连接的设备 # 上传和下载文件
adb -s 设备id号 push C:\demo.txt /sdcard
adb -s 设备id号 pull /sdcard/demo.txt C:\ # 安装和卸载app
adb install C:\2345Downloads\xianyu.apk
adb uninstall 包名称
adb shell pm list packages # 查看包列表
adb shell pm list packages -e 关键字 # 查看包列表(搜索) # 查看处理器(32位/64位)
adb shell -s 设备id号 getprop ro.product.cpu.abi
adb shell getprop ro.product.cpu.abi
'''
armeabi-v7a(32位ARM设备)
arm64-v8a (64位ARM设备)
''' # 进入系统命令(跟linux命令完全一致),
# 本身adb操作是不需要root的,但是如果不root手机,不能切换到root用户
adb shell # 进入命令行
taimen:/ $ su # 切换为root用户,必须root
taimen:/ # ls
'''
acct data firmware odm sdcard
apex
''' # 其他
- 查看手机设备:adb devices
- 查看设备型号:adb shell getprop ro.product.model
- 查看电池信息:adb shell dumpsys battery
- 查看设备ID:adb shell settings get secure android_id
- 查看设备IMEI:adb shell dumpsys iphonesubinfo
- 查看Android版本:adb shell getprop ro.build.version.release
- 查看手机网络信息:adb shell ifconfig
- 查看设备日志:adb logcat
- 重启手机设备:adb reboot
- 安装一个apk:adb install /path/demo.apk
- 卸载一个apk:adb uninstall <package>
- 查看系统运行进程:adb shell ps
- 查看系统磁盘情况:adb shell ls /path/
- 手机设备截屏:adb shell screencap -p /sdcard/aa.png
- 手机文件下载到电脑:adb pull /sdcard/aa.png ./
- 电脑文件上传到手机:adb push aa.png /data/local/
- 手机设备录像:adb shell screenrecord /sdcard/ab.mp4
- 手机屏幕分辨率:adb shell wm size
- 手机屏幕密度:adb shell wm density
- 手机屏幕点击:adb shell input tap xvalue yvalue
- 手机屏幕滑动:adb shell input swipe 1000 1500 200 200
- 手机屏幕带时间滑动:adb shell input swipe 1000 1500 0 0 1000
- 手机文本输入:adb shell input text xxxxx
- 手机键盘事件:adb shell input keyevent xx

3 刷机及root手机

# 手机连接到电脑上,可以在电脑上输入命令操作手机
# 手机--》买回来---》带了个系统:安卓8,安卓9----》手机没有root
# 接下来,要给手机刷机---》类似于电脑装系统---》谷歌官方支持到 2xl最高能刷到11版本
# 刷完机后---》把手机root-->为后期逆向做好准备、
# 线刷手机+root
https://www.cnblogs.com/liuqingzheng/p/17462127.html

3.1 刷机

# 0 谷歌手机
# 1 去手机官网下载刷机包(win 装系统,下载装机包一样的)
https://developers.google.cn/android/images?hl=zh-cn#taimen
# 2 根据手机型号,找安装包,下载 taimen-rp1a.201005.004.a1-factory-2f5c4987.zip
# 3 解压,copy到d盘根路径
# 4 以管理员身份打开 cmd窗口,进入到刚刚那个路径下,确保目录下有 flash-all.bat
D:\taimen-rp1a.201005.004.a1-factory-2f5c4987>cd taimen-rp1a.201005.004.a1
# 5 扩展:flash-all.bat:win的刷机命令 flash-all.sh:mac的刷机命令
# 6 执行adb命令,重启手机,进入到fastboot模式
adb reboot bootloader
# 7 敲命令看看手机是否顺利连接到电脑上--》如果没有输出,不能进行下面操作
# 没有输出的原因是 安卓驱动没装好
# 设备管理器中---》更改驱动程序---》装好老师提供的驱动---》? 就没了
fastboot devices // 801KPUU1367574 fastboot
# 8 开始刷机(注意路径,管理员身份运行,线不能掉)之前手机上所有东西都没了
flash-all.bat // 开始刷机了,等待完成
# 9 刷机结束---》会自动重启---》系统是安卓11版本的最新系统--》界面根之前的可能也不一样了
fastboot reboot 或者按开机键
# 10 开机,配置网络,语言--》进入到手机界面
#11 打开usb调试---》之前学过了 ### 不要拿着其他型号手机--》刷这个系统,是刷不进去的

3.2 root

# 获取到手机root权限--》以后手机完全由我们自己掌控--》想进哪个目录进哪个目录
# 1 下载Magisk给手机root(已经下好了)
地址: https://github.com/topjohnwu/Magisk/releases
# 2 下载 Magisk-v26.1.apk
# 3 把Magisk-v26.1.apk安装在手机上
adb install -r /Users/lqz/soft/Magisk-v26.1.apk
# 显示安装成功
Performing Streamed Install
Success
# 此时打开Magisk,看到超级用户栏是无法点选的,因为没有root
# 4 解压压缩包,刚刚装系统的压缩包解压后有image-taimen-rp1a.201005.004.a1.zip,把它解压
'''
bootloader-taimen-tmz30m.img
flash-all.bat
flash-all.sh
flash-base.sh
image-taimen-rp1a.201005.004.a1.zip
radio-taimen-g8998-00034-2006052136.img
'''
# 5 文件如下
'''
android-info.txt
boot.img # 引导镜像
dtbo.img
system_other.img
system.img
vbmeta.img
vendor.img
'''
# 6 把引导镜像[boot.img],使用Magisk修补[一定要注意文件路径]
adb push ./boot.img /sdcard/Download
# 7 在手机上打开Magisk,选择安装--》选择修补一个文件---》选择上传的 boot.img ---》点击开始---》修补完成后变成
adb pull /sdcard/Download/magisk_patched.img ./
# 从手机拖到电脑上了
# 8 手机进入fastboot模式
adb reboot bootloader
fastboot devices
# 9 执行 (注意路径)
fastboot flash boot ./magisk_patched.img
# 10 重启手机,root完成
fastboot reboot
# 11 开启手机,打开Magisk,运行一下,重启后--发现root成功











3.3 补充

# 1 root 方案其实还有别的 不建议你做
https://www.cnblogs.com/liuqingzheng/p/17462146.html
# 2 我们可以不刷机,直接root
-之前root步骤--》刷了机--》使用面具修补了 boot.img-->又刷入到手机中完成了root
-之前刷机不做---》只要找到跟手机目前系统一样的刷机包--》修补boot.img-->刷入手机--》也可以root
-找到手机型号,下载刷机包
# 买回来的手机
如果已经root了,不用做了,也不用刷机了,也不用root了
# 自己研究刷机--》那就去刷一下
# 跟卖家讲--》让它给你root好---》直接用--》不需要刷机root了
# 4xl 欧版,美版---》只需要解了oem锁,无论是那个版都可以





4 数据包抓取

4.1 抓包工具选择

# Wireshark:Wireshark 是一个开源的网络抓包工具,可以在多个平台上运行,支持多种协议的抓取和分析。
# Fiddler:Fiddler 是一个跨平台的抓包工具,可以用于捕获和分析 HTTP 和 HTTPS 流量。它提供了强大的调试和排查功能。
# Charles Proxy:Charles Proxy 是一款跨平台的代理服务器工具,可以捕获并分析 HTTP 和 HTTPS 流量。它具有图形化界面和丰富的功能,适用于移动设备和桌面应用程序的抓包。
# Tcpdump:Tcpdump 是一个命令行抓包工具,适用于 Linux 和 Unix 系统。它可以捕获和分析网络流量,并提供灵活的过滤和输出选项

4.2 charles安装和配置

4.2.1 mac安装配置

# 1 下载软件:Charles_4.5.6_xclient.info.dmg
# 2 双击安装
# 3 打开软件,输入sn码破解

4.2.2 win安装配置

# 1 下载软件:charles-proxy-4.5.6-win64.msi
# 2 一路下一步安装
# 3 打开软件,输入sn码破解

4.3 使用charles抓取手机http包

# 配置步骤
【电脑】安装并运行抓包工具 charles
【手机】配置手机系统代理

4.3.1 配置模拟器抓包

# 1  打开charles,点击:proxy--》proxy Settings---》如下图1
# 2 打开charles,点击:help--》Local ip address-->查看本机地址--》下图2--》
或执行命令查看:
win:ipconfig
mac:ifconfig
# 我的是192.168.1.173
# 3 打开mumu模拟器---》设置--》wlan---》长按---》配置代理





4.3.2 配置真机抓包

# 1  打开charles,点击:proxy--》proxy Settings---》如下图1
# 2 打开charles,点击:help--》Local ip address-->查看本机地址--》下图2--》
或执行命令查看:
win:ipconfig
mac:ifconfig
# 我的是192.168.1.173
# 3 打开真机---》设置--》wlan---》长按---》配置代理

4.4 使用charles抓取手机https包(手机需要root)

4.4.1 模拟器安装charles证书

手机或模拟器只能抓取http请求的数据包,https无法抓取。
想要抓取,就需要在手机上安装charles的证书。 ### 注意:
安卓7 以下设备,安装完证书就可以使用,不用移动证书
安卓7以上设备,安装完证书后,为用户证书,必须把用户证书,移动成系统证书,需要借助于magisk刷move cert模块,需要root权限
###### 模拟器安装(模拟器版本低于7,不需要做证书迁移) ######
# 1 打开charles--》help---》SSLProxying---》InstallCharles Root Certificate on a Mobile...
# 2 访问网址 chls.pro/ssl
# 3 手机设置完代理,才能访问
# 4 下载安装证书
# 5 就可以抓取http的包了 #https://mumu.163.com/help/20230517/35048_1088553.html



4.4.2 真机安装charles证书

# 1 真机配置好代理后
# 2 浏览器访问:chls.pro/ssl
# 3 下载后,手机打开:安全---》加密与凭据---》安装证书---》安装完成
# 4 手机打开:安全--》加密与凭据---》信任的凭据
-此时可以看到用户证书和系统证书









4.4.3 用户证书和系统证书解释

在 Android 系统中,有两种类型的证书:用户证书(User Certificates)和系统证书(System Certificates)。

用户证书(User Certificates):用户证书是由特定用户生成或颁发的数字证书。这些证书通常用于用户身份验证和安全通信。用户证书可以用于加密和解密数据,数字签名以及建立安全连接。用户证书通常由用户自己创建,例如,用于加密电子邮件、VPN连接或身份验证。

系统证书(System Certificates):系统证书是由 Android 系统或设备制造商预装的证书。这些证书通常用于系统级别的安全功能,如应用程序签名验证、SSL/TLS 连接等。系统证书通常用于验证应用程序的真实性和完整性,以确保它们没有被篡改或恶意修改。这些证书由 Android 操作系统或设备制造商管理和维护。

系统证书包括以下几种类型:

代码签名证书:用于验证应用程序的签名,以确保应用程序的真实性和完整性。
安全通信证书:用于建立 SSL/TLS 连接,保护设备和服务器之间的通信安全。
根证书:根证书用于验证其他证书的真实性。Android 系统预装了一组根证书,用于验证 SSL/TLS 通信中的服务器证书。
用户证书和系统证书在安全和身份验证方面扮演不同的角色。用户证书由用户自己管理,用于个人身份验证和加密通信。而系统证书由操作系统或设备制造商管理,用于验证应用程序和保护系统级别的通信安全。

4.4.4 把用户证书转成系统证书

# 1 将move cert压缩包传到手机(任意好找的一个目录 `/sdcard/Download/`)
adb push /Users/lqz/soft/movecert-1.9-4.zip /sdcard/Download
# 2 使用面具,刷入
按照下图步骤
# 3 重启手机
# 4 手机打开:安全--》加密与凭据---》信任的凭据
-此时可以看到用户级别证书移动到系统级别了
# 5 此时可以愉快抓https包了







5 反编译工具

5.1 常见反编译工具

#1 把apk反编译成java代码
#2 常见的反编译工具:jadx(推荐)、jeb、GDA(用一下)
#3 反编译工具依赖于java环境,所以我们安装jdk

5.2 JDK环境安装

# 1 使用jdk8---》jdk 最新 21
-公司里80%以上,java开发,还在用8

5.2.1 win平台安装

# 1 下载jdk-8u371-windows-x64.exe
# 2 双击安装,选择安装路径

5.2.2 mac平台安装

# 1 下载jdk-8u371-macosx-x64.dmg
# 2 双击安装

5.2.3 验证安装成功

java -version

5.3 安装jadx

# 1 官网
https://github.com/skylot/jadx/releases
# 2 最新
1.5.0
# 3 如果上面没装jdk,下载第三个
-装了jdk,也可以用第三个,只不过,不用你刚刚装的jdk了
# 4 用最新:1.5.0
# 5 也会用1.4.7版本



5.3.1 安装

## 1  安装新版本 解压即用:可以看到,它带了个jre
## 2 1.2.0 版本安装和使用
解压:bin目录下
-jadx-gui.bat # win 运行,双击即可
-jadx-gui # max上双击它,运行
后期某个app会用这个版本

关于ADB-数据包抓取-反编译工具(手机刷机使用)的更多相关文章

  1. 6 wireshark 安装使用 数据包抓取

    1.wireshark安装 2.开始使用 3.界面详情 4. 数据包抓取 5.过滤数据

  2. HTTPS数据包抓取的可行性分析

    HTTPS数据包抓取的可行性分析 相信只要是从事软件开发, 多多少少都会涉及到数据包的抓取.常见的有网页数据抓取(即网页爬虫),应用程序数据包抓取等.网页数据抓取比较简单, 在chrome下可以非常方 ...

  3. linux-网络数据包抓取-tcpdump

    用法格式: tcpdump [-i 网卡]  [选项]  '表达式' 选项说明如下: -i:interface 监听的网卡. -nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和 ...

  4. 大众点评评论数据抓取 反爬虫措施有css文字映射和字体库反爬虫

    大众点评评论数据抓取  反爬虫措施有css文字映射和字体库反爬虫 大众点评的反爬虫手段有那些: 封ip,封账号,字体库反爬虫,css文字映射,图形滑动验证码 这个图片是滑动验证码,访问频率高的话,会出 ...

  5. 网络包抓取开发包 Npcap

    Npcap 是 Nmap 项目的网络包抓取库在 Windows 下的版本. Npcap 是致力于采用 Microsoft Light-Weight Filter (NDIS 6 LWF) 技术和 Wi ...

  6. [Python] 糗事百科文本数据的抓取

    [Python] 糗事百科文本数据的抓取 源码 https://github.com/YouXianMing/QiuShiBaiKeText import sqlite3 import time im ...

  7. 使用python和tableau对数据进行抓取及可视化

    使用python和tableau对数据进行抓取及可视化 本篇文章介绍使用python抓取贷款及理财平台的数据,并将数据拼接和汇总.最终通过tableau进行可视化.与之前的python爬虫文章 不同之 ...

  8. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...

  9. myeclipse2014如何添加源码反编译工具插件

    Eclipse下的Java反编译插件:Eclipse Class Decompiler,整合了目前最好的2个Java反编译工具Jad和JD-Core,并且和Eclipse Class Viewer无缝 ...

  10. Android反编译工具

    1:先安装androidfby工具 2:安装jdk并设置环境变量 3:下载一个apk数据包 4:打开反编译工具页面,点击"浏览"找到所要测试的apk包 5:反编译成功之后,会生成相 ...

随机推荐

  1. 运用myabits

    要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可. 如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中: ...

  2. SpringMVC - 谈谈你对SpringMVC的理解

    谈谈你对 Spring MVC 的理解? 普通人:Spring MVC 它是一个MVC框架吧,就是,我们可以使用Spring MVC来开发Web应用...呃 它是基于Servlet上的一个扩展,就是它 ...

  3. php获取详细访客信息,获取访客IP,IP归属地,访问时间,操作系统,浏览器,移动端/PC端,环境语言,访问URL等信息

    问题描述:需要获取访客访问网站信息 1.代码示例与说明: <?php header("Content-Type: text/html; charset=utf-8");    ...

  4. vue3项目中环境变量使用技巧

    在Vue 3项目中,环境变量是管理不同环境下配置的强大工具.以下是一些关于如何在Vue 3项目中有效地定义.访问和使用环境变量的技巧,以及如何在不同环境下管理这些变量的最佳实践. 一.定义环境变量 在 ...

  5. 使用QT开发远程linux服务器过程

    1.添加设备为通用linux 2.设置ip用户名 3.创建私钥文件,原来有的qtc那俩个文件删掉. 4.部署公钥,前提是测试链接要出现成功 5.在kits里添加编译环境设置编译器为32位或者64 6. ...

  6. try except 案例

    def to_split(df): # 删除不符合加班统计的记录 try: df.dropna(subset=['姓名'], inplace=True) hang_index = df[df['加班信 ...

  7. AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现

    引言 在当今这个数据爆炸的时代,信息的快速存储与高效检索已经成为技术领域的核心挑战.随着人工智能(AI)和机器学习(ML)的迅猛发展,向量存储和相似性搜索技术逐渐崭露头角,成为处理海量数据的利器.对于 ...

  8. FastAPI 自定义参数验证器完全指南:从基础到高级实战

    title: FastAPI 自定义参数验证器完全指南:从基础到高级实战 date: 2025/3/11 updated: 2025/3/11 author: cmdragon excerpt: 本教 ...

  9. Web前端入门第 17 问:前端开发编辑器及插件推荐

    HELLO,这里是大熊学习前端开发的入门笔记. 本系列笔记基于 windows 系统. 虽然说 Web 前端开发用记事本也能玩,但正常的开发者绝不用记事本玩(大佬除外). 想想要用记事本扣一个淘宝.京 ...

  10. 最新版 Proteus 8.15 Professional 图文安装教程(附安装包)

    前言 大家好,我是梁国庆. Proteus 是世界上唯一将电路仿真软件.PCB设计软件和虚拟模型仿真软件三合一的设计平台. 本篇博主将手把手带领大家安装最新版 Proteus 8.15. 若图片加载超 ...