kali Linux 逆向环境pyenv、Frida、objection、jadx、的安装

目录

1.pyenv安装和使用

1.1pyenv 简介

1.2pyenv 常用命令

1.3pyenv安装和使用

2.Frida安装

2.1Fraida简介

2.1Fraida安装

2.2objection安装

 2.3objection常用命令

查看日志

 查看包含Frida的日志信息

查看objection的帮助命令

2.3.0进入objection REPL环境

2.3.1直接启动activity

 2.3.2内存搜索DisplaySettings实例

2.3.3查看DisplaySettings实例的方法

 2.3.4在DisplaySettings实例上编写js脚本

 2.3.5获取某个类的所有方法

查看当前可用的activities

查看当前app 加载的so库文件

查看so库的导出函数

 提取整个或部分内存

 搜索整个内存的偏移地址

列出内存内所有类与方法

 搜索包含指定关键字的所有类

内存中搜索包含字符串的所有方法

 自动生成hook脚本

 hook指定要监视的类

2.4objection插件安装之Wallbreaker和frida-dexdump

 2.4.1Wallbreaker使用

 2.4.2frida-dexdump脱壳插件安装

3安装工具jadx

4安装vscode


1.pyenv安装和使用

1.1pyenv 简介

pyenv 是一个 Python 版本管理工具。它可以:

1. 安装多个 Python 版本
2. 切换全局 Python 版本
3. 为每个项目指定特定的 Python 版本

1.2pyenv 常用命令

pyenv 的主要功能是解决在同一台机器上管理多个 Python 版本的问题。pyenv 的工作原理是:

1. 将所有 Python 安装在一个目录下(默认为 ~/.pyenv/versions)
2. 通过改变环境变量的方式切换不同版本的 Pythonpyenv 的主要命令有:

- pyenv install: 安装Python版本,可以安装2.x、3.x等多个版本
- pyenv versions: 显示所有可用的Python版本
- pyenv global: 设置全局Python版本
- pyenv local: 为目录设置本地Python版本
- pyenv rehash: 重新编译 Python 版本列表
- pyenv uninstall: 删除已安装的 Python 版本

1.3pyenv安装和使用

pyenv gihhub安装地址:

pyenv安装环境

Home · pyenv/pyenv Wiki · GitHub

 安装

GitHub - pyenv/pyenv-installer: This tool is used to install `pyenv` and friends.

添加path

https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv
 

pyenv下载安装命令:

安装pyenv 环境


sudo apt update;  sudo apt install build-essential libssl-dev zlib1g-dev \libbz2-dev libreadline-dev libsqlite3-dev curl \libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev  

 下载安装pyenv

proxychains4 git clone https://github.com/pyenv/pyenv.git ~/.pyenv

添加path

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

刷新控制台,使path生效

exec "$SHELL"

然后查看Python3的版本

pyenv install 3.

 我这里安装

  Python 3.10.11

proxychains4 pyenv install  3.10.11

安装好后,查看Python安装的所有版本

pyenv versions

切换到  Python 3.10.11

pyenv local  3.10.11

到此pyenv安装结束

2.Frida安装

2.1Fraida简介

Frida 是一个动态代码仿真框架。

它可以用于许多方面,最常用的有:

1. Android/iOS 应用分析
我们可以使用 Frida 在真机或模拟器上注入 JS 代码,对运行中的应用进行分析、跟踪与调试。

2. API 监视与模拟
我们可以使用 Frida 钩子某个 API 的调用,监视或修改其参数与返回值,来分析应用对该 API 的依赖与使用。

3. 方法跟踪
我们可以使用 Frida 跟踪应用正在运行的方法,监视其被调用情况与参数,追踪应用的执行流程。

4. 内存修改
我们可以使用 Frida 查找应用的内存中某个值的地址,然后运行时直接修改该内存的值,来影响应用的运行与逻辑。

5. 环境变量查看
我们可以使用 Frida 查看应用所能访问的环境变量列表,以及各个环境变量的值。这有助于我们理解应用的运行环境。

Frida 的工作原理是:

1. 通过自定义的 JS API,用户编写用于分析与交互的 JS 脚本。

2. 在真机/模拟器与应用进程之间注入一个 Frida 代理。

3. 该代理会加载用户提供的 JS 脚本,用户可以通过 JS API 与真机应用进程进行交互,实现代码仿真与动态分析的目的。

4. 用户通过命令行与该代理进行通信,发送自己的 JS 脚本与指令,并获取回传的应用信息。Frida 支持 Android、iOS、macOS、Windows、Linux 等多个平台,是一个功能极其强大的动态代码分析框架

2.1Fraida安装

Frida历史版本:Releases · frida/frida · GitHub

安装最新版本命令:

proxychains4 pip install -U frida frida-tools 

由于objection的最新版本是1.11.0,最近的更新时间是2021.4.6,所以也要找个最近发布的Frida

objection==1.11.0

frida==14.2.14

