APP逆向入门(adb和Charles抓包)

day02 逆向入门

目标:了解app逆向的流程和必要的环境准备。

课堂随笔

day02 逆向入门

今日概要:
    - 逆向步骤
    - adb电脑管理手机(安装、下载)
    - 抓包

1.逆向必备步骤
    - 手机安装APK
    - 抓包分析
    - 反编译apk得到java + 分析java定位算法位置 + Hook
    - Python代码算法还原

2.手机安装APK
    - 下载
        - 应用市场,下载手机
        - Web平台(豌豆荚)   老版本     可用版本    最新版本【电脑】
    - 安装
        - apk文件发到手机,手机找到apk文件,点击运行安装
        - adb
    - adb的安装和使用
        - [电脑]下载压缩包 & 解压并放到某个目录
        - [电脑]把目录添加系统环境变量
            >>>D:\platform-tools\
            >>>...
        - [电脑]终端运行命令
            >>>adb start-server
            >>>adb kill-server
        - [手机]开启 开发者模式 + USB调试
            - 开发者模式
            - 开启USB调试
        - 数据线 手机 + 电脑 链接  -> 提示:同意
        - 操作
            >>>adb devices
            >>>adb install  D:/Download/xxx.apk
            >>>adb uninstall com.taobao.idlefish[包名]

            >>>adb push 电脑文件  手机目录 /sdcard/Download/
            >>>adb pull 手机文件  电脑
            >>>adb pull /sdcard/Download/code.js   D:/xxx/

            >>>adb shell getprop ro.product.cpu.abi
                - arm64-v8a [一般真机]
                - arm-v7a   [几百块钱]
                - x86-64    [模拟器]
            >>>adb shell    [直接登录到手机]

        - 小结
            >>>adb kill-server
            >>>adb start-server
            >>>adb devices
            >>>adb install ....
            >>>adb push ...
            >>>adb pull ...
            >>>adb shell getprop ro.product.cpu.abi
            >>>adb shell
            >>>adb reboot

答疑:
    - adb shell 的命令和 linux一样吗?
        - 安卓手机本质Linux操作系统
        - adb shell【SSH】
        - 安卓命令=Linux操作系统
    - adb -s 文档中有吗?
        - adb install xxxx.apk
        - adb -s 9B181FFAZ001F3  install xxxx.apk
    - 需要ROOT吗?
        - 使用adb远程控制手机,不需要ROOT,只需要手机上:开发者模式+USB调试
    - adb 版本有关系?
        - 简单的操作,其他版本一般都可以。
        - 30.0.5版本

3.抓包
    3.1 http请求抓包【2】
        - [电脑]安装charles + 激活 + 配置  -> 电脑IP地址 + charles端口
            - Charles配置端口:9888
            -      电脑IP地址:192.168.0.7

        - [手机]配置系统代理 ->
            - 电脑IP地址:192.168.0.7
            - charles端口:9888

        注意:电脑 + 手机 必须在同一个局域网内(同一个路由器)。

        -> 电脑上的charles就可以抓取手机上的请求包

        案例:臧航准备网


        答疑:任意真机+模拟器 都可以进行测试。

    3.2 https请求抓包【4】+ 证书
        本质流程:
            - [电脑]安装charles + 激活 + 配置  -> 电脑IP地址 + charles端口
                - Charles配置端口:9888
                -      电脑IP地址:192.168.0.7

            - [手机]配置系统代理 ->
                - 电脑IP地址:192.168.0.7
                - charles端口:9888

            - [手机]下载并安装charles证书

        - 安卓7以下,只需要把证书安装在“用户级别”  【网易mumu模拟器,安卓6】
            - [电脑]安装charles + 激活 + 配置  -> 电脑IP地址 + charles端口
                - Charles配置端口:9888
                -      电脑IP地址:192.168.0.7

            - [手机]配置系统代理 ->
                - 电脑IP地址:192.168.0.7
                - charles端口:9888

            - [手机]下载并安装charles证书 “用户级别”
                - 手机浏览器中打开一个网址  chls.pro/ssl
                - 安装成功

            案例:爱安丘、油联合伙人、B站

        - 安卓7及以上,必须把证书安装在“系统级别”(默认安卓禁止操作)  【真机】
            - 证书安装在“用户级别”
            - ROOT + Magisk面具 + move cert模块(手机重启)
            - “用户级别” -> “系统级别”

            ----------------------------------------------------------------
            - [电脑]安装charles + 激活 + 配置  -> 电脑IP地址 + charles端口
                - Charles配置端口:9888
                -      电脑IP地址:192.168.0.7

            - [手机]配置系统代理 ->
                - 电脑IP地址:192.168.0.7
                - charles端口:9888

            - [手机]下载并安装charles证书 “用户级别”
                - 手机浏览器中打开一个网址  chls.pro/ssl
                - 安装成功

            - [手机]magisk面具中刷入move cert模块(重启手机)
                - ROOT + magisk面具 + 刷入move cert模块
                1.获取move cert模块 zip文件,在电脑 D:\move-cert.zip
                2.adb push  D:\move-cert.zip  /sdcard/Download/
                3.打开magisk面具去刷刷入move cert模块
                4.重启手机

            - 愉快的抓包https的包了。

            案例:爱安丘、B站


