反編譯工具篇 2.1) jeb 爆錘 jadx 和 GDA
1.反混淆優化 字符串解密(jeb的靈魂能力)
這里什么是靈魂能力。
我想起一句很有逼格的話
當你出場的時候,所有人都顯得不過如此。
大家好,我是王鐵頭 一個乙方安全公司搬磚的菜雞
持續更新移動安全,iot安全,編譯原理相關原創視頻文章
視頻演示:https://space.bilibili.com/430241559
正文開始:
很多時候我用jeb分析apk的代碼,就是為了jeb的反混淆優化。
這里,正常有字符串的代碼是這樣的
A方法(明文字符串,其他參數)
被加固殼或者其他源碼混淆工具,混淆過的代碼就是這樣
A方法(字符串解密方法(密文字符串),其他參數)
普通反編譯工具在字符串反混淆這塊,不咋行。
普通反編譯工具遇到字符串加密后,是這樣的
原方法 : A方法(字符串解密方法(密文字符串),其他參數)
反編譯后 : A方法(字符串解密方法(密文字符串),其他參數)
吊打友商的優秀反編譯工具是這樣的
原方法 : A方法(字符串解密方法(密文字符串),其他參數)
反編譯后 : A方法(明文字符串,其他參數)
當然這里大佬們直接去 hook A方法,直接查看函數參數也是可以的。
但是,如果一眼看過去,都是這種函數,你也一個一個hook查看參數嗎,不累嗎
jeb吊打友商的反混淆優化


這里既然是JEB的靈魂能力,那當然是來幾個友商,錘幾個友商
這里為了更好的展示 jeb的靈魂反混淆能力,我還專門寫了個apk 給大佬們看的更清楚些

下圖這樣的場景 你想不想 編譯器優化成這個樣子哪

這個場景,一般情況下,上JEB就可了。
來看一下jeb反混淆后的效果

下圖是jeb的命令行輸出,可以看到這里jeb成功解密了3個字符串
jeb命令行輸出的相關解密日志

開不開心,驚不驚喜。
在看看另外兩個友商:
GDA出來被錘

這里我很好奇 str_wang 原來的字符串在哪里, 看這個反編譯把我搞懵了
我不僅不能一眼看出,被加密的字符串,解密之后是個啥。
我連開發者咋寫的源碼我都不知道了。。。
這里 猜測是作者做新版本太累了,GDA 3.85就沒有這些錯誤,反編譯后可讀性很強

不過依然沒有解決核心問題,還是不能一眼看出解密后的明文是啥
不同於 jadx , GDA這里對解密字符串還是提供了支持的。
網址:https://zhuanlan.zhihu.com/p/250771438

但是,這里搞起來有點麻煩,要手動定位解密函數和引用的密文,
我這種能躺着絕對不坐着的人,當然是懶的搞。
在遇到統一的字符串解密函數,就是一個apk里面,一個統一的方法,負責字符串的解密,這樣的情況下,GDA這種方式還是蠻好用的。
但是如果碰到dexguard那種,一個類一個字符串解密函數,整個apk可能有幾百個,幾千個字符串解密函數。
這種情況下,如果寫GDA字符串解密腳本,時間成本就會變的非常大。
遇到這種情況,強烈建議大佬們直接上 jeb 或者 simplify這種反混淆工具。
jadx-gui出來被錘

jadx-gui這里把中間變量搞沒了,鏈式調用讓代碼看起來更精煉,緊湊,但是並沒有解決核心問題。
我還是不能一眼看出,被加密的字符串,解密之后是個啥。
持續更新移動安全,iot安全,編譯原理相關原創視頻文章
視頻演示:https://space.bilibili.com/430241559
相關資料關注公眾號 回復 工具 下載:

