今日内容

1 app必备知识

1.1 逆向原理

1
2
3
4
5
6
7
8
9
10
11
12
# 安卓逆向   ---》不是ios逆向
安卓正向开发: 安卓开发工程师---》Java语法+安卓框架---》实现功能(java+C)---》写的代码 打包---》xx.apk(资源文件:图片,音频 java: .dex)


# 安卓逆向
拿到 xx.apk--->反编译(加壳,混淆)---》java+c 代码---》hook技术(验证代码)---》python还原逻辑--》发送请求获取数据


# 接单
- 淘宝开店---》挂链接---》学生,公司不会技术的职员---》拍链接---》让你帮他爬取数据
- 猪八戒网:专门的接单平台
- 闲鱼

1.2 什么是反编译-什么是hook

反编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#1  反编译是指将已编译的安卓应用程序(APK文件)转换回其源代码的过程
通常,安卓应用程序在开发过程中会经过编译,将源代码转换为可执行的二进制代码,这使得源代码不可见和难以理解。反编译的过程旨在还原应用程序的源代码,以便进行分析、理解和修改。

#2 通过安卓反编译,你可以获取应用程序的源代码,了解其实现逻辑、算法、资源文件和其他关键信息。这对于安卓应用程序的安全评估、漏洞分析、逆向工程、定制化和学习都有重要意义。


#3 在安卓反编译过程中,常见的工具和技术包括:
apktool:apktool是一款常用的开源工具,用于反编译和重新打包APK文件。它可以将APK文件解压为资源文件和Smali代码,并提供了对Smali代码进行分析和编辑的功能。

JADX:JADX是一款功能强大的开源工具,用于将APK文件转换为可读的Java源代码。它能够还原大部分Java代码,并提供源代码分析和导航功能 ###咱们选择

JD-GUI:JD-GUI是一款免费的Java反编译工具,可以将已编译的Java类文件转换为可读的Java源代码。尽管它主要用于Java反编译,但对于某些Smali代码的反编译也有一定的支持

# 4 下载和安装jadx---》跨平台--》win,mac都可以用---》可以先不做
-1 重要:需要先安装 jdk --》jdk全称:java继承开发环境---》jdk8版本
-官网下载:https://www.oracle.com/java/technologies/downloads/#java8--》注册才能下
-把我提供你的安装包,一路下一步运行:会装在 C:\Program Files\Java
-2 打开cmd创建:
java -version
打印出版本号--》成功了
-3 安装jadx--》把老师提供的zip包--》解压--》来到bin路径下
-win:双击 jadx-gui.bat
-mac: ./jadx-gui

-4 把 xx.apk 拖动到jadx中,就会反编译---》我们就能看到java代码了

Hook是什么

1
2
3
4
5
6
7
8
9
# HOOK指的是通过修改或替换目标应用程序的函数或方法来改变其行为的技术
这种技术允许开发者或黑客在不修改应用程序源代码的情况下,对其进行定制、调试、修改或篡改

# 在安卓中,常见的HOOK技术有以下几种:
动态链接库(DLL)注入:通过加载一个自定义的动态链接库来替换目标应用程序的某些函数或方法。这种方式通常需要在ROOT权限下进行,并且需要一些额外的工具和技术,如Xposed Framework或Frida。

Xposed框架:Xposed是一款强大的安卓框架,它提供了一种简单的方式来HOOK安卓应用程序。通过Xposed框架,开发者可以编写模块,用于修改或替换目标应用程序的函数或方法。

Frida框架:Frida是一款功能强大的动态分析工具,它提供了在运行时修改和HOOK应用程序的能力。通过Frida,开发者可以使用JavaScript编写脚本,动态修改目标应用程序的行为

1.3 电脑设备的选择

1
2
3
4
5
6
7
8
# win  mac 都可以用
-讲课用win
-之前讲课用mac---》后期有些app,非常大---》非常耗资源--》mac撑不住---》配了个台式机

# 最低
i5处理器,16g以上内存

# 建议搭建配置越高越好

