簡體   English   中英

逆向工程安卓應用(附源碼)

[英]Reverse Engineering Android Application (with source)

查看現有的 Android 應用程序,我有完整的源代碼,我想知道如何確定哪個適配器處理來自正在運行的應用程序中特定屏幕的 UI 的事件。

有許多布局 (XML) 文件和少量(數量明顯減少)的適配器。 到目前為止,猜測、grepping 和設置調試點還沒有讓我找到有問題的適配器。 (坦率地說,我不確定我什至可以為我正在嘗試處理的屏幕找到正確的布局文件!)

我非常熟悉 Web 開發和 PHP,並且給定了一個應用程序,我有很多方法可以找到進入“控制器”代碼的方法。 也相當了解 Java,並且到目前為止一直在為應用程序制作 mod,但現在卡住了......有人可以向我提出有關逆向工程 Android 應用程序的指針嗎?

我上次這樣做是在一年前,當時 Android 安全性很差(而且沒有很多 proguard),所以我使用了 Eclipse 反編譯器和 dex2jar。 實際上我很驚訝 - 你是如何獲得完整代碼的?

使用 eclipse 的好處是您可以回溯調用者的功能。

問題是 - 我不認為你在追求適配器。 如果屏幕是一個列表,那么您實際上是在ListView (其中包含適配器)之后。 也許適配器甚至可能包含對列表視圖本身的引用。 所以,嘗試找到視圖而不是適配器

如果它是一個listView,那么實際上,查找名為“xxxx_row.xml”的東西,其中包含“row”一詞,因為這是listview 視圖的標准約定。

這適用於大多數 Android 應用程序。

一般來說,每個屏幕都是由 Activity 類的一個實例構建的。

  • 檢查項目根目錄中的 AndroidManifest.xml。 查找包含如下意圖過濾器的活動聲明:

     <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>

這是應用程序的“入口”點,並非嚴格正確,但足夠接近此任務。 事實上,Android 創建了一個 Application 類的內部單例實例,它可能會被擴展,但通常不會。 Grep 用於“擴展應用程序”或“:應用程序”以了解。

  • 找到與活動名稱同名的類文件,在本例中為SampleAppMainActivity.

  • 打開這個類文件,找到onCreate()。 這是 Android 在實例化 Activity 時調用的第一個方法。

  • 找到 setContentView()。 它將引用一個布局,可以在 res/layout 或其中的子文件夾中找到,就像這樣。 R.layout.sampleappmainlayout。 文件本身將是 XML。 該文件定義了活動屏幕中使用的 UI 元素(它可能包含合並其他布局)。

  • 如果有多個活動,則在此活動中查找Intent類實例的創建,通常附加到按鈕或菜單單擊偵聽器。

從第 2 步遞歸:)

其他答案涉及適配器的細節。 或者也許不是? Android 使用適配器來處理數據的檢索並將這些數據綁定到 UI 元素。 它們不“響應 UI 事件”。 您可能是在詢問 MVC 模型中的視圖控制器嗎?

祝你好運。

PS 無論你的客戶付給你什么錢,這還不夠。 我能猜到你是怎么得到這個演出的,但是你太棒了。 只是你。

操作系統 Windows 的說明:

  1. 下載 dex2jar-0.0.7.10-SNAPSHOT.zip (版本可以不同)並解壓到文件夾 D:\\Decompile。
  2. 下載Java DecompilerJD-GUI並解壓到同一文件夾。
  3. 下載apktool1.4.1.tar.bz2apktool-install-windows-r04-brut1.tar.bz2並解壓到系統文件夾,即 C:\\Windows。
  4. 例如我們的應用程序叫做Calculator.apk,將它移動到Java Decompilerdex2jar文件夾中
  5. 打開命令行工具 C:\\Windows\\System32\\cmd.exe
  6. 將目錄改成dex2jar所在的文件夾,輸入命令dex2jar Calculator.apk ,如果在同一個文件夾中都成功了就會出現文件Calculator.apk.dex2jar.jar
  7. 打開jd-gui並打開上一步中的文件。
  8. 選擇File-Save All Sources並保存文件。
  9. 提取生成的 zip 存檔。
  10. 將生成的文件夾放入文件夾 src (必須預先創建)。 (繞過這個結構是D:\\Decompile\\Calculator\\src\\com\\android)。
  11. 再次,在命令行輸入命令apktool d Calculator.apk Calculator ,其中 Calculator.apk-包名,Calculator-folder 進行反編譯。
  12. 如果一切順利,那么文件夾中就會有兩種格式的源碼(java和smali),資源和文件AndroidManifest.xml、apktool.yml。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM