最近打算从pc转安卓,随便在应用市场上找了个app练手,大佬可以略过了!!
存在sslpinning, 直接使用瘦蛟舞大佬提供的unpinning脚本来bypass(https://github.com/WooyunDota/DroidSSLUnpinning) 发现每次请求,都有一个sign字段来做签名,ok直接开干。https://api-bc.wtzw.com/api/v6/search/words?imei_ip=3658671245&page=1&gender=1&wd=dydyd&sign=69821b24fe91d2f0be88a28df7987d94
将apk解包发现里面有okhttp3,所以直接尝试hook okhttp3的url方法,并打印出其调用栈看这个调用栈,明显是在okhttp的拦截器中对url做了手脚,所以直接hook getResponseWithInterceptorChain函数打印出所有的用户拦截器。
打印出拦截器后,发现有加壳。 这是个抽取壳,之前自己有实现个基于被动调用的脱壳镜像,正好派上用场(目前安卓的脱壳应该不是问题了吧,略过)。 修复下被抽取了的代码。
在上面打印的用户拦截器类(vu)中找到了拼接sign参数的地点。可以看到加密函数是Encryption.sign(stringBuilde.toString())果断hook下跟进去发现这个函数是一个native函数,这里很奇怪开始以为是动态注册,并hook了registerNative函数,但并未找到。而且在导出符号中也未找到native函数,后来用frida遍历了下所有导出符号在libcommon-encryption.so中发现了该符号,计算出偏移后在去so中定位发现名称不一样。。。暂且不管,猜测可能跟elf文件结构相关。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
这个工具分享下老哥
淡定小胖子 大佬晚上好, 文章中好像有点儿小问题。 刚才跟着文章复现了一下。发现文章前面看的是headers中的sign,但是后面变成了url中的sign[em_7]