1.4 安卓设备选择

  • 电脑安卓模拟器(网易mumu)

    1
    2
    3
    4
    5
    win: 网易mumu、逍遥、夜神、雷电(推荐3版本,不要用4版,以后抓包会有问题)
    mac: 网易mumu(暂不支持m1)

    win同学安装模拟器时,开启vt-x:
    https://mumu.163.com/include/16v1/2016/06/27/21967_625825.html
  • 安卓真机(推荐,所有内容都在真机,不是必须)

    1
    2
    3
    4
    5
    6
    7
    推荐:Pixel谷歌手机【逆向+刷自定义安卓系统+脱壳机】
    注意:购买时,必须要买解OEM锁的版本(欧版)
    -Pixel 2XL ---》17年手机--》够用--》300左右
    -Pixel 4XL ---》贵

    其他:小米手机(官方支持解BL锁)
    -小米不支持解锁了

在逆向时,你的安卓设备必须获取ROOT权限,一般想要获取ROOT的权限,必须:

  • 手机解BL锁或OEM锁
  • 刷官方系统 + 基于Magisk面具对手机进行ROOT

1.5 什么是oem锁,bl锁

1
2
3
4
5
6
7
8
9
"Pixel开启OEM锁",通常指的是在Google Pixel设备上启用了OEM锁(也称为Bootloader锁)。
OEM锁是一个安全机制,目的是保护设备免受未经授权的修改和潜在的安全威胁

# 国内的安卓手机,都加锁---》不允许用户自己刷机---》
-小米:可玩性高,运行解,后续都会不允许解
-华为:之前运行,后来不允许了

# 如何开启OEM锁,详见资料
https://www.cnblogs.com/liuqingzheng/p/17462146.html

1.6 谷歌手机扫盲

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 没有大陆版本---》国内没有---》欧版,美版, 日版。。。。
# 一定是解oem锁的---》咱们不好解


# 以下是Nexus和Pixel手机的一些常见型号、版本和发布时间的简要列表:
## Nexus手机系列:
Nexus One - Android 2.1 Eclair - 20101月发布
Nexus S - Android 2.3 Gingerbread - 201012月发布
Galaxy Nexus - Android 4.0 Ice Cream Sandwich - 201111月发布
Nexus 4 - Android 4.2 Jelly Bean - 201211月发布
Nexus 5 - Android 4.4 KitKat - 201310月发布
Nexus 6 - Android 5.0 Lollipop - 201410月发布
Nexus 5X - Android 6.0 Marshmallow - 20159月发布
Nexus 6P - Android 6.0 Marshmallow - 20159月发布
Nexus 9 - Android 5.0 Lollipop - 201411月发布
Nexus Player - Android 5.0 Lollipop - 201411月发布
## Pixel手机系列:
Pixel - Android 7.1 Nougat - 201610月发布
Pixel XL - Android 7.1 Nougat - 201610月发布
Pixel 2 - Android 8.0 Oreo - 201710月发布
Pixel 2 XL - Android 8.0 Oreo - 201710月发布 # 我用的 ,学习和接单用
Pixel 3 - Android 9 Pie - 201810月发布
Pixel 3 XL - Android 9 Pie - 201810月发布
Pixel 3a - Android 9 Pie - 20195月发布
Pixel 3a XL - Android 9 Pie - 20195月发布
Pixel 4 - Android 10 - 201910月发布 # 你可以选 800左右
Pixel 4 XL - Android 10 - 201910月发布
Pixel 4a - Android 10 - 20208月发布
Pixel 4a (5G) - Android 11 - 20209月发布
Pixel 5 - Android 11 - 20209月发布
Pixel 6和Pixel 6 Pro -20219月发布
Pixel 7a、Pixel 7 -20235月发布


# 淘宝,拼多多,闲鱼----》杨老师--》代购群--》价格不一样
成色:都是二手

# 买手机,无论那个国的版本,都要解oem锁--》买的时候,跟卖家说清楚
# 不要买别的手机,如果要买,就买:Pixel手机
# 如果就想用现在用的的安卓手机
-华为解不了
-小米:需要额外操作---》一会咱么聊如何做



