登录后更精彩...O(∩_∩)O...
您需要 登录 才可以下载或查看,没有账号?立即注册
×
资源来自网络分享,侵权请告知删除。
免费容易导致链接很快失效,
如失效,请联系管理
android逆向学习--某小说app的sign算法
最近打算从pc转安卓,随便在应用市场上找了个app练手,大佬可以略过了!! 1 抓包:2:frida hook将apk解包发现里面有okhttp3,所以直接尝试hook okhttp3的url方法,并打印出其调用栈
看这个调用栈,明显是在okhttp的拦截器中对url做了手脚,所以直接hook getResponseWithInterceptorChain函数打印出所有的用户拦截器。
3 脱壳:打印出拦截器后,发现有加壳。
这是个抽取壳,之前自己有实现个基于被动调用的脱壳镜像,正好派上用场(目前安卓的脱壳应该不是问题了吧,略过)。
修复下被抽取了的代码。
4 静态分析:在上面打印的用户拦截器类(vu)中找到了拼接sign参数的地点。
可以看到加密函数是Encryption.sign(stringBuilde.toString())
果断hook下
跟进去发现这个函数是一个native函数,这里很奇怪开始以为是动态注册,并hook了registerNative函数,但并未找到。
而且在导出符号中也未找到native函数,后来用frida遍历了下所有导出符号在libcommon-encryption.so中发现了该符号,计算出偏移后在去so中定位发现名称不一样。。。
暂且不管,猜测可能跟elf文件结构相关。 5:分析so加密算法看样子是存在rtti信息,所有的类名函数名都显示了出来,这就比较方便了。
看着几个常量,基本可以推断为标准MD5
so层的逻辑很简单大概分析了下,就是md5加盐的算法
所以目前的重点就是获取盐就行了。
getkeydata直接返回了this首地址
他们的this来自于MD5KeyGenerator::Instance函数,并存放在了全局数据区。
整体的逻辑大概就是,如果这个this未初始化就调用init来初始化,如果初始化了则直接使用。
他是存在于全局数据区中,所以我们可以不关心她初始过程,直接等他初始化后计算出全局变量的偏移dump内存,直接获取盐
验证:
from: [看雪] android逆向学习--某小说app的sign算法
|