日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

解決反編譯后的安卓apk會被報毒的方法

 高階漁夫 2019-10-20

目前幾種常用的反編譯工具如ApkIDE、APKDB、Androidkiller及較早版本的ApkToolBox 等反編譯某些安卓熱門apk會被一些安全軟件檢測含有木馬或惡意程序,產(chǎn)生誤判誤報。

原因是一些手機(jī)上的安全軟件如360等會將這些安卓熱門apk的非官方簽名列入了與安卓APK文件名一一對應(yīng)黑名單,解決辦法就是重新生成新的證書文件testkey.x509.pem和密鑰文件testkey.pk8,替換掉那些反編譯工具上被一些安全軟件列入黑名單的證書文件testkey.x509.pem和密鑰文件testkey.pk8,再重新對安卓APK反編譯后簽名即可。

需要jdk或jre支持,官方下載地址: https://www.oracle.com/technetwork/java/javase/downloads/

環(huán)境變量JAVA_HOME,要指向jdk或jre目錄,若電腦上環(huán)境變量沒有JAVA_HOME路徑,可在電腦上設(shè)置本機(jī)環(huán)境變量JAVA_HOME路徑

       Windows 64位系統(tǒng)安裝*****-windows-x64為64位的jdk或jre以及Windows 32位系統(tǒng)安裝*****-windows-i586為32位的jdk或jre的Java路徑為 C:\Program Files\Java\ 如:

       C:\Program Files\Java\jdk1.7.0_80             64位系統(tǒng)安裝 jdk-7u80-windows-x64   32位系統(tǒng)安裝 jdk-7u80-windows-i586
       C:\Program Files\Java\jre7                    64位系統(tǒng)安裝 jdk-7u80-windows-x64  

       C:\Program Files\Java\jdk1.8.0_192            64位系統(tǒng)安裝 jdk-8u192-windows-x64  32位系統(tǒng)安裝 jdk-8u192-windows-i586
       C:\Program Files\Java\jre1.8.0_192            64位系統(tǒng)安裝 jdk-8u192-windows-x64  

       C:\Program Files\Java\jre1.7.0_80             64位系統(tǒng)安裝 jre-7u80-windows-x64   32位系統(tǒng)安裝 jre-7u80-windows-i586   
       C:\Program Files\Java\jre1.8.0_161            64位系統(tǒng)安裝 jre-8u161-windows-x64  32位系統(tǒng)安裝 jre-8u161-windows-i586  

       Windows 64 位系統(tǒng)安裝*****-windows-i586為32位的jdk或jre的Java路徑為 C:\Program Files (x86)\Java\ 如:

       C:\Program Files (x86)\Java\jdk1.7.0_80       64位系統(tǒng)安裝 jdk-7u80-windows-i586
       C:\Program Files (x86)\Java\jdk1.8.0_192      64位系統(tǒng)安裝 jdk-8u192-windows-i586
       C:\Program Files (x86)\Java\jre1.7.0_80       64位系統(tǒng)安裝 jre-7u80-windows-i586
       C:\Program Files (x86)\Java\jre1.8.0_161      64位系統(tǒng)安裝 jre-8u161-windows-i586

   在電腦上可按以下方法設(shè)置環(huán)境變量:JAVA_HOME、PATH

       JAVA_HOME:我的電腦(計(jì)算機(jī))->屬性->高級(高級系統(tǒng)設(shè)置)->單擊“環(huán)境變量”按鈕
                  ->單擊“系統(tǒng)變量”區(qū)域的“新建”按鈕->在“變量名”文本框中輸入JAVA_HOME
                  在“變量值”文本框中輸入JDK的安裝路徑(如:C:\Program Files\Java\jdk1.7.0_80),單擊確定

       PATH:     在系統(tǒng)變量中查看PATH變量,如果存在PATH,則在最末尾多添加一個%JAVA_HOME%\bin;(直接添加,連;也加上,無需加空格之類的,以下相同)
                  如果不存在,則新建變量PATH,設(shè)定變量值為:%JAVA_HOME%\bin;

  