frida-tools==9.2.2

安装Frida命令

proxychains4 pip install "frida==14.2.14" "frida-tools==9.2.2"

查看模拟器的设备型号,我这里是x86_64

adb shell getprop ro.product.cpu.abi

 

然后在GitHub找到并下载ffrida-server-14.2.14-android-x86_64.xz,解压后并重命名为fd,然后用命令推送到模拟器

连接模拟器,把杀毒软件关一下,免得端口被占用了

adb connect 192.168.2.6:5555

推送到模拟器

adb push '/root/桌面/fd' /data/local/tmp/ 

然后启动Frida,看看是不是正常

adb shell
su
cd /data/local/tmp/
chmod 777 fd
./fda -l 0.0.0.0:8888

 0.0.0.0 表示任意网络, 回车后如下图

 没报错就说明可以了

可用端口转发

adb forward tcp:27042 tcp:27042

然后在win系统里执行如下命令看看是否可以连接上模拟器,列出模拟器进程信息,win系统也要安装好frida和frida-tools才能执行,192.168.2.6是模拟器IP,不然报错

frida-ps -H 192.168.2.6:8888

 说明win系统端已经连接成功,这样frida一端开启,多端运行

 然后就可以执行注入操作

 frida -H 192.168.2.6:8888 -f 你的应用包名 -l 你要注入的.js --no-pause

2.2objection安装

 objection历史版本:Releases · sensepost/objection · GitHub

                               objection · PyPI

安装objection命令:

proxychains4 pip install objection==1.11.0 

执行如下命令,探索模拟器设置com.android.settings应用程序:

该命令各个参数的含义为:

-N:表示不重定向 Frida 日志输出。保持在原终端输出。

-h 192.168.2.6:指定 objection 服务端的 IP 地址为 192.168.2.6。

-p 8888:指定 objection 服务端的端口为 8888。

-g com.android.settings:指定目标应用的包名为 com.android.settings。

explore:表示开始进行应用探索,运行各种检测模块。

所以,这条命令的整体含义为:不重定向 Frida 日志输出,连接到 IP 地址为 192.168.2.6 端口 8888 的 objection 服务端,检测 Android 应用 com.android.settings,运行探索性检测模块。

objection -N -h 192.168.2.6 -p 8888 -g com.android.settings explore 

如下图,表示成功安装成功了

 2.3objection常用命令

查看日志

在shell中输入下面命令

cat .objection/objection.log 

 查看包含Frida的日志信息

cat .objection/objection.log |grep -i frida

查看objection的帮助命令

objection --help

2.3.0进入objection REPL环境

objection   -g com.android.settings explore 

或frida启动加了 0.0.0.0:8888

objection -N -h 192.168.2.6 -p 8888 -g com.android.settings explore 

2.3.1直接启动activity

注意有的真机系统rom是没有DisplaySettings这个类的

 android intent launch_activity com.android.settings.DisplaySettings 

 2.3.2内存搜索DisplaySettings实例

在内存搜索DisplaySettings实例,返回 36485274

android heap search instances com.android.settings.DisplaySettings  --fresh

2.3.3查看DisplaySettings实例的方法

android heap execute 36485274  getPreferenceScreenResId

 

 2.3.4在DisplaySettings实例上编写js脚本

进入DisplaySettings实例

 android heap evaluate 36485274 

 

输入命令,然后按Esc键,再按回车,即可执行刚刚输入的js

  console.log("evaluate result:"+clazz) 

 2.3.5获取某个类的所有方法

android: 表示操作对象为 Android 应用。

hooking: 表示进行 hook 操作。

list: 用于列举,这里是列举类与方法。

class_methods: 表示要列举的目标是类与方法。

com.android.settings.DisplaySettings: 表示关注的类是 com.android.settings.DisplaySettings。

所以,这条命令的整体含义是:在 Android Settings 应用中,列举与 com.android.settings.DisplaySettings 类相关的所有类与方法信息。

 android hooking list class_methods  com.android.settings.DisplaySettings

查看当前可用的activities

 android hooking list activities

查看当前app 加载的so库文件

memory list modules

查看so库的导出函数

查看库的导出函数 , 加上j可以将数据保存到libart.json文件--json /root/libart.json 

memory list exports libssl.so

 将json文件保存到kali linux的目录/root/libart.json

memory list exports libssl.so --json /root/libart.json

 提取整个或部分内存

memory dump all from_base

执行此命令后,objection会开始从当前进程的基地址读取内存内容,并将转储结果保存在文件`memory-all-from-base.dump`中。 

 搜索整个内存的偏移地址

在内存搜素过程中使用--string和--offsets-only两个选项的作用:

--string选项:用于指定要搜索的字符串。内存搜索工具会在内存中搜索此字符串的实例,并返回包含该字符串的内存区域信息。

--offsets-only选项:当我们只关心某字符串实例所在内存区域的偏移地址(offset)时可以使用此选项。该选项会使内存搜索工具只返回字符串实例的内存偏移地址,而不是完整的内存区域信息。

