news 2026/10/30 4:23:17

Android Studio_逆向

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android Studio_逆向

课时8:虚拟环境-pycharm

文件->新建项目

装依赖:pycharm右键->打开于->终端->例:pip install resquests

课时13:win安装adb

把adb的压缩包解压到D:\MysoftWare\az\SDK

添加环境变量(用户变量或系统变量)path下新建:D:\MysoftWare\az\SDK\platform-tools

cmd->adb version->能看到adb的版本就是安装好了

课时15:环境变量作用

#无论在mac还是win上,都需要加环境变量#环境变量是什么?
环境变量是操作系统中用于存储系统级别配置信息的一种机制,可以为应用程序提供统一的配置和运行环境
#环境变量有什么作用?
-解压的压缩包中有 adb.exe 可执行文件,想在任意路径下都能找到并且执行这个可执行文件-打开cmd,默认路径是:c: users(Administrator
-这个路径下没有adb.exe
-在cmd窗口中﹐敲adb (adb.exe 后缀可以不写),正常来讲是没有任何返回,会报错,说命令找不到-但是敲I有反应,原因就是: adb.exe所在的路径,已经被我们加入到环境变量了,它就能找到了
-如果一个可执行文件的路径没有被加入到环境变量,想执行这个可执行文件,必须进入到这个可执行文件所在路径才能执行

课时16:用户环境变量和系统环境变

#用户环境变量和系统环境变量
-操作系统分用户,可以多用户登录
-如果把环境变量配置在当前用户下:只针对于当前用户生效-如果把它配置在系统环境变量下:所有用户都会生效
#同学下载了: scrcpy-win64安卓投屏到电脑上的软件---》电脑操作手机---》需要adb--》这个软件中自带了adb,不要把它混了--—-》
把这个的环境变量往下放---》优先找上面的把这个软件中的adb改成别的名字--》就不冲突了

课时18:adb掌握的常用命令

#至此,咱们就可以在cmd中通过adb命令,操作手机了
#知道的命令:
#1开启和关闭adb服务(可以不开启,敲任意一个adb命令,就会自动开启)

adb start-server
启动ADB
adb kill-server
关闭ADB
#2列出电脑上链接的手机
adb devices
# List of devices attached#801KPUU1367574device
#3上传下载文件(了解)#把电脑文件传到手机上
adb -s 设备id号 push c: \demo .txt/ sdcard/ download
adb -s 801KPUU1367574 push电脑上文件的路径/手机上的路径
adb push D:\爬虫逆向10期\day02\软件\apps\Magisk-v26.4.apk /sdcard/down1oad
#把手机上文件下载到电脑上
adb pull /sdcard / download/boot.img ./
#4在手机上安装和卸载软件
adb install软件路径#安装
adb uninstall软件包名#不了解什么是包名,先略过
adb shell pm list packages# 查看手机上装的所有软件包名

课时19:adb其他命令

#1.查看手机处理器平台
adb -s 设备id号 getprop ro.product.cpu.abi
adb shell getprop ro.product.cpu.abi
#arm64-v8a后面给手机下软件,需要知道这个型号
#2.安卓手机,就是类_unix系统,我们可以进入到手机,执行 1inux命令―(创建,删除文件。。。)
-进入到手机
adb shell #命令窗口,就是进入到手机内了,敲的命令,就是操作手机了#taimen : / $
-查看当前目录下有哪些文件和文件夹的命令ls
-切换到某个目录下
如果你不是root权限,有的文件夹是进不去的
退出手机命令exit
#3.其它命令
查看手机设备:adb devices
查看手机处理器平台:adb -s adb-10CE2N16GR000NC-LZbR6F._adb-tls-connect._tcp shell getprop ro.product.cpu.abi
#arm64-v8a 后面给手机下软件,需要知道这个型号
查看设备型号:adb -s 192.168.0.101:40837 shell getprop ro.product.model
查看电池信息: adb -s 192.168.0.101:40837 shell dumpsys battery
查看设备ID: adb she11 settings get secure android_id
查看设备IMEI: adb shell dumpsys iphonesubinfo
查看Android版本: adb -s 192.168.0.101:40837 shell getprop ro.build.version.release
查看手机网络信息:adb shell ifconfig
查看设备日志: adb logcat
重启手机设备: adb reboot
安装一个apk: adb install /path/demo.apk
卸载一个apk: adb uninstall <package>
查看系统运行进程: adb she11 ps
查看系统磁盘情况: adb she11 ls /path/
手机设备截屏: adb shell screencap -p /sdcard/aa.png
手机文件下载到电脑: adb pull /sdcard/ aa. png ./
电脑文件上传到手机: adb push aa. png /data/loca1/
手机设备录像: adb shell screenrecord / sdcard/ ab.mp4
手机屏幕分辨率:adb -s 192.168.0.101:40837 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

豆包-ADB 连接安卓手机常用命令大全

ADB(Android Debug Bridge)是安卓调试工具,先开启手机的「开发者选项 + USB 调试」,才能使用以下命令连接手机。

一、基础前提(必须先做)

  1. 手机打开设置 → 关于手机 → 连续点击版本号 7 次,开启开发者选项
  2. 返回设置 → 开发者选项 → 打开USB 调试
  3. 用数据线连接电脑和手机,手机弹窗选择允许 USB 调试

二、常用连接命令

1. USB 有线连接(最稳定)

bash

运行

# 查看已连接的设备(核心命令) adb devices # 重启ADB服务(连接异常时用) adb kill-server adb start-server
  • 输出device表示连接成功
  • 输出unauthorized表示手机未授权调试

2. WIFI 无线连接(无需数据线)

方法 1:同一局域网下(推荐)
  1. 手机和电脑连同一个 WIFI
  2. 先用 USB 线连接,执行命令查看手机 IP:

bash

运行

adb shell ifconfig | grep inet
  1. 设置 TCP 端口(默认 5555)

bash

运行

adb tcpip 5555
  1. 无线连接(替换为你的手机 IP)

bash

运行

adb connect 192.168.1.100:5555
  1. 断开无线连接

bash

运行

adb disconnect 192.168.1.100:5555
方法 2:无 USB 线直连(部分手机支持)

手机开发者选项中打开网络调试,直接用手机显示的 IP + 端口连接:

bash

运行

adb connect 手机IP:端口

三、常用 ADB 操作命令(连接后使用)

bash

运行

# 安装APK adb install 安装包路径.apk # 覆盖安装(保留数据) adb install -r 安装包路径.apk # 卸载应用 adb uninstall 包名 # 查看手机日志 adb logcat # 传输文件到手机 adb push 电脑文件路径 /sdcard/ # 从手机拉取文件到电脑 adb pull /sdcard/文件名 电脑保存路径 # 进入手机命令行 adb shell # 重启手机 adb reboot

四、常见问题解决

  1. adb devices 无设备
    • 检查 USB 调试是否开启
    • 更换数据线 / USB 口
    • 重启 ADB 服务
  2. adb connect 连接失败
    • 确保电脑和手机在同一局域网
    • 防火墙关闭 5555 端口
    • 重新执行adb tcpip 5555

总结

  1. 有线连接:adb devices查看设备
  2. 无线连接:先adb tcpip 5555,再adb connect 手机IP
  3. 连接异常:adb kill-server && adb start-server重启服务

C:\Users\Administrator>adb shell adb.exe: more than one device/emulator

这个错误的意思是:你的电脑同时连接了多台安卓设备 / 模拟器,adb shell不知道要连哪一个,所以报错了。

解决方法很简单:先查看设备列表,再指定设备编号执行命令。

一步一步解决

1. 先查看所有连接的设备

运行命令:

bash

运行

adb devices

你会看到类似这样的结果:

plaintext

List of devices attached 1234567890abcdef device emulator-5554 device

左边那串字符 / 数字就是设备序列号。

2. 指定设备执行 adb shell

格式:

bash

运行

adb -s 设备序列号 shell

例子:

bash

运行

adb -s 1234567890abcdef shell

最常用的完整命令模板

bash

运行

# 查看设备 adb devices # 进入指定设备的 shell adb -s 设备号 shell # 安装APK到指定设备 adb -s 设备号 install xxx.apk # 重启指定设备 adb -s 设备号 reboot

如果你只想保留一个设备

  1. 拔掉多余的 USB 手机
  2. 关掉多余的模拟器
  3. 重启 adb 服务:

bash

运行

adb kill-server adb start-server

然后再用adb shell就正常了。

总结

  • 报错原因:同时连了多个设备
  • 解决:adb devices查看编号 →adb -s 编号 shell
  • 偷懒:只留一个设备,重启 adb 服务

课时27:配置手机代理

【电脑端】
查看自己电脑的IP:
方法一:Charles->Help->Local lP Addresses
方法二:CMD->ipconfig->无线局域网适配器 WLAN:IPv4 地址
端口号:
Charles->Proxy->Proxy Settings->勾选Suport,Enable。Port:8888
Charles- 弹出对话框-Allow(允许代理)

【手机端】
开发者模式,开启调试
打开无线网->代理改手动->主机名:电脑IP,端口:8888

课时28:抓包-模拟登录某app

只抓取手机包取消Windows包:Charles->Proxy->Windows Proxy取消勾选
Filter过滤,Raw二进制

课时29:配置模拟器抓取http包

课时30:手机安装用户证书

#【charles上)
打开char1es--》 help---》SSLProxying---》Insta11charles Root certificate on a
#【手机上】
-0之前代理已经配置好了,才能干下面的事情
-1 浏览器中打开一个网址----》下载证书
chls.pro/ssl
-2自动下载证书
-3手动安装证书
-设置--搜索--》搜索―证书--》ca证书--ca证书--》仍然安装--》选中刚刚下载的证书
-4查看证书
手机打开:安全--》加密与凭据---》信任的凭据
-此时可以看到用户证书和系统证书

课时31:用户证书做成系统证书

#1把老师给的: movecert-1.9-4.zip,发送到手机上
adb push ./movecert-1.9-4.zip / sdcard/Down1oad
#2使用面具刷入
打开面具--模块---》从本地安装--》找到zip---》确认安装---》重启
就能看到装的movecert
原来装的用户证书被移动走了
#3重启手机--》证书就被移动到系统证书下了

课时141:第一个app之java编写-点击换图片(我是Kotlin编写)

res/drawable 存放图片的地方

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/light" android:orientation="vertical"> <ImageView android:layout_width="match_parent" android:layout_height="300dp" android:src="@color/green" android:id="@+id/image"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Click me" android:layout_marginTop="30dp" android:id="@+id/button01" /> </LinearLayout> </LinearLayout>
package com.example.htp import android.os.Bundle import android.provider.ContactsContract import android.widget.ImageView import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import android.widget.Button//自己加上的 import android.widget.Toast//自己加上的 class MainActivity : AppCompatActivity() { //因为img 和button可能会在当前类的别的方法中使用,所以,这里定义为成员变量 private lateinit var image: ImageView private lateinit var button01: Button private var id = R.drawable.a//拿到a这张图片的id // var:可变变量(可以多次修改赋值) //val:只读变量(只能赋值一次,类似 Java 的final) override fun onCreate(savedInstanceState: Bundle?) { //手机上,来到这个页面,就会执行这里的代码 super.onCreate(savedInstanceState) enableEdgeToEdge() //加载布局 R代表资源文件 setContentView(R.layout.activity_main) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } //从页面中找出 图片标签 和按钮标签 val image = findViewById<ImageView>(R.id.image) image.setImageResource(id)//放在图片标签中 val button01 = findViewById<Button>(R.id.button01) //给按钮添加点击事件 button01.setOnClickListener { Toast.makeText(this, "点击了按钮", Toast.LENGTH_SHORT).show() if(id==R.drawable.a){ id=R.drawable.b } else if(id==R.drawable.b){ id=R.drawable.c } else if(id==R.drawable.c){ id=R.drawable.a } image.setImageResource(id) } } }

课时35:反编译工具和jdk介绍

#反编译工具作用
-安卓app---》需要进行反编译成java代码
#反编译工具选择
常见的反编译工具: jadx(推荐)、jeb、GDA(后面也会有)
反编译工具依赖于java环境,所以我们安装jdk
-jdk:JDK Development Kitjava集成开发工具包--》做java开发需要用
-内部包含: jre和jvm
-jre: java runtime environment java运行环境--》运行java项目但不做开发
-内部包含 jvm
-jvm: java虚拟机,java的字节码文件必须要运行在jvm上--》java项目运行,必须有它

课时36:安装jdk

#jdk有版本,最新21
#但是大部分公司的java开发,还是在jdk8上开发
#我们反编译回来的java代码,都是jdk8及之前的代码形式
#咱们安装jdk 8,需要去官网下载
# java本身是sun公司推出的,后来被甲骨文收购了
https://www.oracle.com/java/technologies/downloads/
#你们不需要下载了,直接拿老师给的
#win平台安装
#1下载jdk-8u371-windows-x64.exe
#2双击安装(安装路径必须没有中文)
#3要不要装jre,我们也装(路径默认)
D:\Program Files\avaljdk-1.8 目录下既有jdk,又有jre

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

###测试是否装成功
cmd中输入:java -version
输出:
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode)