具體過程如下:

一、生成*****.keystorede如bug.keystore證書密鑰文件

   1、在附件中以管理員權(quán)限運(yùn)行“命令提示符”,打開dos界面,根據(jù)電腦上安裝的jdk位數(shù)

   Windows 64位系統(tǒng)安裝*****-windows-x64為64位的jdk以及Windows 32位系統(tǒng)安裝*****-windows-i586為32位的jdk 輸入以下代碼
   cd C:\Program Files\Java\jdk*\bin         
   Windows 64 位系統(tǒng)安裝*****-windows-i586為32位的jdk 輸入以下代碼
   cd C:\Program Files (x86)\Java\jdk*\bin
   切換到j(luò)dk的bin目錄:C:\Program Files\Java\jdk*\bin 或 C:\Program Files (x86)\Java\jdk*\bin

   在dos窗口輸入:keytool -genkey -alias androiddebugkey -keyalg RSA -validity 36500 -keysize 2048 -keystore debug.keystore -keypass android -storepass android

   出現(xiàn)問題并填寫
   您的名字與姓氏是什么?
       [Unknown]: localhost
   您的組織單位名稱是什么?
       [Unknown]: test
   您的組織名稱是什么?
       [Unknown]: test
   您所在的城市或區(qū)域名稱是什么?
       [Unknown]: test
   您所在的省/市/自治區(qū)名稱是什么?
       [Unknown]: test
   該單位的雙字母國家/地區(qū)代碼是什么?
       [Unknown]: test
   CN=localhost, OU=test, O=test, L=test, STtest, C=test 是否正確?
       [否]:  y

   填寫相關(guān)信息后會在Java的bin目錄下生成密鑰文件 debug.keystore   
   就是我們需要的安卓Android簽名密鑰文件,(-validity 36500 表示證書的有效天數(shù)為36500天)

   其中:
        KeystoreFile密鑰文件名為    debug.keystore
        -alias密鑰別名為            androiddebugkey  
        -storepass密鑰密碼為        android
        -keypass android 表示密鑰密碼keypassPassword為      android
        密鑰文件名debug.keystore、密鑰別名 androiddebugkey、 密鑰storepass和keypassPassword密碼 android 都可根據(jù)自己的需要設(shè)定

就能得到.jks格式 .keystore證書密鑰文件debug.keystore,可用apksigner或jarsigner兩種簽名代碼之一給反編譯后的安卓APK文件簽名就不會報毒了。

如果要用signapk方式簽名給反編譯后的安卓APK文件簽名就需要將.jks格式 .keystore證書密鑰文件debug.keystore轉(zhuǎn)換成testkey.x509.pem證書文件+testkey.pk8密鑰文件

二、jks格式 .keystore證書密鑰文件debug.keystore轉(zhuǎn)換成testkey.x509.pem證書文件+testkey.pk8密鑰文件的方法

   轉(zhuǎn)換簽名文件需要OpenSSL環(huán)境支持

   Openssl第三方下載地址: http:///products/Win32OpenSSL.html

   根據(jù)OpenSSL的版本和安裝路徑添加OpenSSL環(huán)境變量,如安裝 Win64OpenSSL 則

   在計(jì)算機(jī)->屬性->高級系統(tǒng)配置->高級->環(huán)境變量
   編輯系統(tǒng)變量
   變量名:         PATH
   在變量值中加入: C:\Program Files\OpenSSL-Win64\bin;
      
   完成以上步驟后,開始驗(yàn)證是否設(shè)置正確
   運(yùn)行cmd(開始,運(yùn)行,輸入cmd,回車),或點(diǎn)擊“附件”中的“命令提示符”,
   輸入     openssl
   回車出現(xiàn) openssl>

   或輸入start openssl
   彈出dos窗口 openssl>

   就表明OpenSSL環(huán)境變量配置正確
  
   或下載安裝Win32OpenSSL 或 Win64OpenSSL后,將OpenSSL-Win32或OpenSSL-Win64文件夾bin目錄中的所有文件復(fù)制到j(luò)ava下如jdk1.*.0_*的bin目錄中

   然后將.jks格式 .keystore證書密鑰文件debug.keystore復(fù)制到j(luò)ava的bin目錄中
   如: C:\Program Files\Java\jdk1.8.0_192\bin
           C:\Program Files\Java\jdk1.7.0_80\bin

