導航:首頁 > 源碼編譯 > 安卓反編譯歷史

安卓反編譯歷史

發布時間:2024-05-26 20:44:01

① 安卓app360加固怎麼反編譯

1 對比

上傳demo進行加固,解包後對比下原包和加固包,發現加固包在assets文件夾下多了libjiagu.so,libjiagu_x86,lib文件夾下多了libjiagu_art.so,同時修改了dex文件和androidManifest文件

打開manifest文件,看到xxx加固對Application標簽做了修改,添加了殼入口,也就是我們反編譯後看到的StubApplication.smali這個文件。

相比於之前版本的加固,自從1.x.x.x加固版本之後,多了幾次反調試,使得動態難度稍微增大了一些,不過針對脫殼機脫殼,再多了反調試也是無用。或者通過修改系統源碼,也能達到消除反調試的作用。


2 動態調試

(1)把app安裝到手機,以調試模式打開app

(2)以shell模式root許可權打開IDA的android_server監聽

(3)tcp轉發

(4)打開IDA,修改配置為在進程開始時下斷

(5)搜索到進程後jdwp轉發,pid值即為我們進程號,並在命令行下附加。

成功附加後,可以下段了,打開Debugger Option

我們選擇在線程開始和庫載入時下斷,修改成功後,jdb附加,點擊運行

程序會斷在elf頭處,按下G鍵,搜索mmap,在mmap函數的段首和斷尾下段

F9運行,來到斷尾時F8單步,

來到此處時,在 BLunk_5C999C2C下斷,F9一下,F7跟進去

跟進去今後在BLX LR處進行下斷,此處就是進行反調試的地方,原理依然是獲取TracePid的值判斷當前是不是處於調試狀態,建議第一次調試的人在fgets和fopen處下斷,再f7跟進此調用就可以看到TracePid的值了。

跟進去之後,我們直接把方法移到最下方,就可以看到kill符號了,這就是殺進程的地方,如果當前處於調試狀態,則直接結束進程。

我們在此函數的所有cmpR0,#0處下斷,F9一下後即斷在斷點處,觀察寄存器窗口的R0值,實質就是當前的TracePid的16進制的值

不確定的可以使用cat /proc/pid/status進行對比一下,我們直接把R0置0,右鍵選擇Zero Value即可清0,繼續F9

我們看到程序又來到了mmap處,繼續f9

當繼續斷在調用反調試功能的方法時,繼續F7跟進,依然在所有的cmp R0,#0處下斷,斷下後把R0清0後繼續F9運行

目前的規律是,調用BLXLR的第一次,第二次和第四次是進行反調試判斷的,第三次並不影響,可以直接f9跳過去,三次反調試搞定後,就可以愉快的F9運行並觀察堆棧窗口了

當看到出現如下所示時:

說明殼已經開始解密並釋放dex文件了,我們直接F8單步十幾步,最後F9一下就可以看到我們需要的dex頭了

直接腳本mp出來即可,最後把libjiagu的所有文件刪除,並修復下Application標,如果存在則修復,不存在刪除即可

② 如何利用apktool反編譯apk