# 如果买的时候,让淘宝店家刷系统
-刷安卓那个版本无所谓(默认是8.0,最高能刷到11版本): 我刷的是安卓:11版本
-一定:让它帮你root好,装 面具Magisk 软件

2 Root设备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 什么是root权限
ROOT是指获取安卓设备(手机或平板电脑)的超级用户权限,也被称为管理员或根用户权限。通过Root手机,用户可以获得对操作系统的完全控制权限,可以访问和修改系统文件、安装自定义固件、运行需要Root权限的应用程序等。

# Root权限的好处包括:
定制化:Root后,用户可以更深入地定制和个性化他们的设备,如更改主题、修改系统设置、安装自定义ROM等。
删除预装应用程序:有些设备预装了一些无法卸载的应用程序,通过Root可以删除这些预装应用程序,释放存储空间和系统资源。
安装和运行需要Root权限的应用程序:有些应用程序需要Root权限才能正常工作,例如一些备份工具、系统优化工具等。
提高性能和扩展功能:通过Root权限,用户可以进行一些系统优化和调整,以提高设备的性能和功能。
需要注意的是,Root手机可能存在一些风险和潜在的问题,包括安全性问题、失去设备保修、无法正常升级系统等。

# Root手机也可能违反设备制造商的保修条款,因此在进行Root操作之前,请先查看设备的保修政策。

# 注意:不要用你现在在用的手机root,买个备用机,来做 Pixel


### 谷歌手机叫oem锁,其他手机叫bl锁
# oem锁解了---》才能root
# 买解oem锁的手机---》带着大家刷机--》再root手机

2.1 Pixel如何root

1
2
3
4
5
6
7
# 先看,不着急做---》下次课我带大家操作---》Pixel--》扫盲用的
https://www.cnblogs.com/liuqingzheng/p/17462146.html
https://www.cnblogs.com/liuqingzheng/p/17462127.html


# 查看手机是否解oem锁了
一般带BL锁的手机都是可以进如fatsboot模式的,常见按键操作就是关机状态 音量下键+开机键

image-20231111221642343

2.2 小米手机root方式

正常拿到一部手机后需要做:

  • 第1步:申请解BL锁

    1
    2
    注册小米账号、手机和账号绑定、申请解锁,申请后一般需等7天才能成功解锁。
    注:淘宝上有人可以秒解,曾有同学新手机被搞的无法开机,又去返厂(请谨慎)。
  • 第2步:root,手机root就是获得最高权限,app逆向必备,一般现在的手机root有2种方式:

    • FastBoot刷Magisk,一般分区无法挂载(system目录)【推荐】

      1
      2
      https://www.bilibili.com/video/BV1er4y1C7wU/
      https://magiskcn.com/
    • 淘宝找人代刷(30-50左右)

注意:其他机型,请自行解决root问题

3 python虚拟环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 后期--》写python代码
# python解释器---》跟我统一:python3.9


# 假设开发了一个软件---》要运行,需要装requests 2.31.0
用了 requests 2.31.0
# 假设有个老软件---》要运行,需要装requests 1.1.0
用了 requests 1.1.0

# 再解释器上,同时只能有一个版本的requests


# 方案:多个第三包,版本不一致的问题

# 有了虚拟环境---》就把它当做,装了多个解释器

# 真实环境和虚拟环境都有的包,优先使用虚拟环境包的版本
不是优先用谁的,使用那个环境运行python代码,它就是使用那个环境的第三方包

image-20231111223000001

7.1 pycharm如何创建虚拟环境

image-20231111223550361

image-20231111223819938

image-20231111223949346

7.2 导出项目依赖

1
2
3
4
5
6
7
8
9
# 写好了代码-把代码发送给别人---》使用了一些第三方库,别人是不知道的
# 以后把项目给别人,在项目根路径下,一定要有一个 requirements.txt 的文件,里面放了当前项目所有的依赖

# 这个文件可以自己写(手写)
# 自动生成(虚拟环境下)
pip freeze > requirements.txt

# 别人拿到你的项目后直接执行
pip install -r requirements.txt # 把这个项目的依赖安装好---》直接运行即可

__END__