方法一:

在附件中以管理員身份運(yùn)行運(yùn)行“命令提示符”,打開dos界面,輸入以下命令,如
cd C:\Program Files\Java\jdk1.8.0_192\bin
cd C:\Program Files\Java\jdk1.7.0_80\bin

1. 將keystore文件轉(zhuǎn)換為pkcs12格式

   keytool -importkeystore -srckeystore debug.keystore -destkeystore testkey.p12 -srcstoretype JKS -deststoretype PKCS12

   按提示在dos窗口
   輸入目標(biāo)密鑰庫口令 如:android   再次輸入新口令 如:android
   輸入源密鑰庫口令   如:android
   目標(biāo)密鑰庫口令一定要設(shè)置并且和源密鑰庫口令一樣,如:android

或 keytool -importkeystore -srckeystore debug.keystore -srcstoretype JKS -srcalias androiddebugkey -srcstorepass android -srckeypass android -destkeystore testkey.p12 -deststoretype PKCS12 -destalias testkey -deststorepass android -destkeypass android

2. 將PKCS12 dump成pem

openssl pkcs12 -in testkey.p12 -nodes -out testkey.rsa.pem

按提示在dos窗口
Enter Import Password:    如:android

testkey.rsa.pem 可以直接用文本格式查看

用“記事本”打開 testkey.rsa.pem 文件,可查看其中的證書(CERTIFICATE)和 私鑰(PRIVATE KEY ),可能有RSA KEY 這個不用管,如下所示

Bag Attributes
    friendlyName: testkey
    localKeyID: 54 69 6D 65 20 31 35 34 37 37 33 30 35 37 36 33 31 39
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDfp3ZTr57zhvQW
wvmmB1dGleMHq+Kg67SCx1Yy7Bf95Dz8Tipt2FzEdfEEkQvDcXhpkVqgc95Q/7eu
5mGh61LY7V8qzTU7sBc4Yy9xMIjraL8Jd7fGSEH5n6iZe6O9UJTNfGTdIzYrHaGx
XCl5S9G1t8Qbsziherzacm7hURjZpPK0wqre0ONjTJIPNicU287WUjb4GW159S7e
BVSmi8IJHxk9TPLH1Dz5GqOvgU84x4JPZ/ikwiKXAoGANP7EYVnig81kQtqjRdaQ
/f5Y6UGqURGw8hGDDTssXAuVAyb4bDokH4DSrEvdprO6TuFqFIeDn56V6hvXhWSH
+Fguhg2r4mzX8LQsJmKozcsUY+DrY/eP+1b+nU+uOzSCwanEGyrESRYVCznH3kYY
CTnpBXQscLijgmac/rPhGiM=
-----END PRIVATE KEY-----
Bag Attributes
    friendlyName: testkey
    localKeyID: 54 69 6D 65 20 31 35 34 37 37 33 30 35 37 36 33 31 39
subject=C = Test, ST = Test, L = Test, O = Test, OU = Test, CN = Doublemine

issuer=C = Test, ST = Test, L = Test, O = Test, OU = Test, CN = Doublemine

-----BEGIN CERTIFICATE-----
MIIDYTCCAkmgAwIBAgIEP5A+yjANBgkqhkiG9w0BAQsFADBgMQ0wCwYDVQQGEwRU
ZXN0MQ0wCwYDVQQIEwRUZXN0MQ0wCwYDVQQHEwRUZXN0MQ0wCwYDVQQKEwRUZXN0
MQ0wCwYDVQQLEwRUZXN0MRMwEQYDVQQDEwpEb3VibGVtaW5lMCAXDTE5MDExMDIz
LE70Z9yAszLB3HNI7VSEea7WY5KBKUHLZlA2y/8idL4hqqPeKOJ/+/82NBHBlByn
Wrf1j0dvIk3FAMs7mLoYoRZVddKkK09OEEdotmXbXklmA+pXuaUxzBgs9NoDoUi4
8vF/rlqqx+3zEJDXehKq703BIJ0SxAY/RglGfUgmE5qFk/q0ZsuS/hAO1K8BhpiZ
AKsjk5A=
-----END CERTIFICATE-----

