找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 48|回复: 0

android逆向学习--某小说app的sign算法

[复制链接]

2万

主题

137

回帖

13万

积分

管理员

积分
139372
发表于 2024-8-6 18:03:18 | 显示全部楼层 |阅读模式 IP:山东省青岛市 联通

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
资源来自网络分享,侵权请告知删除。
免费容易导致链接很快失效,
如失效,请联系管理

android逆向学习--某小说app的sign算法



最近打算从pc转安卓,随便在应用市场上找了个app练手,大佬可以略过了!!
1 抓包:
存在sslpinning, 直接使用瘦蛟舞大佬提供的unpinning脚本来bypass(https://github.com/WooyunDota/DroidSSLUnpinning
发现每次请求,都有一个sign字段来做签名,ok直接开干。
https://api-bc.wtzw.com/api/v6/s ... 2f0be88a28df7987d94
2:frida hook
将apk解包发现里面有okhttp3,所以直接尝试hook okhttp3的url方法,并打印出其调用栈
1.png
看这个调用栈,明显是在okhttp的拦截器中对url做了手脚,所以直接hook getResponseWithInterceptorChain函数打印出所有的用户拦截器。

2.png
3 脱壳:
打印出拦截器后,发现有加壳。
这是个抽取壳,之前自己有实现个基于被动调用的脱壳镜像,正好派上用场(目前安卓的脱壳应该不是问题了吧,略过)。
3.png
修复下被抽取了的代码。
4.png
4 静态分析:
在上面打印的用户拦截器类(vu)中找到了拼接sign参数的地点。
5.png
可以看到加密函数是Encryption.sign(stringBuilde.toString())
果断hook下
6.png

跟进去发现这个函数是一个native函数,这里很奇怪开始以为是动态注册,并hook了registerNative函数,但并未找到。
而且在导出符号中也未找到native函数,后来用frida遍历了下所有导出符号在libcommon-encryption.so中发现了该符号,计算出偏移后在去so中定位发现名称不一样。。。
7.png

暂且不管,猜测可能跟elf文件结构相关。
5:分析so加密算法
看样子是存在rtti信息,所有的类名函数名都显示了出来,这就比较方便了。
看着几个常量,基本可以推断为标准MD5
8.png
so层的逻辑很简单大概分析了下,就是md5加盐的算法
9.png
所以目前的重点就是获取盐就行了。
getkeydata直接返回了this首地址
10.png

他们的this来自于MD5KeyGenerator::Instance函数,并存放在了全局数据区。
11.png
整体的逻辑大概就是,如果这个this未初始化就调用init来初始化,如果初始化了则直接使用。
12.png
他是存在于全局数据区中,所以我们可以不关心她初始过程,直接等他初始化后计算出全局变量的偏移dump内存,直接获取盐

13.png

验证:
14.png
15.png



from: [看雪] android逆向学习--某小说app的sign算法


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|时间戳|加密|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|IOTsec-Zone|在线工具|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-9-19 10:07

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表