1. 程式人生 > >Android APK逆向工程/反編譯總結

Android APK逆向工程/反編譯總結

 

1概述

本文涉及的內容本質上就是APK的反編譯, 作為一個開發者, 需要正視一下本文所談及的技術, 目的是為了讓你借鑑/學習優秀實踐, 而非讓你去盜用其它開發者得成果。事實是, 通過本文所談及的內容, 如果不付諸實踐和學習,沒有比較好的Android基礎, 實質上也不能從反編譯的一堆程式碼檔案中, 得到有價值的資訊。本文不贊成任何有損開發者勞動成果的行為。

2 基本知識

很多東西實質已經不需要再總結, 這方面有兩個不錯的資料。 請移步到下面的連結中閱讀:

點評: 不難發現程式碼都被Android打包成dex檔案, 通過這個檔案復原出來問題不大, 但大部分的情況, 復原後的Java檔案, 基本上不能保證再編譯通過, 但出於技術學習的目的, 某些程式碼片段已經包含足夠的資訊, go and find it!

不贊成文章最後去掉admob廣告的做法, 這樣實質上是對開發者的一種傷害, 通過XML檔案的學習, 對GUI方面的瞭解, 可謂是比較完美了。這個也是本文今天關注的重點,開發人員對GUI這塊非常頭痛, 所以, 通過反編譯apk, 可以好好了解一些優秀實踐所採用的UI方法。另外新版本不需要apk一定得放在C盤根目錄。 任意指定的位置都OK.

3.      Android 佈局學習工具. 

/android-sdk-windows/tools 目錄下的 hierarchyviewer.bat, 是一款研究別人佈局的好工具. 先開啟這個工具, 然後啟動模擬器。發現驚喜. 可以參考這篇文章獲得更多的理解。

Android 利用【Hierarchy Viewer 】 工具學習別人的UI設計 結合上面的第二點。能很好的復原介面元素。

3 應用

大量教程基本上是讓你漢化,破解,去廣告的基本行徑。 本文是為了讓技術開發者更好的學習Android程式用到的技術。作為一個技術人員,基本上一點點小小的思路, 就足夠讓它們借題發揮了。這裡也只是稍微點撥一下個人常用的方法。

1.      利用圖片的名稱對apk破解後的資原始檔進行整體搜尋。將上一章所說的第二個方法一個APK反編譯利器Apktool,可以得到一堆資原始檔。然後Copy到Eclipse的某個工程中。進行搜尋, 最最有效率的方式(還記得快捷鍵吧Ctr+H)。

2.      利用R.java檔案中的id號, 將上一章反編譯apk檔案,得到其原始碼的方法!!得到的原始檔進行搜尋. 這個時候, 基本上所使用的元素的位置基本上清楚了。

3.      當無法定位Activity對應的Layout在哪裡時, 這個時候需要用到上一章講到的第三個方法, 利用hierarchyViewer去檢視佈局。然後結合1和2的資訊做交叉理解。(很有必要提及的問題, hierarchyViewer裡面涉及的佈局, 並非跟Layout的xml完全一致,  在hierarchyViewer中,很容易看到GridView中居然可以包含一個LinearLayout, 這個實際上在XML中,是不允許這樣描述的。一般Android是在原始碼中實現一個GridView包含一個LinearLayout的, 這個時候,不得不利用到上文1和2描述的方法交叉定位).

從上文的分析來看, 所有的資訊都是片段和零散資訊, 技術上並沒有對原來的作品侵權, 僅作為學習交流用。

相關推薦

Android APK逆向工程/編譯總結

  1概述 本文涉及的內容本質上就是APK的反編譯, 作為一個開發者, 需要正視一下本文所談及的技術, 目的是為了讓你借鑑/學習優秀實踐, 而非讓你去盜用其它開發者得成果。事實是, 通過本文所談及的內容, 如果不付諸實踐和學習,沒有比較好的Android基礎, 實質上也不能

Android Cocos2dx引擎 prv.ccz/plist/so等優化快取檔案,手把手ida教你逆向工程編譯apk庫等檔案

前段時間在 Android play 上看到一個很牛逼的 3D 動態天氣預報,效果真的很炫,二話不說動手 dex2jar.bat/apktool 發現這並沒 有什麼卵用,在核心的地方看見 native

Android應用逆向——分析編譯程式碼之大神器

  如果說使用dex2jar和JD-GUI獲得了一個APP反編譯後的JAVA程式碼,再結合smali程式碼偵錯程式來進行除錯還不夠爽,不夠暢快的話,下面將介紹一個幫助分析程式碼執行流程的大神器。這個神器優點很多,不過遺憾的是它有一個致命的缺點!就是威力太大,能讓使用它的人快速

Android逆向工程apk加固後編譯AndroidManifest.xml

Android逆向工程之apk加固後反編譯AndroidManifest.xml Android編譯生成的apk經過加固後,AndroidManifest.xml無法直接檢視,直接開啟是一堆亂碼。在一些情況下, 又特別需要知道加固後的包中某個值最終形態,比如多渠道打包中,根據不同配置生成不同

Android Cocos2dx引擎 prv.ccz/plist/so等優化緩存文件,手把手ida教你逆向project編譯apk庫等文件

反編譯 packer ng- ace yaffs2 ces spa 即將 放棄 前段時間在 Android play 上看到一個非常牛逼的 3D 動態天氣預報,效果真的非常炫。二話不說動手 dex2jar.bat/apktool 發現這並沒 有什麽卵用,在核心的地方看見

Android安全/應用逆向--24--編譯classes.dex檔案

7-1、反編譯classes.dex Java原始碼首先被編譯成.class檔案,然後Android SDK自帶的dx工具會將這些.class檔案轉換成classes.dex。所以我們只需要想辦法反編譯classes.dex即可得到java原始碼。運用安卓反編譯

通過apktool和逆向助手編譯apk

有時候看到別人的app做的效果不錯,想學習學習,但是沒有現成的原始碼,怎麼辦?這個時候就需要用到反編譯。 第二步:給逆向助手的每一個目錄都配置Path環境變數 第三步:使用cmd命令列進入要反編譯apk的目錄下,輸入apktool d -f 應用程式名,得到新的資料夾,裡

Android 如何對apk檔案進行編譯以及重新打包簽名

最近在看視訊的時候看到有關apk檔案如何反編譯的,頓時提起了自己的興趣,記得在剛剛學習Android的時候就對這方面有興趣,只是當時自己的技術…咳…現在自己…咳咳..咳… 注:以下的前提是Java相關環境變數配置完成 我覺得反編譯無非就是能夠得到其apk的資

IDA 逆向工程 彙編使用

IDA pro 7.0版本 from:freebuf 用到的工具有IDA pro 7.0  ,被反彙編的是百度雲(BaiduNetdisk_5.6.1.2.exe)。 首先,IDA pro的長相如下: 共有(File , Edit , Jump , Search , View , Deb

安卓apk一鍵編譯工具

安卓apk反編譯工具,一鍵反編譯AndroidMainfest.xml layout res等資源以及class檔案 使用效果 使用方法 1:複製apk檔案到android-apk-decompile所在目錄 2:windows:直接把apk檔案拖入bat即可

apk decompile 線上編譯工具-toolfk程式設計師線上工具網

      本文要推薦的[ToolFk]是一款程式設計師經常使用的線上免費測試工具箱,ToolFk 特色是專注於程式設計師日常的開發工具,不用安裝任何軟體,只要把內容貼上按一個執行按鈕,就能獲取到想要的內容結果。ToolFk還支援  BarCod

Android打包系列 JAR編譯修改後重新打包

在工作中,有些第三方JAR不能滿足我們的特殊需求,所以經常會有需要修改JAR的情況,這裡給出基本的修改思路,然後再輔以例項。 思路 使用反編譯工具JD-GUI)開啟要修改的jar包(如beforeModify.jar),找到jar包中要修改的class檔案(如A.class)

Python-apk安全檢測--編譯資原始檔(Smali)-工具下載環境配置

         說到反編譯,其實也不是太熟(畢竟這個是些個逆向大神做的事情)。但是在測試環節種我們需要獲取到一些基本的反編譯檔案做一些驗證及測試的工作。為了能夠更好的完成工作就只能自己動手啦!          首先我需要確認一下我們需要得到的目標檔案:Smali(常規反

完美解決 Android Studio 匯入工程, 成功編譯, 但是程式碼提示錯誤

在 github 上下載了開源的程式碼, 使用 Android Studio 匯入工程後, 執行編譯成功, 但是開啟程式碼檔案時, 發現裡面全是紅色提示, 都是些什麼類找不到, 無法匯入包。。。搞得我一頭霧水, github 上求助, Google 上搜索,

五、Android安全機制之編譯(你也可以擁有iPhone X)

    Android應用的反編譯需要了解smali,熟練使用常用的反編譯工具。比如apktool,Jd-jui,dex2jar,Android逆向助手,AXMLPrinter2,jadx,Xposed,IDA,APK改之理,AndroidKiller以及一些adb、aapt

Android Studio逆向工程——向Eclipse遷移

背景:近期接手一個老專案。用Eclipse構建。由於某中原因,一直沿用的Eclipse。然後需要新增新功能,新功能是一個支付專案,給的程式碼是Android Studio構建。為了把專案匯入Eclipse中,費時費力,終於成功。這裡把過程分享一下。 準備階段 首先拿到了專案

apk安裝包編譯+修改程式碼+替換資源+重新打包+簽名全流程記錄

    本文只是先對流程做一個記錄,後續會繼續完善本文,半吊子水平,有錯誤的話,歡迎指正 有個朋友讓幫忙破譯一個apk,雖然大學學過那麼半學期,可是後來基本不在apk領域混了。不過,個人對此還是挺感興趣的,便手癢開搞了。網上查了下,apk反編譯基本就下邊幾個流程:apk安裝

Android應用程式破解(編譯)

一、apktools進行反編譯 1.首先安裝需要JAVA環境(JDK和JRE)     設定JAVA環境變數          CLASSPATH       %JAVA_HOME%\lib\dt.j

android混淆程式碼與編譯

android studio已經提供了預設的混淆程式碼,我們要做的是, 1、在build.gradle中新增 buildTypes {         release {             m

Android 圖解逆向工程中ARM常用匯編指令(一)

我們走得太快,靈魂都跟不上了。 微小的幸福就在身邊,容易滿足就是天堂。 在逆向和爆破中我們經常會在IDA中接觸到彙編,一般做安卓的不會太瞭解VB回編等,不太瞭解的同學可以先檢視上篇文章《Android ARM常用的彙編指令合集》 再來繼續我們