某小说App __sig3签名分析

一、目标

这个样本和之前的小视频App的套路有点类似。签名的名称和算法估计都是一样的。所以搞明白这个,估计也能搞明白最新版的小视频App。

那看小说和看小视频的区别在哪?

小说越看越困,小视频越看越清醒。足以证明AI比你还要了解你自己。

今天我们的目标就是某小说App v1.0.0.2

二、步骤

搜索 __sig3

main

1:main

才5个结果,仔细找找,发现了这个 atlasSign 函数,

再搜索下 atlasSign 函数,虽然这次调用的地方很对,但是我们一眼就发现了一个老朋友

com.kxxxxxou.android.security.KSecurity

首先它的名字起的太有个性了,其次是上次在分析小视频App的时候也是他做的签名。

Hook atlasSign

1var KSecurityCls = Java.use("com.kxxxxxou.android.security.KSecurity"); 2KSecurityCls.atlasSign.implementation = function(a){ 3 var rc = this.atlasSign(a); 4 console.log(TAG + "atlasSign a = " + a); 5 console.log(TAG + "atlasSign >>> rc = " + rc); 6 return rc; 7 8}

跑一下,结果是有了,但是hook输出的是48位的数据,并不是我们抓包到的70多个字节的乱七八糟的数据。

下面有两个方案:

1、坚信我们是对的,做__sig3签名一定调用了atlasSign,只是可能把这个48位的签名再做了某种变化。这样的话,我们打印下堆栈就行了;

2、看抓包的结果还是很像Base64,虽然没有== 之类的Base64必须特征,但是凭这么多期的经验,还是可以hook一把Base64试试。

打堆栈

1fenfeixs: java.lang.Thread.getStackTrace(Thread.java:1720) 2fenfeixs: com.kxxxxxou.android.security.KSecurity.atlasSign(Native Method) 3fenfeixs: k.w.e.a1.t.a(SourceFile:34) 4fenfeixs: k.w.e.a1.t.a(Native Method) 5fenfeixs: k.h.d.h.d.intercept(SourceFile:111)

狐狸尾巴漏出来了,这个 k.w.e.a1.t.a 应该就是我们的目标了

1var ffSignCls = Java.use("k.w.e.a1.t"); 2ffSignCls.a.overload('java.lang.String', 'java.lang.String', 'java.util.Map').implementation = function(a,b,c){ 3 var rc = this.a(a,b,c); 4 console.log(TAG + "a = " + a); 5 console.log(TAG + "b = " + b); 6 console.log(TAG + "c = " + c.entrySet().toArray()); 7 console.log(TAG + ">>> rc = " + rc); 8 9 return rc; 10}

再跑一下,结果出来了,果然就是 __sig3

fenfeiksxs: >>> rc = VVftYQGnh_1jN2Q2ODU4NTVjN2U0NmU1ZGM4ZjhjOGQwYjA0MDA5OGMyNDhkN2Y2OTM5ZTkwODY

大概分析了一下,他就是把 atlasSign 的结果做了一个Base64,然后把明显的 + / = 都替换掉。

入参里面还有个 dpbs 是加密的,不过这个就比较好解决了,都在 k.w.e.a1.t.a 类里面。

三、总结

刚拿到这个样本的时候我也疑惑了一下,虽然他绕了好几个圈子,但是很方便的可以定位到atlasSign。

正以为大功告成的时候,才发现atlasSign的结果是48位,和抓包结果不符。

这时候就得相信自己了,首先atlasSign被触发了,说明大概率做 __sig3 的时候被调用了。那么打印堆栈就是最好的解决方案了。

ffshow

1:ffshow

营己良有极 过足非所钦

Tip: 

: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。

关注微信公众号:奋飞安全,最新技术干货实时推送

点赞
收藏

评论区

加载中...

相关推荐

小程序逆向分析 (一)

一、目标李老板:奋飞呀,最近耍小程序的比较多,而且貌似js好耍一点?要不咱们也试试?奋飞:你是老板,你说了算喽。第一次搞小程序,得找个软柿子捏,就找个以前分析过的某段子App的小程序吧。反编译静态分析动态调试二、步骤春天在哪里?app下载回来就是apk包,那么小程序在哪里?小程序是一个以wxapkg为后缀的文件,在android手机的/da

OkHttp 通用抓包方式分析,以某小视频App为例

一、目标太难了,这年头抓包越来越难了,某小视频更新频发,我们之前屏蔽QUIC的方案貌似也失效了。幸好我们还有OkHttpLoggerFridaTIP:v9.10.10.22596着急的同学可以直接拉到后面,加入知识星球取js吧。有理想的同学建议好好研究下原理,下次就可以自己适配了。二、步骤原理分析在这篇文章里面我们分析了v8.0使用

Unity IL2CPP 游戏分析入门

一、目标很多时候App加密本身并不难,难得是他用了一套新玩意,天生自带加密光环。例如PC时代的VB,直接ida的话,汇编代码能把你看懵。但是要是搞明白了他的玩法,VBDecompiler一上,那妥妥的就是源码。Unity和Flu

某小视频App v10.x 手机号加密算法分析

一、目标今天的目标是手机号加密,app变化太快,以前都是明文的。TIP:某小视频Appv10.2.30.24518二、步骤字符串匹配也许是手机号都是1xx开头,也许是这个加密字符串有个特征头。反正经过我们观察,发现它大概率是3sCt开头。而这种加密算法大概率是在Native层去做的。所以我们首选是去hooklibart里面的GetSt

某婚恋App _t 签名分析

一、目标最近也不让加班了,李老板每天早早的就回家,小视频也刷的没意思了。还是好好找个mm正经聊聊吧。今天我们的目标是某婚恋App的v11.3.2。二、步骤抓个包\t参数,看上去像是时间戳加上一个md5(掰指头数了数,一共32位)。jadx搜一搜\t,我去,10几万条结果。一时激动,都忘了我的独门秘籍了。这种签名一般会以字符串的方式存入一个m

在Frida里面做http请求: 聊聊jar to dex

一、目标李老板:奋飞呀,你hook这个App之后拿到token,然后上报给我的服务器好不好?奋飞:木问题。二、步骤gumjshttp在frida里面做http请求,最根正苗红的必须是gumjshttp,大胡子出品,有保障可惜的是我没有搞明白,李老板催的紧,木有时间去慢慢研究了。先搞个Server测试子曾经曰过:人生苦短,快用Python。不过