反編譯工具篇 1) Jadx-Gui 爆錘 jeb 和 GDA


反編譯工具篇 GDA Jadx-Gui Jeb的對比 Jadx-Gui優點

00 前言:

首先,這只是我對自己常用的幾個反編譯器的對比,帶有強烈的主觀傾向。

然后,我對這幾個工具的作者都十分尊重,感恩他們寫出了這么好的工具,這里並沒有拉一個打一個,或者貶低誰的意思,我覺得都是大佬。

至少人家編譯原理的熟悉程度,不是我不能比的,我還要再學挺久才能到達人家那個高度。

還有,對比的只是我自己經常用的功能,我並沒有像素級的使用每個功能,並詳細對比,結論也會一定程度的偏頗,大家這里做個參考就好。

這里,我只是站在一個普通使用者的角度。去開箱做對比,沒人給我塞錢讓我說好話或說壞話,畢竟我也沒啥知名度,只是個小透明。

大家好,我是王鐵頭 一個乙方安全公司搬磚的菜雞
持續更新移動安全,iot安全,編譯原理相關原創視頻文章
視頻演示:https://space.bilibili.com/430241559


這里主要登場的工具版本號是

GDA3.95 免費版 (收費版我沒用過,想着后續跟工地申請一下,買一年用下)

jadx-gui 1.2.0

jeb pro 3.19 (實測 jeb pro4.3跟這一版 區別不大)


工具截圖

這里我經常用的反編譯工具主要有3個 GDA jadx-gui Jeb 這里先上一下工具截圖

反編譯工具 GDA JEB JADX

上圖有的工具不是最新版,主要是因為懶得去更新,而不是因為我選的這個版本版本穩定啊之類的。

下面用網上的一個apk樣本,和我自己寫的一個apk樣本, 簡單說一下這三個工具的優缺點。

01 apk樣本相關

樣本1

來源:

https://www.52pojie.cn/thread-311989-1-1.html

樣本1 是被 dexguard加固殼加固過的樣本,dexguard在國內用戶不多,是歪果仁寫的加固殼, 這個加固殼的特點就是,java層混淆很強,比國內的很多殼強多了。

這個樣本是14年的,混淆不是那么變態,這兩年的dexguard真是讓人看了就想直接回收站。

dexguard jadx反編譯源碼

樣本2

來源:一個不願透漏姓名的某鐵頭 自己寫的

某鐵頭自己寫的這個apk,寫了一個字符串加密的方法,並且進行了調用,就是為了讓大佬們對比某工具,反混淆優化的效果。

反編譯工具demo

之所以選擇這兩個樣本,是為了更好的展示這幾個反編譯器的優缺點。


02 JADX-GUI 登場

github地址:https://github.com/skylot/jadx

jadx github

編譯好的release版本地址: https://github.com/skylot/jadx/releases

當前演示版本:1.2.0

Jadx-Gui的優點

1.反編譯的代碼可讀性強

1.1 有調試信息的apk反編譯對比:

首先看源代碼

演示demo源碼

jadx反編譯apk

jadx smali 變量名

在有調試信息的apk里, 完美還原了所有的變量名。

看完smali, 看看反編譯的java代碼。

jadx反編譯成java代碼


這里看看友商的表現

1.1.1 jeb出來挨錘

首先是 debug版帶調試信息apk Jeb 和 Jadx反編譯的對比

這里可以看到,參數和一個局部變量的名字並沒有完美還原。

jeb jadx反編譯對比

行吧,下一個。

行吧 這一場 jadx-gui 成功 ko Jeb .

1.1.2 GDA出來挨錘

jadx GDA反編譯對比

這里e2 我猜測作者 可能是考慮到多重異常嵌套的情況下

為了區分,所以加了一個隨機數?

但是這里類型都錯了還是比較減分的。

同樣的問題,換到3.85就沒有了, 這里想着,可能是GDA作者做新功能 類似frida 支持啊之類的太累,所以出了bug?

GDA反編譯代碼

行吧 下一個吧。

這一場 jadx-gui 成功 ko GDA .

1.2 無調試信息 被混淆過的apk反編譯對比:

如果沒有調試信息,又會咋樣呢?

這里找了一個用Proguard混淆過代碼,並且刪除過.source信息的樣本。

jadx反編譯 smali

jadx反編譯java源碼

這里看看jadx對方法體對代碼的還原。

jadx反編譯的效果

這里可以看到,在沒有任何調試信息,還被Proguard混淆過后,Jadx自己實現了一套重命名的規則。

簡直是福音一樣,代碼變得清晰可見,吊打友商。

看看友商是啥樣

1.2.1 GDA和JEB同時被錘。

GDA JEB反編譯代碼

這里GDA和jeb兩個友商恢復的代碼,可讀性都不咋樣

不管是 p0 p1 p2 還是 arg8 arg10 arg11

可讀性都不強,自己一個一個改 可太累了

2. 字符串 搜索簡單便捷 展示信息全

jadx搜索字符串

2.1 GDA出來挨錘

GDA搜索字符串

這里GDA搜索字符串 詳情,只展示了字符串信息,沒展示引用代碼。

字符串所在的方法,對應的包名啊類名啊,都沒有展示。

這里字符串少還好,如果十多個地方引用到了,我不得看看包名,類名,引用代碼,然后定位我想要分析的位置嗎。

害,下一個。

2.2 JEB出來挨錘

jeb搜索字符串

查看引用之后

jeb查看字符串引用

JEB這里搜索字符串這個步驟 就比較麻煩了,

多了一個查看交叉引用的操作,把操作分解成了2個操作。

而且詳情展示這里,展示的也不是java代碼 ,而是smali, 咋,是讓我人肉翻譯成java嗎?

行吧,下一個

3. 免費

另外兩個工具,JEB Pro 和 GDA Pro都是收費的

這個沒啥說的,恰飯挺正常的。

jadx-gui 不要錢就是香。

持續更新移動安全,iot安全,編譯原理相關原創視頻文章
視頻演示:https://space.bilibili.com/430241559

相關資料關注公眾號 回復 工具 下載:
移動安全王鐵頭


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM