當前位置:首頁 » 編程軟體 » app怎麼反編譯

app怎麼反編譯

發布時間: 2023-04-18 20:37:37

1. 安卓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標,如果存在則修復,不存在刪除即可

2. 求安卓軟體反編譯修改教程

1、baksmali:classes.dex反編譯為smali格式

(smali:smali格式編譯打包為classes.dex,但由於smali格式類似匯編,比較難閱讀,所以用dex2jar進行輔助 )
2、dex2jar:classes.dex轉為jar包
3、jdgui:jar反編譯並閱讀

操作順序:

apk用zip解開,裡面的classes.dex分別用baksmali處理為smali,用dex2jar處理成jar,然後用jdgui看代碼,找好java文件中要改的位置後,在smali里找對應的位置修改,改完了用smali再編譯為classes.dex,覆蓋原來apk里的同名文件,最後重新簽名。注意安裝時要先刪除原來手機里的版本,因為簽名不同。

3. apk怎麼反編譯換圖標比較簡單的方法

一、准備工作
1、下載安裝java jdk
2、配置java環境
3、下載apktools反編譯工具包
二、具體操作
1、將下載來的apktools工具包解壓至c:\目錄下,然後將需要反編譯(修改)的apk文件放入解壓文件夾內。今天就用一鍵鎖屏來做試驗吧。

2、打開一鍵apktools.exe工具,因為不是系統文件所以就直接反編譯,不需要安裝環境!選擇2,然後選擇文件名。這里我們是lockscreen.apk所以我們選2!

3、等待解壓完成,我們在lockscreen文件夾內的res目錄里去修改 程序名稱和程序圖標。程序名稱的文件路徑為 lockscreen\res\values-zh-rCN\strings.xml 我們使用記事本打開 找到app_name 在 兩個>< 修改自己需要顯示的程序名稱,我們就把 一鍵鎖屏改為 鎖屏,修改好以後保存即可~

4、然後在 lockscreen\res\drawable-hdpi 文件夾內替換圖標。先找到現在的程圖標,因為一鍵鎖屏很簡單,所以只有一個圖標。我們記下圖標的名字 lock.png 然後刪除它,將我們准備好的圖標放入目錄下,改名為剛才的名字 lock.png。

5、然後返回到apktools解壓文件夾,編譯後的文件在 回編apk生成目錄 下,我們將其簽名,然後安裝即可。

4. android studio 如何回編譯一個APP

android studio中不能編譯反編譯出來的文件,android studio只能編譯源代碼。

1.反編譯Apk得到Java源代碼
首先要下載兩個工具:dex2jar和JD-GUI
前者是將apk中的classes.dex轉化成Jar文件,而JD-GUI是一個反編譯工具,可以直接查看Jar包的源代碼。

具體步驟:
首先將apk文件,將後綴改為zip,解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的;
解壓下載的dex2jar,將classes.dex復制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄
運行 dex2jar.bat classes.dex
生成 classes.dex.dex2jar.jar

2.反編譯apk生成程序的源代碼和圖片、XML配置、語言資源等文件
還是下載工具,這次用到的是apktool

具體步驟:
將下載的兩個包解壓到同一個文件夾下,應該會有三個文件:aapt.exe,apktool.bat,apktool.jar
1.解壓縮下載的兩個文件包,apktool-install-windows-r04-brut1.tar解壓縮後得到的包里有aapt.exe 和apktool.bat.(注意要把apktool1.4.1.tar解壓後的一個.jar 文件到解壓後的\apktool-install-windows-r04-brut1文件夾里)
2.特別注意:你要反編譯的文件一定要放在C盤的根目錄里

5. apk反編譯工具怎麼使用

反編譯apk工具使用最廣泛的就是apktool,這里先說一下整個流程用到的工具有:

1.apktool,下載後拿到apktool.bat和apktool.jar,然後把這兩個工具放到C:Windows底下。這個工具的作用主要是得到apk的資源文件和配置文件

2.dex2jar 下載這個工具解壓後放到任意盤都可以,後面主要用這個根據apk的classes.dev文件生成供jd-gui工具解析的jar。

