最近打算从pc转安卓,随便在应用市场上找了个app练手,大佬可以略过了!!
存在sslpinning, 直接使用瘦蛟舞大佬提供的unpinning脚本来bypass(0cbK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6i4L8$3!0&6N6h3&6p5L8%4c8S2i4K6u0r3c8s2u0G2K9h3c8e0f1@1I4g2L8Y4m8A6L8X3&6A6L8X3N6Q4c8f1k6Q4b7V1y4Q4z5o6V1`. 发现每次请求,都有一个sign字段来做签名,ok直接开干。475K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2M7r3W2Q4x3X3c8T1j5#2)9J5k6i4N6@1P5Y4N6Q4x3X3g2U0L8$3#2Q4x3V1k6S2M7r3W2Q4x3V1k6$3y4W2)9J5c8Y4y4W2j5i4u0U0K9q4)9J5c8Y4N6G2M7X3c8K6i4K6y4r3K9h3#2W2K9g2)9#2k6X3W2H3i4K6y4p5x3K6j5#2z5o6j5%4x3e0t1@1y4g2)9J5y4X3q4E0M7q4)9K6b7Y4m8S2k6$3g2Q4x3@1b7I4i4K6t1$3j5h3#2H3i4K6y4n7k6$3g2F1k6r3g2J5i4K6y4p5x3g2)9J5y4X3q4E0M7q4)9K6b7Y4N6V1i4K6y4p5k6s2W2V1P5h3c8Q4x3U0k6S2L8i4m8Q4x3@1u0K6K9h3N6F1i4K6y4p5y4U0V1^5x3U0q4T1x3U0c8X3k6e0V1I4k6o6u0X3x3r3u0W2z5o6S2S2x3U0S2V1k6U0M7&6z5o6N6V1z5e0b7`.
将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文件结构相关。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
这个工具分享下老哥
淡定小胖子 大佬晚上好, 文章中好像有点儿小问题。 刚才跟着文章复现了一下。发现文章前面看的是headers中的sign,但是后面变成了url中的sign[em_7]