導航:首頁 > 源碼編譯 > 編譯過的app必須重新簽名嗎

編譯過的app必須重新簽名嗎

發布時間:2023-02-03 16:48:28

⑴ APK重新簽名或者更換APK簽名版本

在某些特殊情況下,需要對已經生成的apk進行重新簽名,或者對已經生成的apk更換簽名版本(v1/v2/v3/v4)。如何實現呢? 可以通過命令行對已生成的apk進行處理。

apksigner.jar通常包含在android SDK中可。路徑一般是在Android SDK/build-tools/ {SDK版本} /lib/apksigner.jar
不同的SDK版本中均有一個,取最新版本的就好了。

使用壓縮軟體打開apk,刪除包內 /META-INF/ 文件夾及文件夾內所有文件,並重新壓縮文件。

准備好簽名證書及相關密碼和需要剛處理過得apk文件
示例:

執行命令

接著輸入證書保護密碼及別名密碼。

可以從此命令的輸出中看出當前生成的apk簽名情況。

可以通過如下命令行參數進行控制
--v1-signing-enabled true
--v2-signing-enabled true
--v3-signing-enabled false

使用的簽名版本還跟apk編譯時使用的最低SDK版本有關, 即min-sdk-version的值。如果設置的值大於等於26,即使添加--v1-signing-enabled true 也無法通過上述步驟簽V1版本的簽名--僅有V2簽名(Android Studio也是)。
可以對最後生成的apk通過執行如下命令嘗試:

⑵ deodex化apk後需要簽名嗎

需要重新簽名,因為deodex後apk文件中又增加了一個classes.dex文件,所以要重新簽名。

⑶ 安卓APP在應用市場加固之後怎麼重新簽名

可以使用jarsigner對未簽名的加固包進行簽名。

建議使用之前對APP簽名時使用的keystore對加固包進行簽名

jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore [your_key_store_path] -signedjar

[signed_apk_name] [usigned_apk_name] [your_key_store_alias]

your_key_store_path:密鑰所在位置的絕對路徑

signed_apk_name:簽名後安裝包名稱

usigned_apk_name:未簽名的安裝包名稱

your_key_store_alias:密鑰的別名 就是你自己創建的 .keystore文件

⑷ 怎麼給修改後的apk重新簽名

1、首先我們要對apk文件進行改名與後綴,將其連同後綴一起改掉,如1.zip。

2、這時文件就變成一個zip壓縮包了,可提取解壓這個壓縮包,打開這個解壓的文件,會看到裡面構成程序文件的很多東西,然後根據網上教程對程序進行簡要修改。

(當然如果要反編譯的話就不是這樣子了,不過直接解壓也是可以修改很多東西的),這里修改操作建議在電腦端完成比較方便,修改後重新將這些文件壓縮成zip格式。

3、下載安裝ZipSigner手機簽名工具,並打開。

4、點擊輸入,瀏覽文件目錄找到剛修改好並重新壓縮的zip文件,在輸出選項可以修改其名稱,然後點擊簽名,模式為auto-testkey就可以了,等一會就簽名未完成了。

apk文件結構:

1、META-INF(注:Jar文件中常可以看到)。

2、res(注:存放資源文件的目錄)。

3、AndroidManifest.xml(注:程序全局配置文件)。

4、classes.dex(注:Dalvik位元組碼)。

5、resources.arsc(注:編譯後的二進制資源文件)。

⑸ 對未簽名的 APK 重簽名

在對某個 APP 進行逆向時,最後一步將修改應用到 APK 中往往會生成未簽名的 APK,而 Android 要求每個 APK 都必須要有簽名才能被安裝,因此我們需要對未簽名的 APK 進行簽名

在 keytool 所在的文件夾下(通常是 C:\Program Files\Java\jdk1.8.0_101\bin 之類的)以管理員身份執行如下命令

-keystore  reverse_engineer.keystore 表示生成的數字證書的文件名為 "reverse_engineer.keystore";

-alias  rekeystore 表示證書的別名為 "rekeystore",可以與 keystore 一樣;

-keyalg RSA 表示生成密鑰文件所採用的演算法為 RSA;

-validity 10000 表示該數字證書的有效期為10000天,意味著10000天之後該證書將失效;

