Android逆向反編譯代碼注入APK過程思路分析

2020-10-04 群鴻課堂

一、名稱解釋

  • 逆向 - 是一種產品設計技術再現過程,從可運行的程序系統出發,運用解 密、反彙編、系統分析等多種計算機技術,對軟體的結構、流程、算法、 代碼等進行逆向拆解和分析,推導出軟體產品的原始碼、設計原理、結構、 算法、處理過程、運行方法及相關文檔等。
  • 反編譯 – 指把機器碼(彙編語言) → 高級程式語言,也就是通過反編譯工 具對低級語言進行逆向工程,獲取其原始碼,比如Java的反編譯,就是將 class文件轉換成java文件。
  • APK - (全稱:Android application package,Android應用程式包)是 Android作業系統使用的一種應用程式包文件格式,用於分發和安裝移動 應用及中間件,一個包含所有代碼和資源文件的壓縮包。

二、反編譯工具

Apktool

  • 功能: 將APK文件反編譯出程序原始碼、圖片資源、布局文件以 及smali文件等,並能將編譯後的項目重新打包成APK。

dex2jar

  • 功能: 將classes.dex轉化成.jar文件。

JD-GUI

  • 功能: 查看.jar源碼文件。

三、注入思路


注入思路流程圖

四、流程詳解

  1. 將目標apk反編譯出smali1文件;
  2. 把目標apk解壓後,使用dex2jar工具將dex文件轉為jar文件;
  3. 通過JD打開jar文件,查看目標App業務邏輯,找到對應 注入的地方;
  4. 開發jar包庫文件;
  5. 將jar包文件轉為smali2文件;
  6. 把smali1和smali2合成為smali3文件;
  7. 在smali1文件中調用smali2相關代碼,完成注入;
  8. 回編譯;
  9. 重籤名;
  10. 安裝測試;

綜上:通過反編譯工具,再結合注入流程,即可將我們想要的功能注入到APK安裝包,實現代碼注入的目標,如果你想學習更多相關知識,點擊文章左下角「了解更多」學習吧。

