Xserver免脱壳解密APP

本文介绍了如何使用XServer工具在遇到APP参数加密时,通过免脱壳技术绕过加密,将明文数据转发到Burp进行分析和修改请求参数的过程。作者演示了在雷电模拟器环境中安装Xposed和XServer,以及如何Hook加密方法并解密数据的操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关注微信公众号获取更多资讯,第一时间学习最新前沿渗透技术!
在这里插入图片描述

0x01 前言

在测试APP的时候有时候会遇到参数加密的情况,这样就会导致不能修改请求参数,很多漏洞都测试不了了。一般常用的方法是把APP放到jadx中脱出源码,然后在源码中找到对应的加密算法,这种方法遇到没加壳的APP还好,但是遇到加密的APP或者代码混淆的APP就很头痛了。Xserver的应用场景就是免脱壳,将明文数据先代理到Burp中,然后在传输到APP中进行加密(应该是这样吧,不是很懂哈哈哈)
下载地址:https://github.com/monkeylord/XServer

0x02 应用

环境:雷电模拟器3.90.0
image.png

安装Xposed+Xserver然后模块中激活Xserver
image.png

原始的APP请求数据

### 使用 Frida 对雷电模拟器进行脱壳的操作方法 #### 工具准备 为了实现对雷电模拟器中的应用进行脱壳操作,需要准备好以下工具和环境: - **Frida**: 动态 instrumentation 框架,用于 hook 和修改运行时的行为[^2]。 - **frida-server**: 需要下载并部署到目标环境中,确保其版本与雷电模拟器使用的 Android 版本匹配。 - **雷电模拟器**: 安装并配置好所需的 APK 文件。 --- #### 环境搭建 1. 下载适合雷电模拟器所对应 Android 版本的 `frida-server`。可以从官方 GitHub 发布页面获取最新版本: ```bash wget https://github.com/frida/frida/releases/download/16.0.9/frida-server-16.0.9-android-x86.xz ``` 2. 将下载好的 `frida-server` 解压后放置于雷电模拟器文件系统的 `/data/local/tmp/` 或其他可执行路径下,并赋予可执行权限: ```bash chmod +x /data/local/tmp/frida-server ./data/local/tmp/frida-server & ``` 3. 启动 `frida-server` 并确认它能够正常监听连接请求。 --- #### 实现动态分析与脱壳 通过 Frida 的 JavaScript API 可以拦截关键函数调用来绕过保护机制。以下是具体步骤: 1. 编写一个简单的脚本来 hook 加密或校验逻辑的关键函数。例如,假设目标程序使用了 `nativeLoad` 函数加载加密库,则可以编写如下脚本: ```javascript Interceptor.attach(Module.findExportByName(null, "JNI_OnLoad"), { onEnter: function(args) { console.log("[+] JNI_OnLoad called"); }, onLeave: function(retval) { console.log("[+] JNI_OnLoad returned"); } }); Interceptor.attach(Module.findExportByName("libart.so", "_ZN3art7DexFile10OpenMemoryEPKhmRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEPKNS_10OatDexFileEPS9_PmPb"), { onEnter: function(args) { var dexSize = args[2].toInt32(); var dexBuffer = Memory.readByteArray(args[1], dexSize); console.log("[+] Intercepted DexFile::OpenMemory call with size:", dexSize); // Dump the DEX file to disk var fs = require('fs'); fs.writeFileSync("/sdcard/dumped.dex", Buffer.from(dexBuffer)); } }); ``` 2. 运行上述脚本并与目标进程绑定: ```bash frida-ps -Uai # 列出当前设备上的所有应用程序及其 PID frida-trace -i "open\|close" com.example.app # 替换为目标包名 frida -U -n com.example.app -l your_script.js --no-pause ``` 3. 当检测到内存中有解密后的数据时,将其保存至本地磁盘以便进一步分析。 --- #### 注意事项 - 确保 `frida-server` 的架构(armeabi-v7a、arm64-v8a、x86、x86_64)与雷电模拟器内部虚拟化环境一致。 - 如果遇到 SELinux 导致无法启动服务的情况,可以通过设置 permissive 模式解决: ```bash adb shell setenforce 0 ``` - 不同的应用可能采用不同的加壳方式(如 DEX 层面的加固或者 SO 库级别的混淆),需针对性调整 Hook 点[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值