<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
這幾天在上海出差,忙裡偷閒學習了一下Apk的反編譯工具的基本使用。下面就簡單介紹一下如何將我們從網上下載的Apk檔案進行反編譯得到我們想要獲得的資原始檔和原始碼。
Android的應用程式APK檔案說到底也是一個壓縮檔案,那麼可以通過解壓縮得打裡面的檔案內容,不過很顯然,當你去解壓完去檢視的時候,發現裡面的很多東西和你想象中的不太一樣。資原始檔等xml檔案基本打不開,即使開啟了也都是亂碼(而這正是Android進行加密過),有些應用會將圖片資源等的也加密(如qq音樂)。
而既然直接解壓無法看到正常的應用程式,那麼就需要藉助反編譯軟體來實現APK的反編譯。
Android工程檔案主要有資原始檔和原始碼組成。而為了檢視資原始檔需要藉助一個工具,本文使用的是apktool工具進行反編譯,經過編譯後能夠正確檢視XML檔案和其他的非XML的資原始檔,這對於漢化而言有著巨大的意義。而為了檢視原始碼,則需要藉助於dex2jar和jd-gui這兩個工具,其中dex2jar工具負責將dex檔案轉化為jar檔案,而jd-gui則用於檢視jar檔案。
一次失敗的經歷-----使用apktool時報錯
原因:apktool的版本過低,無法解析當前版本的apk。
修正:
更新最新的apktool版本後正常,本文使用的最新apktool版本為2.2.2.
然後就可以發現資原始檔等xml檔案可以正常開啟。
接下來就需要對source code進行反編譯。
需要藉助工具Dex2jar和jd-gui。其中Dex2jar,顧名思義就是將dex檔案反編譯為jar檔案。而jd-gui則用於直接檢視jar包中的原始碼。
具體步驟就是將apk檔案解壓,得到其中的classes.dex,它就是java檔案經過編譯而後通過dx工具打包而成的,而後解壓下載的dex2jar,將classes.dex複製到dex2jar根目錄下,在命令列下定位到該目錄下,執行d2j-dex2jar.bat classes.dex classes.dex
可以發現得到一個classes-dex2jar.jar檔案。這個檔案就是我們需要得到的source code。
接下來需要在jd-gui中瀏覽該檔案,這個就是最終的結果
當然,你也發現了這些原始碼都是被混淆了的,即用無意義的字母來重新命名類、成員變數、方法和屬性以及刪除沒用的註釋。
既然都提到了這裡了,我們也順便了解一下Android Apk的加密過程。
由於Java位元組碼的特殊性,使得它非常容易被反編譯,(正如剛才我們進行的那些操作,藉助一下工具就反編譯了一個QQ音樂的Apk),因此,顯然我們會有一些保護措施,對編譯好的Class檔案進行一些保護。通常我們都會使用ProGuard來對Apk進行混淆處理,用無意義的字母倆重新命名類、成員變數、方法和屬性。(當然它能刪除一些無用的類、成員變數、方法和屬性以及刪除沒用的註釋,最大程度優化位元組碼檔案)
而現在我們一般都採用Android Studio作為開發平臺,在該平臺下可以很方便的使用ProGuard,在Gradle Script資料夾下,開啟build.gradle(Module:app)檔案,顯示如下:
這裡的minifyEnable即為控制是否啟動ProGuard的開關,設定為true則開啟ProGuard進行混淆和優化。
而proguardFiles分為兩部分,前半部分是一個系統預設的混淆檔案,位於SDK目錄下的tools/proguard/proguard-android.txt,一般情況下使用這個預設的檔案即可,另一部分是專案中自定義的混淆檔案,可以在專案中的App資料夾中找到這個檔案,在這個資料夾中可以定義引入的第三方依賴包的混淆規則。設定好ProGuard後,只要使用AS匯出Apk,即可生成混淆後的位元組碼檔案。
以上就是Android Apk反編譯及加密教學的詳細內容,更多關於Android Apk反編譯及加密的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45