这两个选项一般会同时使用。比如要搜索"password"字符串的偏移地址,可以使用如下命令:

memory search --string "display" --offsets-only 

列出内存内所有类与方法

android hooking list classes 

 搜索包含指定关键字的所有类

这条命令会使用 objection 在 Android 应用中搜索包含指定关键字的所有类。

该命令各个参数的含义为:

android: 表示操作对象为 Android 应用。

hooking: 表示进行 hook 操作,这里是搜索类。

search: 表示要进行搜索操作。

classes: 表示要搜索的目标是类。

关键字:表示要搜索的字符串,这里替换为您要搜索的实际字符串。

所以,这条命令的整体含义是:在当前 Android 应用中,搜索类名中包含 指定字符串 的所有类

adnroid hooking search classes 搜索指定关键字
 android hooking search classes  com.android.settings 

内存中搜索包含字符串的所有方法

该命令各个参数的含义为:

android: 表示操作对象为 Android 应用。

hooking: 表示进行 hook 操作,这里是搜索方法。

search: 表示要进行搜索操作。

methods: 表示要搜索的目标是方法。

display: 表示要搜索的字符串为 display。

android hooking search methods display

 自动生成hook脚本

android hooking generate simple 指定要生成hook脚本的类

 使用 android hooking generate 命令指定类名 com.android.settings.DisplaySettings 

 objection会自动分析DisplaySettings类的所有方法,并生成对应的hook脚本, named显示设置hook.js。

android hooking generate  simple  com.android.settings.DisplaySettings

1. 使用 android hooking generate 命令指定类名 com.android.settings.DisplaySettings

2. objection会自动分析DisplaySettings类的所有方法,并生成对应的hook脚本, named显示设置hook.js。

3. 该hook脚本可以用来hook DisplaySettings类的所有方法,监视/修改参数或返回值等。

4. 可以用命令 objection run showing 方法设置hook.js来执行该hook脚本。

5. 执行脚本后,DisplaySettings类的方法调用会被frida hook,可以达到监测/修改等目的。

所以,这条命令的主要作用是自动生成指定类的hook脚本,方便用户随后执行该脚本hook类的方法达到需要的目的。 

 hook指定要监视的类

android hooking watch class 指定要监视的类

指定要监视的类,这里是`android.bluetooth.BluetoothDevice`

android hooking watch class android.bluetooth.BluetoothDevice

通过这个输出日志,可以看到BluetoothDevice的所有方法调用情况,参数值等信息,这对 Bluetooth 协议的解析与安全测试很有帮助。

所以,这条命令的主要作用就是利用frida监视BluetoothDevice类的方法调用, output相关日志信息,以便进行协议分析与渗透测试。

使用命令,获得json ID 579414

jobs list

然后在设置->声音->媒体播放或者蓝牙的开关就能输出下面调用蓝牙类相关方法的监听日志

 

 

 每个系统不一样可能会有点差异

2.4objection插件安装之Wallbreaker和frida-dexdump

GitHub官网:hluwa (葫芦娃) · GitHub

创建目录

mkdir -p plugins/

进入plugins目录下载到目录中 

d plugins
proxychains4 git clone https://github.com/hluwa/Wallbreaker plugins/Wallbreaker

 

 2.4.1Wallbreaker使用

进入objecttion

 objection -g com.android.settings explore 

 或

 objection -N -h 192.168.2.3 -p 8888 -g com.android.settings explore 

进入objection后执行插件加载

plugin load plugins/Wallbreaker

 

 打印类全路径

plugin wallbreaker classdump --fullname android.bluetooth.BluetoothDevice 

 这里是打印蓝牙类的全路径

 2.4.2frida-dexdump脱壳插件安装

 proxychains4 pip install frida-dexdump

启动frida后, 脱壳命令

 frida-dexdump -U -f 包名

3安装工具jadx

创建目录

mkdir -p jadx/ 

 进入jadx目录并下载

cd jadx

proxychains4 wget https://github.com/skylot/jadx/releases/download/v1.4.7/jadx-1.4.7.zip 

下载好解压

7z x *zip

然后进入bin并启动

cd bin
./jadx-gui

或者

./bin/jadx-gui

 或者

 ./jadx/bin/jadx-gui

4安装vscode

官网:Running Visual Studio Code on Linux

添加

proxychains4 sudo apt-get install wget gpg
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
rm -f packages.microsoft.gpg

下载安装

proxychains4 sudo apt install apt-transport-https
proxychains4 sudo apt update
proxychains4 sudo apt install code # or code-insiders

安装完成

 参考

实用FRIDA进阶:内存漫游、hook anywhere、抓包-安全客 - 安全资讯平台

Frida 进阶:脱壳、自动化、objection 内存漫游、hook anywhere、Wallbreaker插件、抓包、fridaUiTools_frida objection_擒贼先擒王的博客-CSDN博客

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值