1. 程式人生 > >Android逆向工程之反編譯註入程式碼

Android逆向工程之反編譯註入程式碼

反編譯植入程式碼。

     其實思路很簡單:

    1、首先我們要反編譯targetapk.apk,得到原始碼對應位元組碼。我們知道,如果我們要植入程式碼到其中,必須加入位元組碼然後重新編譯打包。

    2、怎麼寫位元組碼?其實我們只要新建一個Android工程,將我們需要加入的Android程式碼寫入,然後打包成apk,比如sourceapk.apk;接著反編譯它得到Android程式碼對應的位元組碼。

    3、將需要植入的Android程式碼對應的位元組碼拷貝,貼上到targetapk對應的位元組碼原始檔中的合適位置。

    4、重新編譯targetapk對應的原始檔,生成apk後進行簽名即可安裝使用。

一、反編譯與打包

使用ApkTool反編譯apk檔案:

1、下載Apktool(建議使用2.0以後版本),得到三個檔案,分別是:aapt.exe、apktool.bat、apktool.jar。

 

2、將需要反編譯的apk拷貝到這三個檔案的同一級資料夾下。使用cmd命令進行編譯與打包

 

3、執行cmd命令至ApkTool資料夾下,反編譯target.apk

 

反編譯命令:apktool d -f [-s] target.apk -o targetfile

target.apk為你要反編譯的目標apk,targetfile為反編譯後文件存放的路徑(建議使用全路徑)

反編譯結果:

 

打包命令:

apktool b -f targetfile(targetfile是反編譯生成的資料夾 即target資料夾)

執行後會在該資料夾下生成兩個資料夾dist、build,在dist資料夾下既是打包後的apk(此apk還不能安裝使用,因為缺少簽名)

打包結果

 

可能用到的cmd命令:去根目錄,碟符 : (比如去D盤   D:回車)

去其他目錄,cd 路徑

二、植入程式碼

Android反編譯只能獲得smali位元組碼,所以注入程式碼也只能注入到smali檔案中

1、新建一個工程,將你想要植入的程式碼寫入其中 然後打包生成apk,再反編譯,獲取其中的位元組碼

反編譯後會在目標資料夾下生成幾個資料夾和檔案

 

一般植入程式碼只需要操作smali資料夾下的smali檔案和AndroidManifest.xml檔案(注意需要整體新增activity時,將smali檔案內的包名替換成目標檔案的包名 否則植入會無效導致apk執行出錯,可以使用NotePad批量替換)

具體操作直接上圖:

AndroidManifest.xml檔案,跟原來的一模一樣

 

這是smali資料夾下的檔案,(需要新增其他Activity的話,直接將其他Activity的smali檔案複製到這個資料夾下,要記得改裡邊的包名)


MainActivity.smali檔案

 

三、重新打包 簽名;

使用Auto-sign簽名:

1、下載Auto-sign並解壓

 

2、將未簽名的apk檔案拷貝到Auto-sign的資料夾下並改名為update.zip

3、執行Sign.bat批處理檔案

4、生成update_signed.zip,改名為apk即為簽名後的檔案

第一次總結到部落格,寫的很亂。其中大量參考其他博文

工具下載地址:

ApkTool+Auto-sign(需要一個csdn積分 介意的去找其他免費的)

相關推薦

Android逆向工程譯註程式碼

反編譯植入程式碼。      其實思路很簡單:     1、首先我們要反編譯targetapk.apk,得到原始碼對應位元組碼。我們知道,如果我們要植入程式碼到其中,必須加入位元組碼然後重新編譯打包。     2、怎麼寫位元組碼?其實我們只要新建一個Android工程,將我

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

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

iOS逆向工程App脫殼

工程 脫殼 一、生成dumpdecrypted.dylib動態庫首先我們要生成“砸殼”用的動態庫dumpdecrypted.dylib,我們“砸殼”時主要用到這個動態庫。該動態庫的源碼在github上是開源的(Github地址),要想得到dumpdecrypted.dylib這個動態庫,只需要從git

iOS逆向工程Hopper中的ARM指令

工程一、Hopper中的ARM指令ARM處理器就不多說了,ARM處理器因為低功耗等原因,所以大部分移動設備上用的基本上都是ARM架構的處理器。當然作為移動設備的Android手機,iPhone也是用的ARM架構的處理器。如果你想對iOS系統以及你的應用進一步的了解,那麽對ARM指令集的了解是必不可少的,ARM

逆向工程App脫殼

rar gin why 小文件 -a dump anti 功能 加固 本篇博客以微信為例,給微信脫殼。"砸殼"在iOS逆向工程中是經常做的一件事情,,因為從AppStore直接下載安裝的App是加殼的,其實就是經過加密的,這個“砸殼”的過程就是一個解密的過程。未砸殼的Ap