相關焦點

  • 《Android逆向反編譯代碼注入》- 逆向安全入門必看視頻教程
    《Android逆向反編譯代碼注入》>適合人群:Android開發人員、逆向反編譯開發人員、以及對Android逆向安全感興趣的朋友。視頻地址:51CTO學院:https://edu.51cto.com/course/24485.html騰訊課堂:https://ke.qq.com/course/2868968學完本課程,可以讓大家掌握Android逆向反編譯工具、重籤名工具、smali語法知識、開發jar包,以及代碼修改和注入技術
  • 安卓逆向之APK的反編譯與回編譯及常見的問題應該如何解決
    Apk的反編譯與回編譯是通過什麼途徑實現的,遇到的問題會有哪些呢?今天小編就給大家總結一下。我們分為三部分來講。第一部分是AndroidKillrr 的環境配置;第二部分是apktool工具的使用與更新;第三部分是插件的更新方式。1.
  • SpyNote5.0 Client_APK逆向分析
    開始逆向分析咱們開始對於Client_APK進行分析,通常喜歡將客戶端生成的APK程序拖入androidkiller。(如何生成客戶端請見上文的幾篇文章) 拖入程序後androidkiller會自動進行反彙編,然後有程序分析結果。
  • android反編譯和防止反編譯的方法
    【IT168技術】android基於java的,而java反編譯工具很強悍,所以對正常apk應用程式基本上可以做到100%反編譯還原。  因此開發人員如果不準備開源自己的項目就需要知道怎樣防止反編譯和反編譯他人的項目來學習。
  • 開發總結:Android反編譯方法的總結
    不過比較區別的是Android上的二進位代碼被編譯成為Dex的字節碼,所有的Java文件最終會編譯進該文件中去,作為託管代碼既然虛擬機可以識別,那麼我們就可以很輕鬆的反編譯。所有的類調用、涉及到的方法都在裡面體現到,至於邏輯的執行可以通過實時調試的方法來查看,當然這需要藉助一些我們自己編寫的跟蹤程序。
  • apk反編譯、修改、打包、籤名、安裝
    ,就可能需要用到反編譯,但切忌,自己玩可以,用這東西獲得收益的話可就犯法了...好,廢話少說,直接上反編譯前準備:準備工具:Window、Mac、Linux 電腦均可準備 Java 環境,如有可忽略,用於籤名等操作準備 apktool,根據不同的操作環境進行安裝
  • apk反編譯、修改、打包、籤名、安裝
    有的時候我們想學習一下目標 apk 的邏輯、界面,或者自己有一些特殊的想法的時候,就可能需要用到反編譯,但切忌,自己玩可以,用這東西獲得收益的話可就犯法了...好,廢話少說,直接上反編譯前準備:準備工具:Window、Mac、Linux 電腦均可準備 Java 環境,如有可忽略,用於籤名等操作準備 apktool,根據不同的操作環境進行安裝,配置,用於進行解包、打包等操作準備 jadx,用於查看(僅支持查看,不可修改)知識基礎:android 基礎smali 文件根據修改的邏輯,進行查詢修改
  • Andorid APK反逆向解決方案:梆梆加固原理探尋
    如何使程序代碼免受盜版篡改就成了開發者面臨的頭等大事,今天我們將分析一個不錯的解決方案——梆梆加固。梆梆加固通過對App進行加固保護,梆梆可以有效防止移動應用在運營推廣過程中被破解、盜版、二次打包、注入、反編譯等破壞,保障程序的安全性、穩定性,對移動應用的整體邏輯結構進行保護,保證了移動應用的用戶體驗
  • 小生淺談Java層逆向,「Android逆向技術」
    由於APP是程式設計師通過java代碼編寫而來的,所以我們正常去逆向分析,目的就是還原程式設計師當時開發的代碼,這樣我們就能清楚的了解APP運行時候的代碼邏輯是怎麼樣的。但在逆向板塊,大多需要接助工具,通過反編譯來查看到java代碼,不過一般程式設計師在寫好一個APP代碼後都需要通過開發工具去編譯成程序,這是正向編譯的一個過程,讓代碼變成我們用戶所使用的界面,逆向則是回溯當時程式設計師開發的代碼,來分析程式設計師編寫代碼時候的一些方法並且實現篡改。
  • Java代碼混淆「Android逆向學習」
    有的時候,我們想分析一個程序的Java層邏輯,進行反編譯後,發現代碼所有的函數名、變量名、類名等都成了一些雜亂無章的名字,沒有任何規律可言,這是怎麼回事呢?其實程序是被混淆了。混淆是什麼?發現邏輯很清楚,反編譯之後的源碼和我們寫的代碼完全一樣,我們寫的應用就是一隻被宰的羊,誰都可以咬一口。
  • 自學Android逆向的學習難點
    個人建議初學者從AOSP入手,AOSP就是「Android Open -Source Project,就是android開放原始碼項目。要學逆向開發,還是要循序漸進,先從正向開發學起,學會了安卓正向開發的原理和機制,再去學安卓逆向就簡單很多了。第三步:動手寫。
  • 一份禮物.apk-O泡果奶的逆向分析
    懂了,這不就是 "送給最好的ta.apk" 嗎?使用Android killer或apk改之理分析一下java代碼,發現加密方式也沒變,依舊使用/lib/armeabli-v7a/libluajava.so加密,因此使用ida7.0(x32)對這個文件逆向分析:
  • Android apk資源保護方案研究分析
    比較常見的代碼混淆有proguard、dexguard等,而應用加密近些年國內也湧現出很多安全廠商提供該服務。本文則主要針對Android apk資源文件保護方案進行分析。Android apk中的資源主要分為assets資源和res資源兩類。
  • Android 安裝包 APK 是如何生成的
    這是 dhl 的第 25 篇原創文章在 Android Studio 中直接點擊 Run 『app』 就可以在 build/outputs/apk 生成可以在 android 設備中安裝的 APK 文件,那麼 APK 生成的過程是怎麼樣的呢?
  • 一文入門Android逆向
    廣播接收者的註冊有兩種方法,分別是程序動態註冊和AndroidManifest文件中進行靜態註冊。動態註冊廣播接收器特點是當用來註冊的Activity關掉後,廣播也就失效了。靜態註冊無需擔憂廣播接收器是否被關閉,只要設備是開啟狀態,廣播接收器也是打開著的。也就是說哪怕app本身未啟動,該app訂閱的廣播在觸發時也會對它起作用。
  • Android安全幾道入門題目
    本文通過幾個題目可以讓你基本了解android中簡單的但比較經典的漏洞、以及簡單的android註冊機開發的思路。閱讀本文,你可能需要了解android逆向的基本知識和常用工具、非常簡單的java語言、smali的語法知識。本文適合android入門初學者,最基本的東西。大佬請無視!
  • 帶你開發一款給Apk中自動注入代碼工具icodetools(完善篇)
    中注入日誌代碼工具icodetools原理了,在那裡我們曾經說過其實離真正的可使用價值有點距離,本篇就對這個工具進行一些優化,讓其真正意義上開始能工作量產。第二個問題:在從輸入一個apk到給每個類中的每個方法添加日誌代碼然後在籤名輸出最終的apk,這個過程其實很多步,但是我們之前都是手動的去進行操作,非常麻煩,所以這裡還得解決一鍵化問題。
  • Android逆向之手機環境配置
    這裡我以nexus 5 android 6.0.1為例,其他Google系手機型號及刷其他Android版本系統都是類似的);第二個則是安裝Android逆向分析hook框架(Xposed、frida)及一些常用的基礎插件等。
  • IDA,軟體逆向分析神器
    如果要靜態分析apk程序,那麼肯定要dex-tools + jd-gui搞起,但是,如何動態調試打包好的應用程式呢。本文主要介紹如何用IDA動態調試Android設備上運行的程序。交互式反彙編器專業版(Interactive Disassembler Professional),人們常稱其為IDA Pro,或簡稱為IDA,是總部位於比利時列日市(Liège)的Hex-Rayd公司的一款產品。開發IDA的是一位編程天才,名叫Ilfak Guilfanov。
  • Android系統APK文件詳解
    UnZip,然後類似Symbian那樣直接,和Windows Mobile中的PE文件有區別,這樣做對於程序的保密性和可靠性不是很高,通過dexdump命令可以反編譯,但這樣做符合發展規律,微軟的 Windows Gadgets或者說WPF也採用了這種構架方式。