课时37:jdax新旧版本安装

#最新1.4.7 ---》我们用
#还用个老版本:1.2.0
#后面咱们破解的app---》用1.4.7会反编译不全---》用1.2.0反编译全

#安装1.2.0
-解压
-copy到某个目录下:D:\soft\jadx-1.2.0\bin-win: jadx-gui.bat #双击运行
-mac:jadx-gui#双击运行-发送到桌面快捷方式
#安装1.4.7
-解压:jadx-gui-1.4.7-with-jre-win.zip-copy到某个路径下
-双击打开: jadx-gui-1.4.7.exe

课时39:抓包-反编译定位代码

#1打开jadx,把apk,拖到到软件中
#2通过搜索,找到密码加密位置--->按什么关键字搜很重要,如果关键字不对,位置就搜不到
pwd
"pwd"pwd"put("pwd
#3搜索url/login.ashx(抓包抓到的请求登陆的链接地址)
#4找到后,在变量上,右键--》查找用例---》查找谁使用了这个变量
#5点击跳到声明 --》java写的md5加密
#6用python复现加密过程

课时41:hook和hook框架

#hook是什么
Hook框架是一种技术,用于在运行时拦截和修改应用程序的行为。
通过Hook,你可以劫持应用程序的方法调用、修改参数、篡改返回值等,以达到对应用程序的修改、增强或调试的目的
#常见的hook框架有哪些?
xposed Framework: Xpqsed 是一个功能强大的开源Hook框架,可以在不修改应用程序源代码的情况下,对应用程序进行各种修改。它允许你编写模块来拦截和修改应用程序的方法调用,修改应用程序的行为和逻辑。
Frida: Frida 是一个跨平台的动态 Hook框架,支持安卓和其他操作系统。它提供了一个强大的 avascript
API,可以在运行时对应用程序进行Hook,包括方法拦截、参数修改、调用注入等。Frida可以用于安全研究、逆向工.程和应用程序调试等方面。

