apkTool---一個簡單好用的apk反編譯工具

hacker_Lees發表於2018-05-08

前言
一直聽說過反編譯,感覺很高大上,一直沒自己用過,今天因緣巧合之下,終於要開始逐漸認識,瞭解和學習一下反編譯了~先給自己說下加油,鼓勵一下下

apktool的下載和安裝
apktool 下載地址:
Apktool [![Join the chat athttps://gitter.im/iBotPeaches/Apktool]

apktool 安裝教程:
這個是上面網站上給出的安裝使用文件:
Apktool - How to Install

注:以上都需科學上網.

首先,先反編譯一下
當完成以上步驟之後,我們 window +R->開啟 cmd 視窗

1.執行 apktool 命令 出現了 apktool 的版本號和指導的命令
這裡寫圖片描述

2.隨便找來一個 apk ,嘗試反編譯一下,執行 apktool d -f c:\test.apk -o c:\test 命令,把 test.apk 反編譯,反編譯後的檔案放入 c 盤下的 test 檔案中
這裡寫圖片描述
3.反編譯的檔案結構如下:
這裡寫圖片描述

這裡寫圖片描述

造成這個現象的原因是:

Android 的 assets 和 res 檔案都不會編譯為二進位制檔案,所以反編譯後,基本都是能看到它的全貌.

Android 中 .Java 檔案,在 JVM 編譯之後變成 .class 檔案,然後再經過Android 的虛擬機器 Dalvik,程式碼編譯為 .smali 檔案

smali 是另外一種語言,和彙編是有點像的,涉及暫存器操作等,下面是一個截圖,對於我來說,只能是大概能看懂:

這裡寫圖片描述

若是對 smali 語法有興趣,可以去下面網址看一下,StackOverFlow 上面萬能網友們給出了很多學習的網址.

What’s the best way to learn Smali (and how/when to use Dalvik VM opcodes)?

然後,想想反編存在的意義在哪裡?
Every coin have two sides.這是我高中英文作文基本都會寫的一句話.每個工具都是一把雙刃劍,就像一枚硬幣有正反兩面一樣.那麼 強大的 apktool 肯定也是一樣.以下屬於,我個人的見解,如有不對,還望指正.

帶來便利一面:

提供一個方式,去反編譯優秀的軟體,學習知識
smali 是 Dalvik 的執行語言,你完全可以通過反編譯去檢視 Java 程式碼的 smali 語言,去更深入的瞭解程式的執行原理和流程
帶來威脅一面:

釋出的 APK 被二次打包,作為盜版產品使用,甚至惡意插入廣告,病毒等,對軟體公司帶來損失
釋出的 APK 被反編譯,獲取的有關伺服器的資訊,給伺服器帶來威脅.
通過反編譯修改 smali 檔案,減去客戶端的限制,去獲取不正當的利益,一般發生在遊戲軟體上
對於開發者來說,前者你可以不用,但是後者不得不防,於是,我們必須給自己的 APK 加上保護.

至於怎麼加,表示最近正在瞭解和學習這方面的知識^_^,也許下篇部落格會講,我會回來補上鍊接的.

連結來了:Android-安全-簽名驗證讓二次打包變的更難(https://blog.csdn.net/qq_32452623/article/details/54351364

相關文章