復(fù)制從“BEGIN CERTIFICATE”到“END CERTIFICATE”含有證書信息的文本內(nèi)容后,新建文本文檔,保存為 testkey.x509.pem
或?qū)摹癇EGIN CERTIFICATE”到“END CERTIFICATE”含有證書信息的文本內(nèi)容保留后,另存為           testkey.x509.pem
如下所示

-----BEGIN CERTIFICATE-----
MIIDYTCCAkmgAwIBAgIEP5A+yjANBgkqhkiG9w0BAQsFADBgMQ0wCwYDVQQGEwRU
ZXN0MQ0wCwYDVQQIEwRUZXN0MQ0wCwYDVQQHEwRUZXN0MQ0wCwYDVQQKEwRUZXN0
MQ0wCwYDVQQLEwRUZXN0MRMwEQYDVQQDEwpEb3VibGVtaW5lMCAXDTE5MDExMDIz
Wrf1j0dvIk3FAMs7mLoYoRZVddKkK09OEEdotmXbXklmA+pXuaUxzBgs9NoDoUi4
8vF/rlqqx+3zEJDXehKq703BIJ0SxAY/RglGfUgmE5qFk/q0ZsuS/hAO1K8BhpiZ
AKsjk5A=
-----END CERTIFICATE-----

testkey.x509.pem 文件即是我們最后需要的證書文件

復(fù)制從“BEGIN RSA PRIVATE KEY”到“END RSA PRIVATE KEY”含有私鑰信息的文本內(nèi)容后,新建文本文檔,保存為 testkey.pem
或?qū)摹癇EGIN RSA PRIVATE KEY”到“END RSA PRIVATE KEY”含有私鑰信息的文本內(nèi)容保留后,另存為           testkey.pem
如下所示

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDfp3ZTr57zhvQW
wvmmB1dGleMHq+Kg67SCx1Yy7Bf95Dz8Tipt2FzEdfEEkQvDcXhpkVqgc95Q/7eu
5mGh61LY7V8qzTU7sBc4Yy9xMIjraL8Jd7fGSEH5n6iZe6O9UJTNfGTdIzYrHaGx
BVSmi8IJHxk9TPLH1Dz5GqOvgU84x4JPZ/ikwiKXAoGANP7EYVnig81kQtqjRdaQ
/f5Y6UGqURGw8hGDDTssXAuVAyb4bDokH4DSrEvdprO6TuFqFIeDn56V6hvXhWSH
+Fguhg2r4mzX8LQsJmKozcsUY+DrY/eP+1b+nU+uOzSCwanEGyrESRYVCznH3kYY
CTnpBXQscLijgmac/rPhGiM=
-----END PRIVATE KEY-----

3. 生成pk8格式的私鑰

   openssl pkcs8 -topk8 -outform DER -in testkey.pem -inform PEM -out testkey.pk8 -nocrypt
或 openssl pkcs8 -topk8 -in testkey.pem -inform PEM -passin pass:android -out testkey.pk8 -outform DER -nocrypt

即可生成testkey.pk8 私鑰文件,然后將先前制作的證書文件證書文件testkey.x509.pem和密鑰文件testkey.pk8復(fù)制保存下來給apk簽名:
java -jar signapk.jar testkey.x509.pem testkey.pk8 unsigned.apk signed.apk

方法二:

在附件中以管理員身份運(yùn)行運(yùn)行“命令提示符”,打開dos界面,輸入以下命令,如
cd C:\Program Files\Java\jdk1.8.0_192\bin
cd C:\Program Files\Java\jdk1.7.0_80\bin