3.jd-gui上一步提到其作用,和2一樣,也是下載後放到任意盤即可,到時候只要運行jd-gui.exe打開上一步生成的jar即可查看源碼,下面對這個工具不再贅述

下面詳細說一下前面兩個工具類的詳細用法:

先說apktool的用法:

1.下載後拿到apktool.bat和apktool.jar,然後把這兩個工具放到C:Windows底下

2.cmd打開後默認是你的計算機,默認的不用改,直接輸入apktool,如果出現如下圖的效果,即表示准備已就緒


6. 如何反編譯android應用並重新打包

一.看android的源代碼

1)將Apkd.apk 用zip解壓後,出現了一個classes.dex文件
2014/02/19 19:42
.
2014/02/19 19:42
..
2014/02/19 15:35 1,656 AndroidManifest.xml
2014/02/19 15:35 687,024 classes.dex
2014/02/19 15:49
META-INF
2014/02/19 15:49
res
2014/02/19 15:35 2,200 resources.arsc
2)進入到dex2jar目錄中,運行情況如下:
D:\developer\tools\test_apk\dex2jar-0.0.9.15>dex2jar.bat "..\Apkd(d2j)\classes.d
ex"
this cmd is deprecated, use the d2j-dex2jar if possible
dex2jar version: translator-0.0.9.15
dex2jar ..\Apkd(d2j)\classes.dex -> ..\Apkd(d2j)\classes_dex2jar.jar
Done.
在apk所在的目錄會出現 classes_dex2jar.jar 文件。
3) 用JD-GUI對jar包進行查看,可以查看源文件

二.反編譯apk

1.在下載APKTOOL中的三個文件(aapt.exe、apktool.bat、apktool.jar)解壓縮到你的Windows安裝目錄下,以方便使用Dos命令.
2012/12/06 11:44 854,016 aapt.exe
2014/02/19 17:15 277,372 Apkd.apk//示例用apk文件
2012/12/23 23:39 92 apktool.bat
2013/02/03 02:37 2,655,843 apktool.jar
2.進入到apktool.bat所在的目錄,運行:
apktool d Apkd.apk decode_dir
反編譯後,decode_dir目錄下的內容如下:
2014/02/19 17:16 716 AndroidManifest.xml
2014/02/19 17:16 237 apktool.yml
2014/02/19 17:18
build
2014/02/19 17:16
res
2014/02/19 17:16
smali
此時我可以查看原文件AndroidManifest.xml了,也是查看smali源文件(是用smali語言寫的,可以對照java看)。

三.APKTOOL的使用

1).decode
該命令用於進行反編譯apk文件,一般用法為
apktool d

代表了要反編譯的apk文件的路徑,最好寫絕對路徑,比如C:\MusicPlayer.apk
代表了反編譯後的文件的存儲位置,比如C:\MusicPlayer
如果你給定的已經存在,那麼輸入完該命令後會提示你,並且無法執行,需要你重新修改命令加入-f指令
apktool d –f

這樣就會強行覆蓋已經存在的文件
2).build
該命令用於編譯修改好的文件,一般用法為
apktool b

這里的
就是剛才你反編譯時輸入的
(如C:\MusicPlayer),輸入這行命令後,如果一切正常,你會發現C:\MusicPlayer內多了2個文件夾build和dist,其中分別存儲著編譯過程中逐個編譯的文件以及最終打包的apk文件。
3).install-framework
該命令用於為APKTool安裝特定的framework-res.apk文件,以方便進行反編譯一些與ROM相互依賴的APK文件。具體情況請看常見問題

四.smali與java源碼對照,並做出相應的修改

java源代碼:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.*;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView a = (TextView)this.findViewById(R.id.test) ;
a.setText("raoliang");
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

對應的smali源代碼:
.class public Lali/text/apkd/MainActivity;
.super Landroid/app/Activity;
.source "MainActivity.java"

# direct methods
.method public constructor ()V
.locals 0

.prologue
.line 8
invoke-direct {p0}, Landroid/app/Activity;->()V

return-void
.end method

# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
.locals 2
.parameter "savedInstanceState"

.prologue
.line 12
invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

.line 13
const/high16 v1, 0x7f03

invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->setContentView(I)V

.line 14
const/high16 v1, 0x7f08

invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->findViewById(I)Landroid/view/View;

move-result-object v0

check-cast v0, Landroid/widget/TextView;

.line 15
.local v0, a:Landroid/widget/TextView;
const-string v1, "raoliang"

invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V

.line 16
return-void
.end method

.method public onCreateOptionsMenu(Landroid/view/Menu;)Z
.locals 2
.parameter "menu"

.prologue
.line 21
invoke-virtual {p0}, Lali/text/apkd/MainActivity;->getMenuInflater()Landroid/view/MenuInflater;

move-result-object v0

const/high16 v1, 0x7f07

invoke-virtual {v0, v1, p1}, Landroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V

.line 22
const/4 v0, 0x1

return v0
.end method

通過對比可以看到,常量是沒有必變的,可以根據的smali的語法,進行相應的修改

五.3、打包、簽名和安裝修改後的apk

修改完了,就可以打包回apk了。執行以下命令:
apktool b decode_dir
在mygame目錄下的dist在會看到打包好的apk。
當然,現在一般是無法安裝的,因為apk還沒有簽名。下面就來簽名。簽名需要keystore文件,我已經有專用的keystore了,如果還沒有,請參閱這里進行生成。
執行以下命令為重新編譯的my_game.apk簽名:
jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore
最後,在安裝到手機前,需要把手機中的已有版本先卸載,因為如果簽名不同,是不能覆蓋安裝的,會提示「應用程序未安裝」錯誤。
完整的運行情況如下:

D:\developer\tools\test_apk\new\decode\dist>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
輸入keystore密碼:
再次輸入新密碼:
您的名字與姓氏是什麼?
[Unknown]: rao
您的組織單位名稱是什麼?
[Unknown]: rao
您的組織名稱是什麼?
[Unknown]:
您所在的城市或區域名稱是什麼?
[Unknown]:
您所在的州或省份名稱是什麼?
[Unknown]:
該單位的兩字母國家代碼是什麼
[Unknown]:
CN=rao, OU=rao, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 正確嗎?
[否]: y

輸入的主密碼
(如果和 keystore 密碼相同,按回車):

D:\developer\tools\test_apk\new\decode\dist>jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore
輸入密鑰庫的口令短語:
正在添加: META-INF/MANIFEST.MF
正在添加: META-INF/DEMO_KEY.SF
正在添加: META-INF/DEMO_KEY.RSA
正在簽名: res/drawable-hdpi/ic_launcher.png
正在簽名: res/drawable-mdpi/ic_launcher.png
正在簽名: res/drawable-xhdpi/ic_launcher.png
正在簽名: res/drawable-xxhdpi/ic_launcher.png
正在簽名: res/layout/activity_main.xml
正在簽名: res/menu/main.xml
正在簽名: AndroidManifest.xml
正在簽名: classes.dex
正在簽名: resources.arsc

D:\developer\tools\test_apk\new\decode\dist>
到此為止,修改後的apk可以正常的安裝了,不過,在安裝之前,必須要先卸載以前的apk,不能直接替換(因為簽名不一樣)

7. 如何反編譯一個app

下載apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、apktool-install-windows-r05-ibot.tar.bz2 (windows系統)

解壓剛剛下載的文件,並將解壓的文件放入C:\Windows目錄下
啟動控制台,輸入apktool,回車可查看到apktool工具常用指令
新建一個文件夾,用於存放apk及待解壓的文件,這里筆者將文件夾建在D:\apk目錄,同時放入用於測試的android app包(test.apk)
控制台輸入:apktool d D:\apk\test.apk D:\apk\test 進行反編譯操作
中句話中「D:\apk\test.apk」指apk存放位置,「D:\apk\test」指反編譯後文件存放的位置 反編譯成功之後,進入D:\apk\test文件目錄可以查看到反編譯後的文件

8. apk反編譯/回編譯

再次記錄一次apk反編譯/回編譯過程,鏈接失效請留言,會及時更新。

參考博客: https://blog.csdn.net/w327918069/article/details/82761437