Mybatis逆向工程三種實現方法

ntb roo obj tar ges detail 是否 href rip 1.逆向工程之原始方法 (1)下載兩個jar包:mysql-connector-java(6.x版本及以上的和5.x版本有所區別,主要是驅動和時區;詳情參見:https://blog.csdn.n

android逆向破解關鍵字一

大家都知道破解Android軟體的時候,尋找關鍵字的真的很重要,有時候找不到關鍵字你就可以找一天,反覆安裝,都無法成功的破解你想要的功能. 關鍵字: 一: 關鍵程式碼:screenorientation 豎屏關鍵程式碼:portrait 橫屏關鍵程式碼:landsc

Android逆向工程-破解 哈皮妹-蘿莉

轉載請註明出處:http://blog.csdn.net/singwhatiwanna/article/details/18797493前言新的一年新的開始,除了繼續我的原有課題之外,我還打算研究下Android逆向工程的一些東西,主要包括反編譯、Smali、APK打包、簽名

MyBatis逆向工程生成檔案解析

一、mapper介面中的方法解析 mapper介面中的函式及方法 方法 功能說明 int countByExample(UserExample example) thorws SQLExceptio

Android 逆向工程

1. Apk簽名 1). 建立簽名檔案 新建專案 -> build -> Generate Signed Bundle/APK... -> Create new...

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

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

Android逆向工程(一)-Apktool使用

當我們辛辛苦苦寫的程式碼被別人抄走的時候一定會讓我們非常的抓狂。要學會防守,我們也需要知道別人進攻的方式,接下來我們學習下如何破解Apk。Apktool是家喻戶曉的逆向工具,我們學習下如何使用它。 安裝 http://ibotpeaches.github.i

iOS逆向工程Hopper+LLDB除錯第三方App

LLDB是Low Level Debugger的簡稱,在iOS開發的除錯中LLDB是經常使用的,LLDB是Xcode內建的動態除錯工具。使用LLDB可以動態的除錯你的應用程式,如果你不做其他的額外處理,因為debugserver缺少task_for_pid許可權,所以你只

android 逆向工程

很多人寫文章,喜歡把什麼行業現狀啊,研究現狀啊什麼的寫了一大通,感覺好像在寫畢業論文似的,我這不廢話,先直接上幾個圖,感受一下。 第一張圖是在把程式碼注入到地圖裡面,啟動首頁的時候彈出個浮窗,下載網路的圖片,蒼老師你們不會不認識吧? 第二張圖是微信運動步數作

Android逆向分析dex2jar和jd-gui使用

從大三伊始到大四落幕,從剛開始接觸Android到辭掉第一份實習工作,我接觸Android應用層開發也快接近兩年了。越來越發覺Android的應用層已經沒什麼挑戰性了,想當初剛開始學習Android的時候,弄了一個Activity出來顯示在手機的那份喜悅,真是~哈哈~,應用

Android逆向工程

在Root前提下,我們可以使用Hooker方式繫結so庫,通過逆向方式篡改數值,從而達到所謂破解目的。然而,目前無論是軟體加固方式,或是資料處理能力後臺化,還是客戶端資料真實性驗證,都有了一定積累和發展,讓此“懶技術”不再是破解修改的萬金油。再者,閱讀彙編指令,函式指標替換,

Android逆向分析Xposed的hook技術

轉載自:http://blog.csdn.net/qq_18870023/article/details/51753587 Android逆向工程裡常用到的工具除了的dex2jar,jd-gui,  Apktool之外還有一個Xposed。 這個工具是一個在不修改AP

Android逆向工程:講解相關逆向工具的配置和使用,帶你快速熟悉逆向操作

有個一週沒有寫部落格了,最近一直都在忙於公司的業務開發,沒有多少時間來和大家分享技術,好不容易逮到一個時間,抽空寫一下部落格,那麼就讓我們趕快開始今天的學習把! 上面的部落格中,我們學習了smali語法的相關知識,以及動態除錯smali程式碼的操作,不知道你是否已經學會了,

逆向工程(根據模板和資料庫生成程式碼)

在公司開發專案的過程中,增刪改以及根據id的對單表的查詢都不需要自己寫程式碼,直接根據模板和資料庫就可以生成一整套程式碼,包括前端和後端的從而可以直接通過前端來實現對資料庫的操作,這樣大大提高了開發的效率,對於開發人員只需要寫複雜的查詢的就可以. 我們使用的一個工具是自己寫的LKGene

Maven中Mybatis逆向工程的使用(自動生成程式碼

1、新增maven外掛,讓maven環境支援mybatis-generator元件在pom.xml裡面新增如下程式碼: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XML