课时42:frida手机和电脑端安装

#注意:
1.电脑端,需要安装python的解释器环境--》【3.9】--》安装frida模块
2.手机端,需要安装frida-server
3.python解释器环境中的frida模块版本必须和手机端使用的frida-server版本要一一对应

一.电脑端安装模块
#1 python解释器环境安装好
#2 下载frida相关模块(有版本--》默认安装最新--》我虚拟环境下安装)
pip install frida==16.1.7
pip install frida-tools==12.3.0
二.手机端安装frida-server
#1下载地址: https://github.com/frida/frida/releases
-有很多很多平台架构
#2查看手机架构(手机连接到电脑上)
adb shell getprop ro.product.cpu.abi
#arm64-v8a
#3下载软件
#4解压(不要用压缩包放到手机上,一定要解压开>
frida-server-16.1.7-android-arm64
#5把frida-server-16.1.7-android-arm64推送到手机上 /data/local/tmp
adb push ./frida-server-16.1.7-android-arm64 /data/local/tmp
#6命令操作(查看是否顺利上传)
>adb she1l#进入手机
taimen: / $ su #申请获取超级用户权限,手机端点允许,不要点拒绝
taimen:/ ##看到是#表示已经得到了超级用户权限﹐$表示不是超级用户
taimen:/ # cd /data/1ocal/tmp
taimen :/data/loca1/tmp # ls
#能看到咱们推送上来的frida-server
# frida-server-16.1.7-an
#7赋予可执行权限(win连接手机中,来到相应目录下,执行命令)
chmod +x frida-server-16.1.7-an
ls -al #会有x权限了
#8运行frida-server(如果不加执行权限,运行不了)
./frida-server-16.1.7-an #敲回车就可以执行了,卡主,表示启动了,如果没启动会报错
#9如果出现报错,基本上重启手机就能解决
adb shell setenforce 0 #在电脑上运行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/30 4:22:35