首先,我們需要一個apk,下圖是Android Studio編寫並打包的一個apk。

其實apk就相當於一個zip壓縮包,通過 WinRar 工具可以對其解壓縮,像這樣:

此時,祭出我們的神器----> apktool ,當當當當~~~~~~~。
一行命令進行apk反編譯:
apktool d -r app-debug.apk 一定要加入參數 -r ,不然後面回編譯回報錯。

apk反編譯到此結束。

回編譯就是通過 apk反編譯 生成的目錄文件轉換成一個apk。
十分簡單的一行命令:
apktool b app-debug

此時安裝apk到手機無法安裝成功,還需要對apk進行簽名才能安裝。

1.生成key.keystore
keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore

可以看到key.keystore已經生成。

2.對apk進行簽名
可用於沒有簽名和已經簽名的apk,再次簽名。

jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]

命令格式及參數意義:

-verbose -> 輸出簽名過程的詳細信息

-keystore [keystorePath] -> 密鑰的庫的位置

-signedjar [apkOut] -> 簽名後的輸出文件名

[apkin] -> 待簽名的文件名

[alias] -> 證書別名
jarsigner -verbose -keystore key.keystore -signedjar app-debug_signed.apk app-debug.apk key.keystore

回編譯完成。

9. 用mt怎麼反編譯app獲取key

一、工具准備:apktool , dex2jar , jd-gui

二、使用dex2jar + jd-gui 得到apk的java源碼
1.用解壓工具從 apk包中取出 classes.dex 文件
用命令(dex2jar.bat classes.dex)得到一個 jar文件
2.用jd-gui反編譯工具將得到.jar文件反編譯成.java文件

三、使用apktool得到apk的xml文件
1.用命令(apktool d xxx.apk xxx_xml)反編譯xxx.apk包
2.從 xxx_xml 文件夾得到xml文件

四、第二步 得到的程序源代碼 和 第三步 得到的xml文件組合下,即可得到完整的apk源碼。

五、應用: 漢化/去廣告,加 values-zh-rCN, values-zh-rTW, values-de, values-fr

1.在步驟三的文件夾xxx_xml/res/ 下, 建文件夾: values-zh-rCN,values-zh-rTW

2.1復制values\strings.xml 到 values-zh-rCN 並翻譯.

2.2 去廣告見;

3.重建APK,用命令(apktool b xxx) ,輸出到ABC/dist/out.apk

或命令( apktool b xxx out.apk)

10. 如何反編譯apk以查看源碼

1.下載apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、前慶apktool-install-windows-r05-ibot.tar.bz2 (windows系統)

2.解壓剛剛下載的文件,並將解壓的文件放入C:\Windows目錄下

3.啟動控制台,輸入apktool,回車可查看到apktool工具常用指令

4.新建一個文件夾,用於存放apk及待解壓的文件,這里筆者將文件夾建在D:\apk目錄,同時放入用於測試的android app包(test.apk)

5.控制台輸入:apktool d D:\apk\test.apk D:\apk\test 進行反編譯操作
中句話中「D:\apk\test.apk」或悔檔指apk存放位置,「D:\apk\test」指反編譯後文件衫亂存放的位置

6.反編譯成功之後,進入D:\apk\test文件目錄可以查看到反編譯後的文件

熱點內容
公網ip做域伺服器地址 發布:2025-07-14 20:40:13 瀏覽:52
php獲取幾 發布:2025-07-14 20:22:20 瀏覽:376
舊安卓如何刷入最新安卓 發布:2025-07-14 20:16:14 瀏覽:763
伺服器或網路不給力是什麼意思 發布:2025-07-14 20:15:36 瀏覽:318
爬網站資料庫 發布:2025-07-14 20:15:20 瀏覽:520
邵雍的演算法 發布:2025-07-14 20:13:49 瀏覽:119
離線燒錄加密 發布:2025-07-14 20:12:13 瀏覽:619
奧迪怎麼查配置 發布:2025-07-14 20:12:07 瀏覽:832
java視頻編程 發布:2025-07-14 19:49:22 瀏覽:524
初始密碼是多少年 發布:2025-07-14 19:34:12 瀏覽:240