安卓逆向基础

一、dex反编译工具安装

1、jadx

https://github.com/skylot/jadx/releases/tag/v1.3.2

2、gda

http://www.gda.wiki:9090/

3、jeb 在已上两个工具不行的情况下

二、AndroidStudio下载、安装、配

https://developer.android.google.cn/studio/
配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. AndroidSDK下载、目录介绍
  2. AndroidStudio配置文件所在位置

a).gradle .android
C:\Users\Administrator
b)AndroidStudio4.2
C:\Users Administrator\AppDatalLocal\Google

  1. AndroidStudio工程的创建

1、adb的作用
2、adb构成
a)client端,在电脑上,负责发送adb命令
b)daemon守护进程adbd,在手机上,负责接收和执行adb命令
c)server端,在电脑上,负责管理client和daemon之间的通信
3、adb工作原理
a)client端将命令发送给server端
b)server端会将命令发送给daemon端
c)daemon端进行执行
d)将执行结果,返回给server端
e)server端将结果再返回给client端
4、
超级adbd
adb root
adb remount

adb常用命令

adb/adb help/adb --help
adb version 显示adb版本和路径
adb start-server 启动server
adb kill-server 停止server
adb devices 显示连接的设备列表
adb install xxx.apk 通过adb安装app
adb install-r xxx.apk
adb uninstall 包名
adb push xxx xxx
adb pullxxx xxx

基本抓包环境

1.抓包工具分类
全局抓包工具 Http v7、Http debugger pro
代理抓包工具 Charles、Fiddler
VPN抓包工具 HttpCanary
网卡抓包工具 WireShark
手机抓包工具 tcpdumpHook抓包工具 r0Capture
2. Charles的安装与配置
前置环境
配置JDK
启用超级管理员
关闭防火墙
下载 https://www.charlesproxy.com/download/
注册
https://www.zzzmode.com/mytools/charles/
抓包的开启、停止、清除
代理端口设置 Proxy->Proxy Settings
在这里插入图片描述

socksdroid的安装与配置
Connection这一栏填入本机ip和Charles上设置的代理port右上角打开VPN
Charles会弹出对话框,是否允许设备连接,点击Allow
4.抓取HTTP流量(抓不到关闭防火墙)

5.上述抓包配置的注意事项
5.1手机和电脑同在一个网段下
5.2 电脑能够ping通手机
5.3 手机能够ping通电脑
5.4 电脑和手机ping不通,可以查看下路由器的一些设置
比如ap隔离,错连到访客网络等

抓https流量步骤

1在这里插入图片描述在这里插入图片描述
2、adb push xx.pem /sdcard
3、然后手机设置–安全–加密与凭据–从存储设备安装—

基本控件的使用

  1. Button
    控件id->在代码中方便的获取控件四种点击事件绑定方式
    Log
    Toast
  2. TextView
    strings.xml
    public.xml
  3. EditTextEditText内容的获取与设置
    TextUtils
    str.trim()

基本抓包环境

  1. HttpCanary的安装、配置与使用
    2.rOcapture介绍
    一个Hook抓包脚本,主要原理就是Hook了一些SSL相关的系统函数GitHub地址
    https://github.com/r0ysue/r0capture
    rOcapture的使用方式
    先安装依赖 pip install hexdump

attach模式,抓包内容可以保存成pcap文件供后续分析
python3 r0capture.py -U com.qiyi.video -v -p igiyi.pcap
spawn模式
python3 r0capture.py -U-f com.giyi.video -v

  1. WireShark
    如果保存成了pcap文件,可以使用这个工具来打开

FridaHook环境搭建

Hook可以用来做什么
可以用来判断app执行某个操作的时候,是否经过我们的怀疑的这个函数可以用来修改被hook函数的运行逻辑
可以用来在运行过程中,获取被hook的函数传入的具体的参数和返回值可以用来主动调用app中的某些函数

2.Python3.8 64bit的下载和安装
https://www.python.org/downloads/3.8
64bit的任意一个版本都行,不用管最后的小版本

3. frida的安装
pip install frida = =14.2.18
pip install frida-tools==9.2.5(装frida-tools时会自动安装frida)

4、如何判断frida是否安装成功
cmd中执行frida --version,能打印出版本号说明frida-tools没有问题
cmd中执行python,进入控制台import frida,能成功导包,说明frida库没有问题

