首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
求助问答
发新帖
0
0
未解决
[求助]某商业加固壳 libDexHelper.so 的签名校验 patch
100雪币
发表于: 2026-5-8 18:52
3151
未解决
[求助]某商业加固壳 libDexHelper.so 的签名校验 patch
100雪币
11121140
2026-5-8 18:52
3151
## 加固特征 - 商业加固壳:secneo / 梆梆系 (`libDexHelper.so` + `libRiskStub.so` + `libbangcle_risk.so` 三件套) - ARM64 only(测试机 MIUI 13 / Android 13) - libRiskStub.so 内含 `_Z14signatrueCheckv`(typo "signatrue")导出符号 ## 已完成的工作 ### 1. 业务 dex 脱壳 ✅ 通过 `dd if=/proc/PID/mem` 从主进程 heap 区(`[anon:libc_malloc]` 160MB 段)成功 dump 8 个真实业务 dex 共约 110MB,baksmali 反编译完整。 ### 2. libRiskStub.so 内部签名校验已绕过 ✅ 反汇编发现导出符号 `_Z14signatrueCheckv`,函数 prologue 替换为 `mov w0, wzr; ret` 即可。**但实测此函数根本没执行到**——壳层在更早就崩了。 ### 3. libDexHelper.so 完整反编译 ✅ Ghidra 11.4 headless 模式,对 `init_array[0] (offset 0x4780)` + `init_array[1] (0x2b10)` + 主初始化 `0x33f8` 等 9 个入口手动 `CreateFunctionCmd`,最终 decompile 出 56 个 C 函数。 确认 init 流程: - 解析 `/proc/self/maps` 找当前 .so 的 base - 反向找 ELF magic(`0x464C457F`)确定加载基址 - `dlopen("libc.so") + dlsym("sscanf")` 获取函数指针(**绕过静态导入检测**) - `open(self_apk_path, O_RDONLY)` - `pread(fd, &DAT_xxx, 0x14, offset)` 读 20 字节(疑似 RC4 key) - 调用 `FUN_00103184`(**RC4 流密码解密**:标准 KSA + PRGA,16 字节 key) - 解密结果 mmap 到内存供 ART 使用 ## 卡住的地方 **重签 APK(仅替换证书,保留所有原 ZIP entries + v1+v2+v3 签名)→ 启动立即 SIGSEGV**: ``` Cause: null pointer dereference PC = 0x0000000000000b4c LR = 0 SP = 0 x1=x8=x10=x19=0xb6a28b4e (同值传播) x9=x12=0xb4c x2=0xfff (掩码) backtrace: #00 pc 0x0b4c <unknown> #01 pc 0 <unknown> ``` **关键观察**: - LR/SP 都是 0,明显是壳**故意制造的 stack-smash 假崩溃**——真实校验失败位置在 backtrace 之外 - 崩溃时**只有 libDexHelper.so 加载到内存**(其他 .so 都还没被加载) - libDexHelper.so 内**没有 "signature" / "cert" 等明文字符串**,没有显式 strcmp 比对签名 - 主初始化函数有 5 个 strcmp 但都是 `/proc/self/maps` 解析用,不是签名 - `0x0b4c` **不是任何指令的立即数**——动态计算(`0xb6a28b4e & 0xfff = 0xb4e`,跟 `0xb4c` 差 2,规律未明) ## 已尝试 | 方案 | 结果 | |---|---| | Frida hook | 被 secneo 检测,立即 SIGSEGV (fault 0x79c) | | BlackDex / frida-fart | 同样被检测 | | Magisk DenyList 隐藏 root | 原版 APK 能跑,重签 APK 仍崩——说明跟 root 检测无关 | | patch `libRiskStub.so::signatrueCheck` | 该 .so 根本没加载就崩了 | | 仅添加 v2/v3 签名(保留原 META-INF + 不改 zip 结构) | 仍崩 | | apksigner sign(v1+v2+v3 全开) | 仍崩 | ## 求助 **`libDexHelper.so` 中签名/完整性校验在哪个函数?怎么 patch?** 可能方向: - 从 APK 文件某 offset 读取证书 hash 与硬编码值比对 - RC4 解密 key 由证书数据派生 - `0x33f8` 函数中某处隐式比对了 APK 签名块的某段数据 如果有 secneo 加固经验的师傅看过类似版本(特征:导出 `signatrueCheck` typo + libc_malloc 16MB 多 dex),希望能给个方向。 ## 工作模式 - **附件仅提供 `libDexHelper.so`**(1.1MB),原 APK 因 NDA 无法外发 - 师傅交付 **patched libDexHelper.so**(说明改了哪些字节即可) - 我本地拿原 APK 替换 .so 后重签验证 - 验收标准:重签 APK 装上能正常启动到登录页(不再 0x0b4c 崩溃)
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
上传的附件:
libDexHelper.so
(1.04MB,12次下载)
收藏
・
0
点赞
・
0
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
1
)
Mr.He
雪 币:
20
能力值:
( LV1,RANK:0 )
在线值:
发帖
1
回帖
77
粉丝
1
关注
私信
Mr.He
2
楼
666
2026-5-22 11:44
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
11121140
1
发帖
0
回帖
0
RANK
关注
私信
他的文章
[求助]某商业加固壳 libDexHelper.so 的签名校验 patch
3151
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
谁下载
×
莫名其妙abc
mb_tbhosdnk
SomeMx
mb_imnrancw
mb_cezdpjbw
Dorimu
mb_kujsrqqv
mb_ivytqexl
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部