# 总结
    - 一部真机 + ROOT
    - adb
    - https证书

    实现:
        - adb控制手机
        - 常见:爱安丘、B站抓包

1.逆向基本流程

常见app的逆向的基本流程:

  • 安装运行
  • 抓包分析
  • 反编译apk
  • 在Java代码中定位 + Hook校验
  • 基于Python还原算法

2.安装运行

后续我们对手机会经常进行:安装、卸载、上传、下载等操作。

  • 【电脑】下载adb
  • 【手机】开启开发者模式 + 打开usb调试 + USB线连接手机
  • 【电脑】启动adb
  • 【电脑】通过命令控制手机

2.1 adb

Android Debug Bridge,简称 adb(调试桥 ) 是一种功能多样的命令行工具,可让您与设备进行通信。

2.1.1 platform-tools

下载platform-tools(压缩包)内部包含adb

地址:https://developer.android.google.cn/studio/releases/platform-tools

image-20230111235338624

但是有些同学会发现,自己电脑上下载的最新版 platform-tools 无法使用,此时可以选择下载低一点的版本。

推荐:r30.0.5版本

https://dl.google.com/android/repository/platform-tools_r30.0.5-windows.zip
https://dl.google.com/android/repository/platform-tools_r30.0.5-linux.zip
https://dl.google.com/android/repository/platform-tools_r30.0.5-mac.zip

image-20230331103759075

2.1.2 解压

platform-tools是一个压缩包,解压后就是一个普通的文件夹(内部包含adb、fastboot)。

将解压后的文件夹拷贝到指定目录(当做安装目录),不要有中文路径。

image-20230112000251141

2.1.3 环境变量

为了以后更加方便的使用adb和fastboot,我要讲将platform-tools的目录加入到系统环境变量。

  • win系统:
    image-20230112000829188

  • mac系统:将以下两行代码,添加到你的 ~.zprofile文件中

    PATH="/Library/Android/sdk/platform-tools:${PATH}"
    export PATH
    
    PATH="/Users/wupeiqi/service/platform-tools:${PATH}"
    export PATH
    

    image-20230112001449137

2.1.4 测试adb

  • win
  adb --version
  fastboot --version

image-20230112002525705

  • mac

    adb --version
    fastboot --version
    

    image-20230112002559841

2.1.5 连接手机

image-20230112004038904

image-20230112004128011

开启手机的USB调试,然后:

  • 用数据线连(官方线)接手机和电脑,会提示是否授权窗口,点击授权。

    尽量使用官方自带的数据线,不要用自己网上几块钱买的。
    
  • 打开终端输入 adb devices查看是否连接:

    win和mac系统:adb devices
      ubuntu系统:sudo adb devices
    

    image-20230112004244336

看到设备信息,则表示连接成功。。。

如果你是windows操作系统,可能一直无法显示连接的设备,可能是因为电脑为安装谷歌USB驱动导致。

例如:fastboot devices 无法读取到设备。

2.2 操作

  • 启动和关闭

    >>>adb start-server     启动ADB
    >>>adb kill-server		关闭ADB
    >>>adb devices          查看已连接的设备
    
  • 上传和下载文件

    adb -s 1a9f22350107 push C:\2345Downloads\demo.txt /sdcard
    
    adb -s 1a9f22350107 pull /sdcard/demo.txt C:\2345Downloads
    
  • 安装和卸载app

    adb -s 1a9f22350107 install C:\2345Downloads\xianyu.apk
    
    adb -s 1a9f22350107 uninstall   包名称
    adb -s 1a9f22350107 uninstall   com.taobao.idlefish
    adb -s 1a9f22350107 uninstall   com.nb.city
    
    adb -s 1a9f22350107 shell pm list packages 		  		  # 查看包列表
    adb -s 1a9f22350107 shell pm list packages	-e 关键字   	# 查看包列表(搜索)
    
  • 查看处理器(32位/64位)

    adb shell -s 1a9f22350107 getprop ro.product.cpu.abi 
    
    armeabi-v7a(32位ARM设备)
    arm64-v8a  (64位ARM设备)
    
  • 进入系统

    C:\luffy\platform-tools> adb shell
    olivelite:/ $ su
    olivelite:/ # ls
    acct            init.exaid.hardware.rc               lost+found
    apex            init.mishow.ctl.rc                   mnt
    bin             init.miui.cust.rc                    odm
    
  • 其他

    - 查看手机设备: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.抓包

