论坛首页 安全工具分享区 阅读主题

[原创] 某宝系某麦SecurityGuard libsgmain签名Unidbg模拟执行实战

163 浏览 8 回复
#1 楼主 2026-06-01 21:09:10
首先感谢几位前辈的文章https://bbs.kanxue.com/thread-290068.htmhttps://bbs.kanxue.com/thread-287899.htmhttps://bbs.kanxue.com/thread-277006-1.htm在前辈们优秀的文章启发下,作为一个小白配合大模型使用gemini+claude 花了三天时间实现了x-sign
物料:frida
IDA pro(没玩明白)unidbg 0.9.8(必须用这个 别用最新版)root安卓真机+模拟器

0x00 前言  在移动端逆向领域,阿里系的 SecurityGuard (无线安全组件) 始终是一座绕不开的大山。无论是某宝、某猫还是某麦,其核心业务接口都由 libsgmainso 守护。该组件集成了极其复杂的指令混淆(LLVM-Obfuscator)、自解密插件、环境指纹扫描以及严苛的 anti-debug 策略。传统的 IDA  静态分析在这种“黑盒”面前效率极低。本文将分享如何利用 Unidbg 构建一套完整的模拟执行环境

2026.3.1更新:实际测试大模型只能补环境成功让这个跑起来了,请求都返回FAIL_SYS_ILLEGAL_SIGN::非法请求签名,估计还有检测没过去的,返回的min-wua都是短的97位。 参考这篇文章重新补了一遍环境也不行。

6.7这个版本请求链路应该10101-10104 然后70102就可以执行 71010不知道需不需要
有一个坑java/lang/Thread->getStackTrace() 估计不能直接返回空让ai模拟返回了一个堆栈的,并且紧接着它就开始调用 getClassName() 和 getMethodName(),之后会风控数据 (e_track) 成功写入: 它主动调用了 SPUtility2->saveToFileUnifiedForNative,写入了轨迹数据 "e_track" : "(0,8)|(yy[)..."
似乎6.7检测比以前版本严格很多很多。求大佬指点一些。有什么必须hook的点吗

  ---

  0x01 环境准备:资产的“外科手术式”提取  SecurityGuard 并非独立的 SO,它是一个依赖物理环境的“生态系统”。更新版本后,必须从真机拉取以下关键资产:

   1. 引擎层: libsgmainso-6.7.250903.so   2. 图腾层(Totem):yw_1222_27.jpg 作为密钥种子。   3. 插件层(SGLib): app_SGLib这里存放着下发的 DEX 插件和 AVMP 引擎数据。

  ---

  所有的安全操作最终都会收敛到一个 Native 函数:doCommandNative

  通过 Frida 挂钩这个函数,我们可以观察到一个极其关键的特性:状态累积(State Accumulation)。你不能直接调用 70102  (签名指令),必须先按顺序喂给它初始化指令。

  实战捕获的初始化序列一共使用了 22 个:环境初始化与密钥图片加载。


回复或点赞可查看完整内容

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-290110.htm
#2 2026-06-01 21:09:10
#3 2026-06-01 21:09:10
感谢分享
#4 2026-06-01 21:09:10
感谢分享
#5 2026-06-01 21:09:10
看看
#6 2026-06-01 21:09:10
看下
#7 2026-06-01 21:09:10
看看
#8 2026-06-01 21:09:10
学习
#9 2026-06-01 21:09:10
ID蝴蝶   1
  24 楼
学习

请登录后参与讨论

立即登录 注册账号