1. 把.jks轉(zhuǎn)換為pkcs12標(biāo)準(zhǔn)的證書+私鑰文件

     keytool -importkeystore -srckeystore debug.keystore -srcstoretype JKS -srcalias androiddebugkey -srcstorepass android -srckeypass android -destkeystore testkey.p12 -deststoretype PKCS12 -destalias testkey -deststorepass android -destkeypass android

   因?yàn)閜kcs12不支持keypass
   所以-destkeypass如果單獨(dú)設(shè)置密碼的話
   keytool會提示你
   這個密碼不起作用
   但是如果你不設(shè)置密碼的話
   后面導(dǎo)出key的時候會報錯
   所以這里必須要設(shè)置destkeypass
   并且和deststorepass設(shè)置的一樣

或 keytool -importkeystore -srckeystore debug.keystore -destkeystore testkey.p12 -srcstoretype JKS -deststoretype PKCS12

   按提示在dos窗口
   輸入目標(biāo)密鑰庫口令 如:android   再次輸入新口令 如:android
   輸入源密鑰庫口令   如:android
   目標(biāo)密鑰庫口令一定要設(shè)置并且和源密鑰庫口令一樣,如:android

2. 從生成的pkcs12標(biāo)準(zhǔn)的證書+私鑰文件testkey.p12中,先提取得到含有證書信息的.x509.pem證書文件

   openssl pkcs12 -nokeys -in testkey.p12 -passin pass:android -out testkey.x509.pem -passout pass:android
    -nokeys,就是指不要私鑰key信息,只要證書cert信息,直接導(dǎo)出含有證書信息的.pem文件,即為.x509.pem 證書文件

3. 把私鑰key信息提取出來,不過提取出來含有私鑰key信息的.pem文件是pkcs12標(biāo)準(zhǔn)的

   openssl pkcs12 -nocerts -in testkey.p12 -passin pass:android -out testkey.pem -passout pass:android
    -nocerts,就是指不要證書cert信息,只要私鑰key信息,直接導(dǎo)出含有私鑰信息pkcs12標(biāo)準(zhǔn)的.pem文件

4. 把之前的pkcs12標(biāo)準(zhǔn)的私鑰.pem文件,轉(zhuǎn)換為pkcs8標(biāo)準(zhǔn),就得到.pk8私鑰文件

     openssl pkcs8 -topk8 -in testkey.pem -inform PEM -passin pass:android -out testkey.pk8 -outform DER -nocrypt
  或 openssl pkcs8 -topk8 -outform DER -in testkey.pem -inform PEM -out testkey.pk8 -nocrypt

即可生成testkey.pk8 私鑰文件,然后將先前制作的證書文件證書文件testkey.x509.pem和密鑰文件testkey.pk8復(fù)制保存下來給apk簽名:
java -jar signapk.jar testkey.x509.pem testkey.pk8 unsigned.apk signed.apk

兩鐘方法不同之處是將pkcs12格式的.p12證書密鑰文件轉(zhuǎn)換成含證書信息和密鑰信息的.pem文件時

方法一未在openssl命令參數(shù)中添加拆分命令,一次性將證書和密鑰信息轉(zhuǎn)換在同一個.pem文件中
需要通過“記事本”等將含證書信息和私鑰信息文本信息的一個.pem文件拆分成兩個單獨(dú)的證書信息.pem文件和私鑰信息.pem文件

方法二則在openssl命令參數(shù)中,添加了拆分命令:-nokeys(不要私鑰key信息,只要證書cert信息)、-nocerts(不要證書cert信息,只要私鑰key信息)
分兩次將證書信息和密鑰信息轉(zhuǎn)換成兩個單獨(dú)的證書信息.pem文件和私鑰信息的.pem文件
無需再通過“記事本”等對已經(jīng)是單獨(dú)的證書信息.pem文件和私鑰信息.pem文件進(jìn)行拆分

方法三、利用SSL在線工具轉(zhuǎn)換