image-20230331105958884

  • http请求

    【电脑】安装并运行抓包工具,例如:charles
    【手机】配置手机系统代理
    
  • https请求

    • 安卓7以下

      【电脑】安装并运行抓包工具,例如:charles
      【手机】配置手机系统代理
      【手机】安装charles证书(用户证书)
      
    • 安卓7及以上(手机需ROOT)

      【电脑】安装并运行抓包工具,例如:charles
      【手机】配置手机系统代理
      【手机】安装charles证书(用户证书)
      【手机】安装ROOT + 面具 + movecert模块(重启自动将用户证书移动至系统证书)
      

3.1 charles安装和配置【电脑】

1.安装

  • mac用户

    访问网址 https://xclient.info/s/charles.html 根据提示下载并破解。
    
  • windows用户:

    注册码
    	Registered Name:  https://zhile.io
    	License Key:      48891cf209c6d32bf4
    

    image-20230331112632166

2.配置

打开 【Proxy】>【Proxy Settings】设置代理IP端口:

image-20220125204046033

打开 【Proxy】>【SSL Proxy Settings】设置代理IP端口:

image-20220426210328357

查看charles所在的电脑的IP地址:

打开 【Help】>【Local IP...】设置代理IP端口:

image-20220125204152266

3.2 系统代理【手机】

image-20220426210650842

3.3 案例:臧航(http抓包)

上述过程配置完成之后,就可以完成对http请求的抓包,案例:臧航准备网。

接下来在手机或模拟器上安装臧航准备网,就可以实现请求抓包。

注意

  • 手机和电脑必须在同一个局域网(连接同一个路由器)
  • 手机不需要ROOT,就可以实现

image-20220426211107979

image-20220426211348172

3.4 安装charles证书【手机】

上述配置完成后,手机或模拟器只能抓取http请求的数据包,https无法抓取。

想要抓取,就需要在手机上安装charles的证书。

  • 安卓7以下,证书安装在 用户级别。 【模拟器】
  • 安卓7及以上,安装安装在 系统级别(需ROOT)。【真机】

3.4.1 用户证书

image-20220426214117175

image-20220426214338924

在手机上打开浏览器输入网址,下载并安装证书。

如果默认浏览器无法下载证书,可以尝试在手机上安装火狐浏览器下载并安装证书。

chls.pro/ssl

注意:需先在手机上线设置系统代理

image-20220426214314614

3.4.2 案例:安卓7以下+https抓包

安卓7 以下的设备现在几乎没有,目前使用网易mumu模拟器来进行操作(安卓6)。

image-20230331120601731

在模拟器上安装:爱安丘app然后进行抓包。

image-20230331120728699

3.4.3 系统证书(手机需ROOT)

在安卓7及以上的手机中,想要抓app发送的https请求的包,必须把证书安装在系统级别(必须ROOT)。

  • 手机ROOT + Magisk面具
  • 安装用户证书(与上面操作一样)
  • 在magisk面具中刷入move cert模块(关机重启,自动会将用户证书移至系统证书)

1.刷move cert模块

下载move cert模块并刷入到magisk面具中。

作用:可以将手机 用户级别证书自动移动到 系统级别

模块已准备好,请大家去随堂课件中获取。

image-20230113001515112

2.传至手机

将move cert压缩包传到手机(任意好找的一个目录 /sdcard/Download/)。

image-20230113001840537

3.magisk刷move cert模块

image-20230113002241544

4.火狐浏览器

在手机上安装火狐浏览器,后续方便访问charles下载证书(有些机型Pixel自带谷歌浏览器不好使)。

>>>adb install xxx/xxx/xx/firefox.apk

https://www.wandoujia.com/apps/288613

image-20230113004048880

image-20230113004232739

5.配置代理

image-20230113003152004

6.安装用户证书+重启

用浏览器打开网址 chls.pro/ssl ,下载并安装 用户证书

image-20230113005021469

image-20230113005430874

3.4.4 案例:安卓7及以上+http抓包

案例:爱安丘、油联合伙人等

image-20230113005746836

image-20230113010011680

至此,无论你是什么设备,都可以进行抓包了。

注意:有些APP还会有其他的抓包防护,在后期的抓包专题会讲,当前测试请使用:B站、爱安丘、油联合伙人来进行测试自己的抓包情况。

posted @ 2023-04-09 19:17  凫弥  阅读(1024)  评论(0编辑  收藏  举报