You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
zh-cn/sekiro-article/sekiro-frida/
一、尝试字符串匹配 也许是手机号都是1xx开头,也许是这个加密字符串有个特征头。反正经过我们观察,发现它大概率是 3sCt 开头。
而这种加密算法大概率是在Native层去做的。所以我们首选是去 hook_libart 里面的 GetStringUTFChars 和 NewStringUTF。
结果木有结果。
二、尝试Base64 这个3sCt开头的字符串,很像Base64的结果。我们尝试用Base64去解一下,发现能解开。
那就毫不犹豫地尝试 Hook android.util.Base64 。
依然木有结果,这就比较神奇了,唯一的解释是 App木有用标准的Base64库函数,而是自己写了一个Base64算法。毕竟Base64的算法满天飞,有手就行。
三、搜索关键字mobile 现在死马当活马医吧。只能尝试去搜搜字符串了
结果并不多,比较有重大嫌疑的就是这两处了。
我们点进去分析 m434739f 函数。
这个App已经混淆到令人发指了,居然还能出现 atlasEncrypt 这么明显的函数,一定得好好Hook它。
m60341e 也值得我们注意,这个类很像是Base64算法,这也解释了为啥Hook android.util.Base64 木有结果。
四、写个demo验证 var IKSecurityExCls = Java.use("com.xxxixxxu.android.security.KSecurity"); IKSecurityExCls.atlasEncrypt.implementation = function(a){ var StrCls = Java.use('java.lang.String'); var inStr = StrCls.$new(a); var result = this.atlasEncrypt(a); console.log(inStr + " >>> atlasEncrypt(Hex) " + bytesToHex(result)); console.log(inStr + " >>> atlasEncrypt(Base64) " + bytesToBase64(result)); return result; } 最后发现可以得到预期的结果~
http://154.39.149.86:5612/zh-cn/sekiro-article/sekiro-frida/
Beta Was this translation helpful? Give feedback.
All reactions