首先的知道一下幾條指令的意思
1,apktool d SysteUI.apk 12意思是將SystemUI.apk解包到12文件下,12文件夾不用創建,會自動生成
2,apktool b 12打包12文件夾(將會自動把12文件夾里的修改過得APK解包後修改完後自動打包,生成resources.arsc,文件,這就是我們反編譯的主要目的,當然還有其他目的,後面將會說明怎麼apktool需要反編譯的目的,生成的文件。
3,apktool if framework-res.apk這條語句很重要很多時候我們容易忽略這條語句導致打包不成功,這句語句的意思是,有些時候我們解包apk文件需要用framework-res.apk(framework是指系統框架。有時也會用到apktool if twframework-res.apk,同樣我們只需在前面輸入就行。當然得把framework-res.apk 這個文件目錄下。
4,apktool if twframework-res.apk ,當然 twframework-res.apk 也應該放在文件目錄下,不如反編譯Mms.apk.....會用到
知道這四條語句我們就可以進行反編譯了。
已反編譯SystemUI.apk為例,,下面開始講解
現在cmd下輸入apktool if framework-res.apk(並把framework-res.apk 放在文件目錄下)apktool if twframework-res.apk( twframework-res.apk 也應該放在文件目錄下 )其實這兩部就是搭建安卓系統環境 ,輸入完後在解包,apktool d SystemUI.apk 12就行了

③ 如何反編譯Android 的apk/dex/odex,獲得源碼

關於APK,DEX的介紹

當我們編譯一個安卓項目的時候,整個項目會被打包成一個 .apk文件。這個文件其實是一個標準的zip文件,因此可以用解壓縮工具打開。這個apk文件一般都包含程序的代碼(在classes.dex文件中), 資源文件, 證書, manifest 文件等。 其中對我們最重要的是classes.dex文件,因為編譯後的位元組碼(bytecode)都是放在這個文件中。我們後面講的反編譯就是針對這個dex文件來的。

反編譯普通的APK文件:

對於普通的APK/DEX文件的反編譯,其實工具有很多, 包括:

④ 安卓反編譯出來的代碼如何修改重新生成APK

反編譯步驟:

  1. 下載apktool 並設置環境變數

  2. 命令行進入apk目錄執行:apktool d xx.apk (如果遇到一些錯誤說明apk做了防破解處理)

  3. 執行成功後會生成xx文件夾,進入xx文件夾修改需要修改的內容,如果需要修改代碼,進入xxsmali裡面,需要懂一些smali語法

  4. 修改完後回到命令行,執行:apktool b xx ,會在xx文件夾裡面生成一個dist文件夾,裡面的apk就是回編譯的,這個apk是沒有簽名的

  5. 下載網上的簽名工具對apk簽名,完了就可以安裝了(如果你下載了源碼或者sdk,裡面自帶一個signapk也可以簽名)

⑤ 瀹夊崜apk鍙嶇紪璇戝伐鍏峰畨鍗揳pk鍙嶇紪璇

apktool5.0奼夊寲鐗堬紵

Apktool5.0奼夊寲鐗堟槸涓嬈懼畨鍗撶Щ鍔ㄥ鉤鍙頒笂鐨勫弽緙栬瘧宸ュ叿杞浠訛紝!Apktool鐜板凡瀹岀編鍏煎笰ndroid5.0L錛屼嬌鐢ㄥ畠鍙浠ヤ慨鏀硅蔣浠跺簲鐢ㄥ悕縐幫紝緇欒蔣浠跺簲鐢ㄥ幓騫垮憡銆佺牬瑙c佺懼悕銆乑IP浼樺寲絳夛紝鏀鎸乯ava緙栬瘧鍣錛屽彲鍦ㄦ墜鏈轟笂瀹屾垚綆鍗曠殑.java鏂囦歡緙栬瘧鍙婅繍琛岋紝鎵嬫満鍏氬java鐨勫埄鍣!浣滆呬粠鍙戝竷浠ユ潵涓鐩村緢浣庤皟錛岄潪甯稿己鎮嶇殑鎵嬫満絝鍙嶇紪璇戝伐鍏楓

鍙嶇紪璇慳pk鎶io寮傚父鏄鎬庝箞鍥炰簨錛

榪欎釜apktool鏈韜灝變笉鏀鎸佷竴浜沘pk鐨勫弽緙栬瘧錛屽洜涓哄弽緙栬瘧涓嶅彧鏄鏇挎崲瀛楃﹂偅涔堢畝鍗曠殑錛屽畠閲岄潰寰堝氬湴鏂逛細鐢ㄥ埌鎹曟崏閿欒錛屽洜涓哄紑鍙戣呯殑綺懼姏鏈夐檺錛屽緢澶氶敊璇閮芥槸琚涓鍒鍒囷紝瑙嗕負鏃犳硶榪愯岃ユラわ紝鐒跺悗鎶婇棶棰樹涪緇欑敤鎴楓

鐭ラ亾apk鐨勫悕縐板備綍鍘誨繪壘錛

1.杈撳叆鍛戒護錛歛dbshellammonitor銆

鐒跺悗鍚鍔ㄩ渶瑕佽幏鍙栧寘鍚嶇殑搴旂敤銆

2.鏌ョ湅鑷宸卞畨瑁呯殑app鍖呭悕銆

3.瀹夊崜緋葷粺涓錛氳劇疆鈥斺斿簲鐢ㄢ斺旀e湪榪愯屾煡鐪嬨

4.瀹夊崜緋葷粺涓錛氭枃浠剁$悊鍣ㄨ塊棶鐩褰/data/data涓嬶紝鏂囦歡澶瑰嵆涓哄寘鍚嶃

5.灝哸pk鍖呭弽緙栬瘧鍚庯紝鎵撳紑AndroidManifest.xml錛屾悳緔package鑾峰彇鍖呭悕銆

apk鏂囦歡鎬庝箞鍐欙紵

APK鏄疉ndroidPackage鐨勭緝鍐欙紝鍗矨ndroidapplicationpackage鏂囦歡鎴朅ndroid瀹夎呭寘銆傚彲浠ョ敤apktool錛宎pkmanager絳塧pk鍙嶇紪璇戝埄鍣ㄨ繘琛岀紪鍐

⑥ 安卓apk文件如何反編譯

安卓apk文件反編譯:
一、反編譯xml文件
1>
首先下載我給你們提供的文件夾apk_fanbianyi,把它放到某個盤的根目錄下(為了方便輸入dos命令),然後打開apktool文件夾,安裝win+r鍵,然後輸入cmd,進入dos命令行,大家別怕,不用暈,很簡單的。
2>
然後在dos命令中首先輸入文件夾所在盤符+「:」回車,接著再輸入cd+apktool所在目錄,切換dos工作空間到apktool文件夾下。
3>
接著輸入
apktool.bat
d
【需反編譯apk文件路徑】
{【反編譯文件反編譯後的路徑】},其中最後一部分可以省去,系統會默認把apk文件反編譯到apktool目錄下,例如輸入
apktool.bat
d
d:/apk_fanbianyi/ttkp.apk,在apktool文件夾下就會生成一個ttpk的文件夾,所有的xml文件全部反編譯成功。
二、反編譯java文件
1>
首先解壓需要反編譯的apk文件,拷貝出裡面的classes.dex文件到dex2jar文件夾(為了方便操作,省去dos命令輸入路徑的麻煩)
2>
把工作空間切換到dex2jar文件夾下,輸入命令cd
d:/apk_fanbianyi/dex2jar回車
3>
輸入命令dex2jar.bat
classes.dex回車,發現dex2jar文件夾下多了一個classes_dex2jar.jar文件,這是反編譯成功的java文件
三、xml文件的打開
1>
打開apktool文件夾下的ttkp文件夾,任意找到一個xml文件,選中單擊右鍵,選擇notepad++打開(需下載),如果沒有此軟體,可以選擇打開方式,選擇記事本打開
四、java文件的打開
1>
dex2jar文件夾下的classes_dex2jar.jar拷貝到apktool文件夾的ttkp文件夾中,不能用notepad++打開,不然會亂碼的
2>
啟動apk_fanbianyi文件夾下的jd-gui.exe,然後點左上角file,選擇open
file,找到classes_dex2jar.jar文件,可以發現有很多包,選擇包下的任意一個java文件,打開不亂碼了,是不是很神奇,哈哈,你學會了安卓apk文件反編譯

閱讀全文

與安卓反編譯歷史相關的資料

熱點內容
實況為什麼安卓看不了 瀏覽:129
Java多線程Queue 瀏覽:94
雲伺服器499元三年 瀏覽:980
nbd源碼 瀏覽:846
x86在arm上編譯 瀏覽:7
linux怎麼配置網路 瀏覽:307
程序員想要的小禮物 瀏覽:186
java獲取網頁url 瀏覽:624
怎麼做解壓神器泡泡版 瀏覽:966
自己動手做一個c編譯器 瀏覽:929
手機如何鏈接谷歌伺服器地址 瀏覽:137
廢掉一個程序員的武功 瀏覽:249
java樹形演算法 瀏覽:641
通達信加鎖指標源碼怎麼看 瀏覽:754
將同名文件移動到部分同名文件夾 瀏覽:403
擺盪指標加壓力線源碼 瀏覽:915
新一代單片機特徵 瀏覽:770
王者的伺服器什麼時候才修好 瀏覽:281
cad歷史命令 瀏覽:41
php博客源代碼 瀏覽:24