解决反编译后的安卓apk会被报毒的方法

自助开通VIP,整站资源任意下载

目前几种常用的反编译工具如ApkIDE、APKDB、Androidkiller及较早版本的ApkToolBox 等反编译某些安卓热门apk会被一些安全软件检测含有木马或恶意程序,产生误判误报。
原因是一些手机上的安全软件如360等会将这些安卓热门apk的非官方签名列入了与安卓APK文件名一一对应黑名单,解决办法就是重新生成新的证书文件testkey.x509.pem和密钥文件testkey.pk8,替换掉那些反编译工具上被一些安全软件列入黑名单的证书文件testkey.x509.pem和密钥文件testkey.pk8,再重新对安卓APK反编译后签名即可。
需要jdk或jre支持,官方下载地址: https://www.oracle.com/technetwork/java/javase/downloads/
环境变量JAVA_HOME,要指向jdk或jre目录,若电脑上环境变量没有JAVA_HOME路径,可在电脑上设置本机环境变量JAVA_HOME路径
Windows 64位系统安装*****-windows-x64为64位的jdk或jre以及Windows 32位系统安装*****-windows-i586为32位的jdk或jre的Java路径为 C:Program FilesJava 如:
C:Program FilesJavajdk1.7.0_80 64位系统安装 jdk-7u80-windows-x64 32位系统安装 jdk-7u80-windows-i586
C:Program FilesJavajre7 64位系统安装 jdk-7u80-windows-x64
C:Program FilesJavajdk1.8.0_192 64位系统安装 jdk-8u192-windows-x64 32位系统安装 jdk-8u192-windows-i586
C:Program FilesJavajre1.8.0_192 64位系统安装 jdk-8u192-windows-x64
C:Program FilesJavajre1.7.0_80 64位系统安装 jre-7u80-windows-x64 32位系统安装 jre-7u80-windows-i586
C:Program FilesJavajre1.8.0_161 64位系统安装 jre-8u161-windows-x64 32位系统安装 jre-8u161-windows-i586
Windows 64 位系统安装*****-windows-i586为32位的jdk或jre的Java路径为 C:Program Files (x86)Java 如:
C:Program Files (x86)Javajdk1.7.0_80 64位系统安装 jdk-7u80-windows-i586
C:Program Files (x86)Javajdk1.8.0_192 64位系统安装 jdk-8u192-windows-i586
C:Program Files (x86)Javajre1.7.0_80 64位系统安装 jre-7u80-windows-i586
C:Program Files (x86)Javajre1.8.0_161 64位系统安装 jre-8u161-windows-i586
在电脑上可按以下方法设置环境变量:JAVA_HOME、PATH
JAVA_HOME:我的电脑(计算机)->属性->高级(高级系统设置)->单击“环境变量”按钮
->单击“系统变量”区域的“新建”按钮->在“变量名”文本框中输入JAVA_HOME
在“变量值”文本框中输入JDK的安装路径(如:C:Program FilesJavajdk1.7.0_80),单击确定
PATH: 在系统变量中查看PATH变量,如果存在PATH,则在最末尾多添加一个%JAVA_HOME%bin;(直接添加,连;也加上,无需加空格之类的,以下相同)
如果不存在,则新建变量PATH,设定变量值为:%JAVA_HOME%bin;
具体过程如下:
一、生成*****.keystorede如bug.keystore证书密钥文件
1、在附件中以管理员权限运行“命令提示符”,打开dos界面,根据电脑上安装的jdk位数
Windows 64位系统安装*****-windows-x64为64位的jdk以及Windows 32位系统安装*****-windows-i586为32位的jdk 输入以下代码
cd C:Program FilesJavajdk*bin
Windows 64 位系统安装*****-windows-i586为32位的jdk 输入以下代码
cd C:Program Files (x86)Javajdk*bin
切换到jdk的bin目录:C:Program FilesJavajdk*bin 或 C:Program Files (x86)Javajdk*bin
在dos窗口输入:keytool -genkey -alias androiddebugkey -keyalg RSA -validity 36500 -keysize 2048 -keystore debug.keystore -keypass android -storepass android
出现问题并填写
您的名字与姓氏是什么?
[Unknown]: localhost
您的组织单位名称是什么?
[Unknown]: test
您的组织名称是什么?
[Unknown]: test
您所在的城市或区域名称是什么?
[Unknown]: test
您所在的省/市/自治区名称是什么?
[Unknown]: test
该单位的双字母国家/地区代码是什么?
[Unknown]: test
CN=localhost, OU=test, O=test, L=test, STtest, C=test 是否正确?
[否]: y
填写相关信息后会在Java的bin目录下生成密钥文件 debug.keystore
就是我们需要的安卓Android签名密钥文件,(-validity 36500 表示证书的有效天数为36500天)
其中:
KeystoreFile密钥文件名为 debug.keystore
-alias密钥别名为 androiddebugkey
-storepass密钥密码为 android
-keypass android 表示密钥密码keypassPassword为 android
密钥文件名debug.keystore、密钥别名 androiddebugkey、 密钥storepass和keypassPassword密码 android 都可根据自己的需要设定
就能得到.jks格式 .keystore证书密钥文件debug.keystore,可用apksigner或jarsigner两种签名代码之一给反编译后的安卓APK文件签名就不会报毒了。
如果要用signapk方式签名给反编译后的安卓APK文件签名就需要将.jks格式 .keystore证书密钥文件debug.keystore转换成testkey.x509.pem证书文件+testkey.pk8密钥文件
二、jks格式 .keystore证书密钥文件debug.keystore转换成testkey.x509.pem证书文件+testkey.pk8密钥文件的方法
转换签名文件需要OpenSSL环境支持
Openssl第三方下载地址: http://slproweb.com/products/Win32OpenSSL.html
根据OpenSSL的版本和安装路径添加OpenSSL环境变量,如安装 Win64OpenSSL 则
在计算机->属性->高级系统配置->高级->环境变量
编辑系统变量
变量名: PATH
在变量值中加入: C:Program FilesOpenSSL-Win64bin;
完成以上步骤后,开始验证是否设置正确
运行cmd(开始,运行,输入cmd,回车),或点击“附件”中的“命令提示符”,
输入 openssl
回车出现 openssl>
或输入start openssl
弹出dos窗口 openssl>
就表明OpenSSL环境变量配置正确
或下载安装Win32OpenSSL 或 Win64OpenSSL后,将OpenSSL-Win32或OpenSSL-Win64文件夹bin目录中的所有文件复制到java下如jdk1.*.0_*的bin目录中
然后将.jks格式 .keystore证书密钥文件debug.keystore复制到java的bin目录中
如: C:Program FilesJavajdk1.8.0_192bin
C:Program FilesJavajdk1.7.0_80bin
方法一:
在附件中以管理员身份运行运行“命令提示符”,打开dos界面,输入以下命令,如
cd C:Program FilesJavajdk1.8.0_192bin
cd C:Program FilesJavajdk1.7.0_80bin
1. 将keystore文件转换为pkcs12格式
keytool -importkeystore -srckeystore debug.keystore -destkeystore testkey.p12 -srcstoretype JKS -deststoretype PKCS12
按提示在dos窗口
输入目标密钥库口令 如:android 再次输入新口令 如:android
输入源密钥库口令 如:android
目标密钥库口令一定要设置并且和源密钥库口令一样,如: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:
-----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-----
复制从“BEGIN CERTIFICATE”到“END CERTIFICATE”含有证书信息的文本内容后,新建文本文档,保存为 testkey.x509.pem
或将从“BEGIN CERTIFICATE”到“END CERTIFICATE”含有证书信息的文本内容保留后,另存为 testkey.x509.pem
如下所示
-----BEGIN CERTIFICATE-----
MIIDYTCCAkmgAwIBAgIEP5A+yjANBgkqhkiG9w0BAQsFADBgMQ0wCwYDVQQGEwRU
ZXN0MQ0wCwYDVQQIEwRUZXN0MQ0wCwYDVQQHEwRUZXN0MQ0wCwYDVQQKEwRUZXN0
MQ0wCwYDVQQLEwRUZXN0MRMwEQYDVQQDEwpEb3VibGVtaW5lMCAXDTE5MDExMDIz
Wrf1j0dvIk3FAMs7mLoYoRZVddKkK09OEEdotmXbXklmA+pXuaUxzBgs9NoDoUi4
8vF/rlqqx+3zEJDXehKq703BIJ0SxAY/RglGfUgmE5qFk/q0ZsuS/hAO1K8BhpiZ
AKsjk5A=
-----END CERTIFICATE-----
testkey.x509.pem 文件即是我们最后需要的证书文件
复制从“BEGIN RSA PRIVATE KEY”到“END RSA PRIVATE KEY”含有私钥信息的文本内容后,新建文本文档,保存为 testkey.pem
或将从“BEGIN RSA PRIVATE KEY”到“END RSA PRIVATE KEY”含有私钥信息的文本内容保留后,另存为 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复制保存下来给apk签名:
java -jar signapk.jar testkey.x509.pem testkey.pk8 unsigned.apk signed.apk
方法二:
在附件中以管理员身份运行运行“命令提示符”,打开dos界面,输入以下命令,如
cd C:Program FilesJavajdk1.8.0_192bin
cd C:Program FilesJavajdk1.7.0_80bin
1. 把.jks转换为pkcs12标准的证书+私钥文件
keytool -importkeystore -srckeystore debug.keystore -srcstoretype JKS -srcalias androiddebugkey -srcstorepass android -srckeypass android -destkeystore testkey.p12 -deststoretype PKCS12 -destalias testkey -deststorepass android -destkeypass android
因为pkcs12不支持keypass
所以-destkeypass如果单独设置密码的话
keytool会提示你
这个密码不起作用
但是如果你不设置密码的话
后面导出key的时候会报错
所以这里必须要设置destkeypass
并且和deststorepass设置的一样
或 keytool -importkeystore -srckeystore debug.keystore -destkeystore testkey.p12 -srcstoretype JKS -deststoretype PKCS12
按提示在dos窗口
输入目标密钥库口令 如:android 再次输入新口令 如:android
输入源密钥库口令 如:android
目标密钥库口令一定要设置并且和源密钥库口令一样,如:android
2. 从生成的pkcs12标准的证书+私钥文件testkey.p12中,先提取得到含有证书信息的.x509.pem证书文件
openssl pkcs12 -nokeys -in testkey.p12 -passin pass:android -out testkey.x509.pem -passout pass:android
-nokeys,就是指不要私钥key信息,只要证书cert信息,直接导出含有证书信息的.pem文件,即为.x509.pem 证书文件
3. 把私钥key信息提取出来,不过提取出来含有私钥key信息的.pem文件是pkcs12标准的
openssl pkcs12 -nocerts -in testkey.p12 -passin pass:android -out testkey.pem -passout pass:android
-nocerts,就是指不要证书cert信息,只要私钥key信息,直接导出含有私钥信息pkcs12标准的.pem文件
4. 把之前的pkcs12标准的私钥.pem文件,转换为pkcs8标准,就得到.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复制保存下来给apk签名:
java -jar signapk.jar testkey.x509.pem testkey.pk8 unsigned.apk signed.apk
两钟方法不同之处是将pkcs12格式的.p12证书密钥文件转换成含证书信息和密钥信息的.pem文件时
方法一未在openssl命令参数中添加拆分命令,一次性将证书和密钥信息转换在同一个.pem文件中
需要通过“记事本”等将含证书信息和私钥信息文本信息的一个.pem文件拆分成两个单独的证书信息.pem文件和私钥信息.pem文件
方法二则在openssl命令参数中,添加了拆分命令:-nokeys(不要私钥key信息,只要证书cert信息)、-nocerts(不要证书cert信息,只要私钥key信息)
分两次将证书信息和密钥信息转换成两个单独的证书信息.pem文件和私钥信息的.pem文件
无需再通过“记事本”等对已经是单独的证书信息.pem文件和私钥信息.pem文件进行拆分
方法三、利用SSL在线工具转换
SSL在线工具-在线证书格式转换|证书在线合并|p12、pfx、jks证书在线合成解析:
http://www.ssleye.com/jks_pkcs12.html
1. 打开SSL在线工具网站,将JKS格式的 debug.keystore证书密钥文件“点击上传或拖拽到此处”
选择“JKS”转成“PEM”
在右边2个框中,分别输入私钥密码KEY,如 android (KEY,若私钥加密对其进行解密),也可不输入这个私钥密码KEY , 和JKS密码,如 android
结果,就能得到如
私钥
-----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.分别将含有证书信息和私钥信息的文本内容复制到新建的2个文本文档中,重命名为含有证书信息的 ***.x509.pem文件和含私钥信息的***.pem文件
如证书文件testkey.x509.pem 和 私钥文件testkey.pem
3. 把含私钥信息testkey.pem文件转换成.pk8格式私钥文件
在附件中以管理员身份运行运行“命令提示符”,打开dos界面,输入以下命令,如
cd C:Program FilesJavajdk1.8.0_192bin
cd C:Program FilesJavajdk1.7.0_80bin
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复制保存下来给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反编译后签名就不会被安全软件报毒了。
相关工具:
1. ApkTool助手(点击下载)
2. apktool 2.3.4_DIY(点击下载)
3. Android Killer 1.4(点击下载)

解决反编译后的安卓apk会被报毒的方法-第1张

本站源码仅做学术研究,自娱自乐使用,不得用于赌博性质的非法商业用途!转载请说明出处!
棋牌资源网 » 解决反编译后的安卓apk会被报毒的方法

这里有你所需要的,找专业的人做专业的事!

游戏演示 联系客服