APP攻防:Frida&HOOK&Xposed&单向双向&检验抓包

#APP - 某社交 - 双向证书绕过 & Frida & HOOK

-r0capture仅限安卓平台,测试安卓7891011可用 ;无视所有证书校验或绑定,不用考虑任何证书的事情;通杀TCP/IP四层模型中的应用层中的全部协议;通杀协议包括:Http,WebSocket,Ftp,Xmpp,Imap,Smtp,Protobuf等、及它们的SSL版本;通杀所有应用层框架,包括HttpUrlConnectionOkhttp1/3/4Retrofit/Volley等等;无视加固,不管是整体壳还是二代壳或VMP,不考虑加固事情

-Firda 是一款易用的跨平Hook工具, Java层到Native层的Hook无所不能,是一种 动态 的插桩工具,可以插入代码到原生App的内存空间中,动态的去监视和修改行为,原生平台包括WinMacLinuxAndroid、iOS全平台。

测试环境:

Python3 夜神模拟器 r0capture frida-server Burpsuite wireshark

https://github.com/frida/frida/releases

1、本地安装Frida

pip install frida

pip install frida-tools

2、模拟器安装Frida

注意:版本要与本地Frida一致

下载:https://github.com/frida/frida/releases

真机:ARM版本及位数 模拟器:无ARM的位数

将解压后的文件放入夜神模拟器的安装目录

在此目录终端输入以下命令

 .\nox_adb.exe devices

输入shell即可自动连接到模拟器终端

用 下列命令将文件传输到模拟器的/data/local/文件夹中

 .\nox_adb.exe push .\frida-server-16.1.8-android-x86 /data/local/frida64

传输完成

进入终端为frida64赋予执行权限

执行frida64

3、转发并启动Frida

.\adb.exe forward tcp:27042 tcp:27042

连接判断:frida-ps -U

 frida-ps -R

两个都能获取,则环境配置成功。

方案1Firda+r0capture+WireShark

https://github.com/r0ysue/r0capture

模拟器执行:./frida64

获取包名:ls /data/data 或 Apk资源器查看

python r0capture.py -U -f 包名 -p xxxx.pcap

此方法可适用于所有app,缺点就是只能审计wireshark的包

方案2Firda+HOOK-JS+BurpSuite

https://github.com/apkunpacker/FridaScripts

模拟器执行:./frida64

本地执行:frida -U -f 包名 -l hookjs文件(SSLUnpinning.js)

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Frida 可以通过在多个进程之间切换来 hook 多进程应用程序。以下是一些步骤: 1. 在脚本中使用 `frida.get_device_manager().enumerate_devices()` 枚举所有设备,并找到你要 hook 的设备。 2. 使用 `frida.get_device(target).attach(pid)` 来 attach 目标进程。 3. 在脚本中设置 `on_enter` 和 `on_leave` 回调函数。这些回调函数将在进程切换时被调用。 4. 使用 `frida.get_device(target).resume(pid)` 来使进程继续执行。 当进程切换时,`on_leave` 回调函数将被调用,然后 `on_enter` 回调函数将被调用。你可以在这些回调函数中执行你的 hook 代码。 以下是一个示例代码,它演示了如何在多个进程之间切换并 hook 应用程序: ``` import frida def on_message(message, data): print(message) def on_enter(): print("Entering process") def on_leave(): print("Leaving process") def main(): session = None target = frida.get_usb_device() for process in target.enumerate_processes(): if process.name == "target_app": pid = process.pid session = target.attach(pid) break if session is None: print("Could not find target process") return script = session.create_script(""" console.log("Script loaded"); function hook_function() { console.log("Function hooked"); } Interceptor.attach(Module.findExportByName(null, "function_name"), { onEnter: function(args) { hook_function(); } }); """) script.on("message", on_message) script.load() while True: target.resume(pid) target.on("stopped", on_leave) target.on("resumed", on_enter) print("Waiting for process to stop") target.wait_for_stopped() print("Process stopped") ``` 在这个示例中,我们首先枚举了所有设备,并找到了要 hook 的设备。然后,我们 attach 目标进程,并创建了一个 script 对象。在 script 对象中,我们定义了一个回调函数 `hook_function()`,然后通过 `Interceptor.attach()` 函数 hook 了一个函数。最后,我们使用 `target.wait_for_stopped()` 来等待进程停止,并在进程切换时打印一些信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alunxzhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值