然後根據提示輸入密鑰、地區等信息。最終,這條命令將生成名為 reverse_engineer.keystore 的數字證書

將數字證書拷貝到需要簽名的 apk 的目錄下,在 jarsigner 所在的文件夾下(通常是 C:\Program Files\Java\jdk1.8.0_101\bin 之類的)以管理員身份執行如下命令執行如下命令

-keystore 表示使用當前目錄中的 reverse_engineer.keystore 簽名證書文件;

-storepass 密鑰口令;

-signedjar crackme02_release.apk表示簽名後生成的APK名稱;

crackme02.apk 表示未簽名的APK;

rekeystore 表示 reverse_engineer.keystore 的別名

如果你不是被逆向的 APP 的作者,那麼你重簽名時使用的私鑰在絕大多數情況下不會和逆向前的 APP 相同。在 Android 的安全策略下,這樣的 APP 是不能被安裝的,因此需要將之前的 APP 卸載掉,才能將重新打包後的 APK 重新安裝到 Android 設備上

參考文章:

Android反編譯(三)之重簽名

⑹ APP老是需要重簽

iOS企業簽名最大的弊端就是會掉簽,需要重簽。
ios App掉簽後,必須要重新簽名,用戶重新下載安裝後,才能繼續使用。打開手機瀏覽器,搜索微導流,進入微導流手機網站,點擊右上角進行登錄或注冊。點擊企業簽名,創建企業簽名。
軟體掉簽的意思就是iOS簽名失效,iOS簽名失效後,也就是說明已經下載應用的用戶就不能繼續使用了,軟體無法打開。

⑺ 怎樣修改apk不需要重新簽名 【直接在安裝包裡面改 拖文件進去時跳出的窗口怎麼選⊙▽⊙】

直接在安裝包里修改後的APK文件是不能正確安裝的!!想修改的話,通過反編譯APK文件,再修改,回編譯,重新簽名打包成APK文件安裝

⑻ apk重新簽名其他人還需要簽名嗎

apk重新簽名其他人不需要重新簽名。apk是Android操作系統使用的一種應用程序包文件格式,用於分發和安裝移動應用及中間件。

⑼ 安卓開發 導出apk文件 一定要設置簽名嗎

不需要簽名的

生成apk最懶惰的方法是:
只要你運行過android項目,到工作目錄的bin文件夾下就能找到與項目同名的apk文件,這種apk默認是已經使用debug用戶簽名的。