5. frida的卸载
pip uninstall frida
pip uninstall frida-tools
whl包的离线安装
pip install frida-14.2.18-cp38-cp38-win amd64. whl
pip install frida tools-9.2.5-py3-none-any.whl

7.frida版本、Android系统版本与Python版本
frida12.3.6 Android5-6
Python3.7 frida12.8.0
Android7-8 Python3.8
frida14+ Android9+ Python3.8
frida15+ Android12也可以用

8.frida安装指定版本
a)先安装指定版本frida
6)再安装指定版本frida-tools
c)frida-tools版本的查看
https://github.com/frida/frida/releases
https://github.com/frida/frida/releases/tag/12.3.6

9.webstorm与nodejs的安装

10.frida代码提示的配置(在jsproject目录下安装)
npm i @types/frida-gum
不区分大小写设置
在这里插入图片描述

11.frida-server的配置
frida-server的运行平台要选对frida-server的版本与frida的版本要匹配指定版本frida-server的获取
https://github.com/frida/frida/releases/tag/12.3.6
通过usb连接真机不需要转发端口,通过ip连接需要转发,连接模拟器也需要转发

adb forward tcp:27042 tcp:27042
启动服务端
在这里插入图片描述

启动
在这里插入图片描述
1.找到一些疑似关键函数,可以通过hook来确认app执行某个操作的时候,是否调用了它们
2.如果没有触发这些函数,考虑以下问题
a)app在执行这个操作的时候,真的没有调用这个函数,换一个其他的关键函数
b)代码写错了,导致hook函数没执行
c)一般可以通过主动调用上层函数,来触发这些hook函数
3.如果触发了这些函数,可以通过hook来打印执行过程中传入函数的参数和返回值
4.frida -U-F-l HookDemo.js-U 代表远程USB设备-F 代表附加到最前的这个app-1后面指明需要加载的JS脚本
5.写好的js脚本要注入手机端,并不是在Node.js中使用,所以只能用v8和fridaAPl支持的代

6.POST分析技巧
b)分析步骤
c)分析封包数据来源
服务器响应中返回
固定不变的或者可以直接写死的(同一家公司对app区分的产品id等appld)app中随机生成(nonce)或者加密的
代码比较容易出错的地方
a)提交的数据该编码的没有编码(有些二次编码)
b)提交的数据不该写死的写死了
替换数据的时候不够仔细
d)忽略了一些看似没用的关键请求
e)提交请求的步骤弄错了
f) 延迟
8.纠错方法
a)关键变量输出
断点调试b)
c)对自己的程序进程抓包,和app发出去的数据对比
9.更多HTTP数据提交的相关内容,就需要你们自己学习了,安卓协议逆向主要还是复现算法

相关推荐

  1. apk逆向

    2024-04-10 14:48:06       49 阅读
  2. 为什么逆向手机要root

    2024-04-10 14:48:06       37 阅读
  3. 逆向之-Xposed RPC

    2024-04-10 14:48:06       14 阅读
  4. 基础--application详解

    2024-04-10 14:48:06       28 阅读
  5. 基础面试题

    2024-04-10 14:48:06       16 阅读
  6. 逆向笔记之AndroidManifest.xml篇

    2024-04-10 14:48:06       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-10 14:48:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-10 14:48:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-10 14:48:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-10 14:48:06       18 阅读

热门阅读

  1. 多线程(42)无锁编程

    2024-04-10 14:48:06       13 阅读
  2. react api:forwardRef

    2024-04-10 14:48:06       12 阅读
  3. win10本地安装MySQL数据库

    2024-04-10 14:48:06       14 阅读
  4. u盘在linux上只能读不能写

    2024-04-10 14:48:06       16 阅读
  5. Jones矩阵符号运算

    2024-04-10 14:48:06       15 阅读
  6. 【Vue】动态Icon组件(变量值作为组件名)

    2024-04-10 14:48:06       13 阅读
  7. 【Vue】组件

    2024-04-10 14:48:06       12 阅读
  8. web蓝桥杯真题:年度明星项目

    2024-04-10 14:48:06       12 阅读
  9. c++ 对象切片

    2024-04-10 14:48:06       13 阅读
  10. 浅谈对线程的理解

    2024-04-10 14:48:06       14 阅读
  11. 积分学<2>——换元积分法和分部积分法

    2024-04-10 14:48:06       12 阅读