當前位置:首頁 » 編程軟體 » 反編譯改的jar包怎麼重新打包

反編譯改的jar包怎麼重新打包

發布時間: 2023-03-20 05:43:19

❶ jar解壓後 如何把解壓出來的文件夾 重新編譯成jar

用winrar打包成zip,再改成jar即可:

1、假殲啟鉛設您之前解壓的是下面的這些文件

❷ 怎麼修改jar包中的class文件然後再重新打成jar包

該過程需要經歷四個步驟:解壓,反編譯,修改,打包。
解壓:jar文件和我們平常的rar和zip文件一樣是屬於壓縮文件,通過一般的解壓縮工具(例如:winrar)都能解壓。解壓之後生成的文件為**.class的位元組碼文件。
反編譯:互聯網上有很多的位元組碼文件反編譯工具(例如:jad)。他能夠將**.class文件或者直接能夠將jar文件反編譯為**.java文件。
得到java文件以後就可以修改裡面的源代碼了。
將修改好的代碼編譯成**.class位元組碼文件以後再添加替換掉原來jar包中的class文件,或者重新將修改後的java代碼轉換成java工程,再生成jar文件都行。
這個過程的完成需要熟悉java基礎,編譯環境等相關知識。尤其是對jar包的理解很重要。反編譯在互連網上就能直接找到很多工具。打包則很簡單不做累述。

❸ Android反編譯後重新打包

輸入: apktool d apk的名字

成功會以當前apk的名字建立一個文件夾

這個就是我們反編譯之後的apk的目錄,接下來加入我們改動裡面的資源或者源碼如何打包

就會在反編譯之後的目錄的dist文件下生成一個新的apk
這個apk是沒有簽名的

keytool -genkey -keystore test.keystore -alias test -keyalg RSA -validity 10000

jarsigner -verbose -keystore test.keystore -signedjar signed.apk b.apk test
簽名成功之後就會生成一個signed.apk

然後就可以愉快的玩耍了

由於需要xxx送上網路雲地址: http://pan..com/s/1o8yq98Q

❹ 將源代碼jar包修改,再打包,怎麼做

1、你首先要得到jar包里需要修改的class的源碼,復制出來新建類,液弊旦注意類名包名需要和之前一致。
2、修改鬧擾代碼後編卜謹譯獲得class文件
3、用好壓或其他壓縮文件打開之前的jar包進入原class所在文件目錄將新class復制進去即可

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

反編譯android步驟入下:

第一:使用apktool直接反編譯apk

第六:把生成的hellodemo.apk安裝到手機,可以看到主界面上已經顯示的是hello,而不再是你好。說明反編譯重新打包成功!

❻ 反編譯之後的文件怎麼打包回去