如果想要自己給apk簽名:

  1. 簽名的意義
    為了保證每個應用程序開發商合法ID,防止部分開放商可能通過使用相同的Package Name來混淆替換已經安裝的程序,我們需要對我們發布的APK文件進行唯一簽名,保證我們每次發布的版本的一致性(如自動更新不會因為版本不一致而無法安裝)。
    2.簽名的步驟
    a.創建key
    b.使用步驟a中產生的key對apk簽名
    3.具體操作
    方法一: 命令行下對apk簽名(原理)
    創建key,需要用到keytool.exe (位於jdk1.6.0_24jrein目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位於jdk1.6.0_24in目錄下),把上兩個軟體所在的目錄添加到環境變數path後,打開cmd輸入
    D:>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore/*說明:-genkey 產生密鑰 -alias demo.keystore 別名 demo.keystore -keyalg RSA 使用RSA演算法對簽名加密 -validity 40000 有效期限4000天 -keystore demo.keystore */D:>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore/*說明:-verbose 輸出簽名的詳細信息 -keystoredemo.keystore 密鑰庫位置 -signedjar demor_signed.apk demo.apk demo.keystore 正式簽名,三個參數中依次為簽名後產生的文件demo_signed,要簽名的文件demo.apk和密鑰庫demo.keystore.*/
    注意事項:android工程的bin目錄下的demo.apk默認是已經使用debug用戶簽名的,所以不能使用上述步驟對此文件再次簽名。正確步驟應該是:在工程點擊右鍵->Anroid Tools-Export Unsigned Application Package導出的apk採用上述步驟簽名。
    方法二:使用Eclipse導出帶簽名的apk
    Eclipse直接能導出帶簽名的最終apk,非常方便,推薦使用,步驟如下:
    第一步:導出。



  2. 第六步:Next,Next,結束!
    方法三:使用IntelliJ IDEA導出帶簽名的apk
    方法步驟基本和Eclipse相同,大概操作路徑是:菜單Tools->Andrdoid->Export signed apk。
    4.簽名之後,用zipalign(壓縮對齊)優化你的APK文件。
    未簽名的apk不能使用,也不能優化。簽名之後的apk谷歌推薦使用zipalign.exe(位於android-sdk-windows ools目錄下)工具對其優化:
    D:>zipalign -v 4 demo_signed.apk final.apk
    如上,zipalign能夠使apk文件中未壓縮的數據在4個位元組邊界上對齊(4個位元組是一個性能很好的值),這樣android系統就可以使用mmap()(請自行查閱這個函數的用途)函數讀取文件,可以在讀取資源上獲得較高的性能,
    PS:1.在4個位元組邊界上對齊的意思就是,一般來說,是指編譯器吧4個位元組作為一個單位來進行讀取的結果,這樣的話,CPU能夠對變數進行高效、快速的訪問(較之前不對齊)。
    2.對齊的根源:android系統中的Davlik虛擬機使用自己專有的格式DEX,DEX的結構是緊湊的,為了讓運行時的性能更好,可以進一步用"對齊"進一步優化,但是大小一般會有所增加。
    5.簽名對你的App的影響。
    你不可能只做一個APP,你可能有一個宏偉的戰略工程,想要在生活,服務,游戲,系統各個領域都想插足的話,你不可能只做一個APP,谷歌建議你把你所有的APP都使用同一個簽名證書。
    使用你自己的同一個簽名證書,就沒有人能夠覆蓋你的應用程序,即使包名相同,所以影響有:
    1) App升級。 使用相同簽名的升級軟體可以正常覆蓋老版本的軟體,否則系統比較發現新版本的簽名證書和老版本的簽名證書不一致,不會允許新版本安裝成功的。
    2) App模塊化。android系統允許具有相同的App運行在同一個進程中,如果運行在同一個進程中,則他們相當於同一個App,但是你可以單獨對他們升級更新,這是一種App級別的模塊化思路。
    3) 允許代碼和數據共享。android中提供了一個基於簽名的Permission標簽。通過允許的設置,我們可以實現對不同App之間的訪問和共享,如下:
    AndroidManifest.xml:<permission android:protectionLevel="normal" />
    其中protectionLevel標簽有4種值:normal(預設值),dangerous, signature,signatureOrSystem。簡單來說,normal是低風險的,所有的App不能訪問和共享此App。dangerous是高風險的,所有的App都能訪問和共享此App。signature是指具有相同簽名的App可以訪問和共享此App。signatureOrSystem是指系統image中App和具有相同簽名的App可以訪問和共享此App,谷歌建議不要使用這個選項,因為簽名就足夠了,一般這個許可會被用在在一個image中需要共享一些特定的功能的情況下。

    ⑽ 在android系統中,怎麼反編譯系統APK文件而不破壞以前的簽名就是不需要在重新編譯後簽名。

    ApkDec-Release-0.1 試試這個工具

閱讀全文

與編譯過的app必須重新簽名嗎相關的資料

熱點內容
隨機信號估計演算法 瀏覽:860
安卓如何重壓開槍 瀏覽:377
航天時代飛鵬圖像處理演算法 瀏覽:521
php比較兩個文件 瀏覽:737
加密貨幣市場活躍 瀏覽:334
最便宜的雲盤伺服器架設傳奇 瀏覽:790
java反向工程 瀏覽:110
pdf文檔轉換excel 瀏覽:8
主角叫楚天的都市小說 瀏覽:754
程序員三重境界 瀏覽:871
菜雞方舟上怎麼開伺服器 瀏覽:727
馬林固件編譯錯誤 瀏覽:910
市場營銷案例pdf 瀏覽:770
魔爪閱讀網 瀏覽:19
app地推業績統計在哪裡 瀏覽:993
維語電影網站大全 瀏覽:958
程序員骨腫瘤上熱搜 瀏覽:847
聚優電影 瀏覽:45
國企保底工資演算法 瀏覽:730
視聽說伺服器地址是什麼意思 瀏覽:657