PLC学习箱的实验

PLC学习箱的实验 文章目录&#xff1a; 文章目录PLC学习箱的实验0-引言1-200smartPLC与台达VFD-M变频器通过485控制&#xff08;视频的教程&#xff0c;实际学习箱的变频器型号不是这个&#xff0c;与学习箱里变频器型号(VFD-L)一致的视频是另外一个&#xff09;2-台达变频器多…

作者头像 李华
网站建设 2026/10/30 4:17:49

小爱音箱自定义固件终极指南:完全掌控你的开源语音助手

小爱音箱自定义固件终极指南&#xff1a;完全掌控你的开源语音助手 【免费下载链接】xiaoai-patch Patching for XiaoAi Speakers (小爱音箱), add custom binaries and open source software. Tested on LX06, LX01, LX05, L09A 项目地址: https://gitcode.com/GitHub_Trend…

作者头像 李华
网站建设 2026/10/30 4:13:30

临床试验估计目标:从统计技巧到临床问题的数学翻译

简介&#xff1a;本资源是《ICH E9 R1估计目标及敏感性分析蓝皮书》官方中文版PDF文档&#xff0c;面向临床试验统计师、药物研发人员、CRA/CRC、监管事务专员及生物统计专业师生&#xff0c;聚焦解决临床试验中估计目标定义模糊、敏感性分析缺失导致结果解释力不足等核心问题。…

作者头像 李华
网站建设 2026/10/30 4:13:17

Qwythos-9B-Claude-Mythos-5-1M-GGUF:革命性1M上下文推理模型完全解析

Qwythos-9B-Claude-Mythos-5-1M-GGUF&#xff1a;革命性1M上下文推理模型完全解析 Qwythos-9B-Claude-Mythos-5-1M-GGUF是一款基于Qwen3.5-9B开发的革命性1M上下文推理模型&#xff0c;它通过全参数后训练在超过5亿个高质量Claude Mythos/Claude Fable轨迹标记上&#xff0c;实…

作者头像 李华