SSL在線工具-在線證書格式轉(zhuǎn)換|證書在線合并|p12、pfx、jks證書在線合成解析:
http://www./jks_pkcs12.html


1. 打開SSL在線工具網(wǎng)站,將JKS格式的 debug.keystore證書密鑰文件“點(diǎn)擊上傳或拖拽到此處”
   選擇“JKS”轉(zhuǎn)成“PEM”
   在右邊2個框中,分別輸入私鑰密碼KEY,如 android (KEY,若私鑰加密對其進(jìn)行解密),也可不輸入這個私鑰密碼KEY ,  和JKS密碼,如 android

結(jié)果,就能得到如

私鑰

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA36d2U6+e84b0FsL5pgdXRpXjB6vioOu0gsdWMuwX/eQ8/E4q
bdhcxHXxBJELw3F4aZFaoHPeUP+3ruZhoetS2O1fKs01O7AXOGMvcTCI62i/CXe3
xkhB+Z+omXujvVCUzXxk3SM2Kx2hsbFUEp7EkL6s/D7U2YodPVXWqdAMoREcAjrb
pMIilwKBgDT+xGFZ4oPNZELao0XWkP3+WOlBqlERsPIRgw07LFwLlQMm+Gw6JB+A
0qxL3aazuk7hahSHg5+eleob14Vkh/hYLoYNq+Js1/C0LCZiqM3LFGPg62P3j/tW
/p1Prjs0gsGpxBsqxEkWFQs5x95GGAk56QV0LHC4o4JmnP6z4Roj
-----END RSA PRIVATE KEY-----


證書

-----BEGIN CERTIFICATE-----
MIIDYTCCAkmgAwIBAgIEP5A+yjANBgkqhkiG9w0BAQsFADBgMQ0wCwYDVQQGEwRU
ZXN0MQ0wCwYDVQQIEwRUZXN0MQ0wCwYDVQQHEwRUZXN0MQ0wCwYDVQQKEwRUZXN0
MQ0wCwYDVQQLEwRUZXN0MRMwEQYDVQQDEwpEb3VibGVtaW5lMCAXDTE5MDExMDIz
Wrf1j0dvIk3FAMs7mLoYoRZVddKkK09OEEdotmXbXklmA+pXuaUxzBgs9NoDoUi4
8vF/rlqqx+3zEJDXehKq703BIJ0SxAY/RglGfUgmE5qFk/q0ZsuS/hAO1K8BhpiZ
AKsjk5A=
-----END CERTIFICATE-----

2.分別將含有證書信息和私鑰信息的文本內(nèi)容復(fù)制到新建的2個文本文檔中,重命名為含有證書信息的 ***.x509.pem文件和含私鑰信息的***.pem文件
  如證書文件testkey.x509.pem  和 私鑰文件testkey.pem

3. 把含私鑰信息testkey.pem文件轉(zhuǎn)換成.pk8格式私鑰文件

在附件中以管理員身份運(yùn)行運(yùn)行“命令提示符”,打開dos界面,輸入以下命令,如
cd C:\Program Files\Java\jdk1.8.0_192\bin
cd C:\Program Files\Java\jdk1.7.0_80\bin

   openssl pkcs8 -topk8 -outform DER -in testkey.pem -inform PEM -out testkey.pk8 -nocrypt
或 openssl pkcs8 -topk8 -in testkey.pem -inform PEM -passin pass:android -out testkey.pk8 -outform DER -nocrypt

即可生成testkey.pk8 私鑰文件,然后將先前制作的證書文件證書文件testkey.x509.pem和密鑰文件testkey.pk8復(fù)制保存下來給apk簽名:
java -jar signapk.jar testkey.x509.pem testkey.pk8 unsigned.apk signed.apk

最后用上述三種方法之一得到的證書文件testkey.x509.pem 和私鑰文件testkey.pem 替換掉反編譯工具上被一些安全軟件列入黑名單的證書文件testkey.x509.pem和密鑰文件testkey.pk8,再重新對安卓APK反編譯后簽名就不會被安全軟件報毒了。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多