你重新建一個工程啊,把你反編譯的源碼放進去,然後再編譯打包就可以了啊。
如果你沒有eclipse 的話,那你就用命令編譯打包。
javac 你反編譯後輸出的目錄/*.java
jar -cvf 你反編譯後輸出的目錄/*.class test.jar
貌似就這個命令。
你可以在網上查一下jar 命令怎麼用。.

❼ JAR反編譯修改重新打包的問題

用反編譯工具反編譯出jar里的class

把反編譯出來的內容復制到eclipse中

eclipse中src上右擊,export

當然是的 :: 暫時不知道有什麼好辦法
你要重新打包肯定是要修改其中某個class,不必要全部弄

可以把.jar 改成.zip 兩中壓縮的格式演算法一樣,只開始相差四個位元組
改成zip後把裡面你要改的class這樣處理一下再放進去,
然後把後綴還改回來

❽ gradle解壓源碼,重新打包

這幾天工作上遇到一個問題,三方的jar包在liunx下解壓不了,用gradle又能正常編譯,我們的apk是在liunx下用mk進行編譯的,編譯的過程中需要對jar包進行解壓,這樣就導致編譯失敗。
錯誤信息如下:以後再遇到這個錯誤,可能就jar包的問題。
FAILED: /bin/bash -c "(mkdir -p out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res ) && (unzip -qo /home/x/xx/xxx/APK92_GNBJ_EDO/code/libs/xxx-sdk-java20171027120314.jar -d out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res ) && (find out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res -iname \"*.class\" -delete ) && (JACK_VERSION=3.36.CANDIDATE out/host/linux-x86/bin/jack @build/core/jack-default.args --verbose error -D jack.import.resource.policy=keep-first -D jack.import.type.policy=keep-first -D jack.android.min-api-level=1 --import /home/x/xx/xxx/APK92_GNBJ_EDO/code/libs/xxx-sdk-java20171027120314.jar --import-resource out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res --output-jack out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack ) && (rm -rf out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res )" warning: stripped absolute path spec from / mapname: conversion of failed ninja: build stopped: subcommand failed. build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed

解決方法:對jar包源碼重新打包

解壓jar包源碼,注意,是帶源碼的jar包,如果是編譯過的jar,是不能重新打包的。
步驟:
1.新建build.gradle文件,因為gradle會默認找到當前目錄下的build.gradle下的文件去執行;
2.在終端執行gradle unzip,執行這個task
以下命令將這個目錄 app/libs/xxx-sdk-java20171027120314.jar 下的jar包解壓到了 unpacked/dist 目錄。

解壓之後的源碼就是文件夾,重新打包的時候需要注意,包名和源碼的路徑名一致。現在利用Android studio進行打包。
步驟:
1.新建lib mole,選擇Android Libeary/Java Library;
2.注意修改包名與jar包路徑相同,eg:jar包解壓之後的路徑 dist/com/example/api ,那麼為了確保新生成的jar包里的Java文件import路徑相同,mole的包名也要命名為 com.example.api ;
3.將解壓之後的源碼java文件復制到lib model中;
4.在 app mole 下添加 lib mole 依賴。這是一種取巧的方法,當你添加了lib mole依賴之後,項目會重新rebuild,這個過程會將mole依賴編譯成jar包,存放在lib mole的 build/libs 目錄下,由於Android Studio版本不同,這個目錄可能有有所不同,但是都在build目錄下,找新的jar包就可以了。
這一部可能會報jar包找不到,或者lib mole中的import失敗,可能是因為lib mole依賴的jar包沒導入,導入之後在lib mole的build.gradle里配置一下就可以了。

這個時候,其實直接用這個jar包也可以了,如果向修改jar包名字,可以執行下面的gradle命令:

想了解更多可以參考 這里
然後在項目里測試一下jar包就可以了。
重新打包之後就可以在liunx下解壓了,正常編譯通過。

最後記錄一下mk編譯的一個錯誤 # [ERROR: Dex writing phase: classes.dex has too many IDs. Try using multi-dex](https://stackoverflow.com/questions/45472852/error-dex-writing-phase-classes-dex-has-too-many-ids-try-using-multi-dex) 在stackoverflow上找到了解決方法。

在mk文件中添加

參考:
https://stackoverflow.com/questions/39457116/gradle-build-hanging-when-jackoptions-is-enabled-for-java-1-8
https://stackoverflow.com/questions/45472852/error-dex-writing-phase-classes-dex-has-too-many-ids-try-using-multi-dex

❾ apk反編譯和重新打包

操作系統:Mac OS X
軟體:apktool

進入官網 https://ibotpeaches.github.io/Apktool/ ,點擊官網首頁的install( https://ibotpeaches.github.io/Apktool/install/ )進入安裝指南,裡面有Windows,Linux和Mac的安裝方法,不同的操作系統按不同的步驟來就可以了。

在終端輸入: apktool d xxx.apk ,我在反編譯時出現了以下錯誤:

看提示是無法寫入到這個目錄 /Users/xxx/Library/apktool/framework (xxx為電腦用戶名),那就在 /Users/xxx/Library 下新建apktool文件夾,並在apktool文件夾下再新建個framework文件夾,然後為了保險起見設置新建文件夾到許可權,在終端輸入: chmod -R 777 /Users/xxx/Library/apktool
接著再重新執行反編譯命令就可以成功了,在xxx.apk相同目錄下會出現反編譯後的文件夾。

在終端輸入編譯命令: apktool b xxx (xxx為剛才反編譯的文件夾),成功後會在xxx文件夾下的dist文件夾下生成打包好後的apk文件

現在打包好後的apk是沒有簽名的,所以無法安裝,現在給apk簽名

20000為時間,這個設置長點就好了,-keystore後面是簽名文件保存路徑。輸入命令按回車鍵會讓輸入密碼等信息,按提示輸入,不要忘了密碼,簽名時要用。
2.接著在終端輸入:

-keystore後面的為簽名文件的路徑,-signedjar後面為簽名好後apk的存放路徑,在這個後面的一個為需要簽名的pak的路徑,最後的android.keystore為證書的別名,如果不知道別名,可以在終端輸入: keytool -list -v -keystore /Users/xxx/Desktop/android.keystore 查看具體信息,裡面有別名。
這一步還要注意,簽名文件和需要簽名的apk要在同一目錄下。

❿ 如何反編譯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,不能直接替換(因為簽名不一樣)

熱點內容
php辦公系統 發布:2025-07-19 03:06:35 瀏覽:895
奧德賽買什麼配置出去改裝 發布:2025-07-19 02:53:18 瀏覽:37
請與網路管理員聯系請求訪問許可權 發布:2025-07-19 02:37:34 瀏覽:185
ipad上b站緩存視頻怎麼下載 發布:2025-07-19 02:32:17 瀏覽:839
phpcgi與phpfpm 發布:2025-07-19 02:05:19 瀏覽:523
捷達方向機安全登錄密碼是多少 發布:2025-07-19 00:57:37 瀏覽:689
夜魔迅雷下載ftp 發布:2025-07-19 00:39:29 瀏覽:97
增值稅票安全接入伺服器地址 發布:2025-07-19 00:20:45 瀏覽:484
solidworkspcb伺服器地址 發布:2025-07-18 22:50:35 瀏覽:820
怎麼在堆疊交換機里配置vlan 發布:2025-07-18 22:42:35 瀏覽:628