Android 反编译已签名apk,使用与原始已签名apk不同的密钥库修改和重新编译?

Android 反编译已签名apk,使用与原始已签名apk不同的密钥库修改和重新编译?,android,security,android-keystore,Android,Security,Android Keystore,是否可以反编译a已签名的apk(例如,使用密钥库a签名),修改其代码,重新编译并使用不同的密钥库对其进行签名(例如,密钥库B) 这样的apk会在设备上安装和运行吗?是的,这是可能的,而这正是应用程序进入黑市时发生的情况。当然,这种情况尤其发生在那些不关心apk安全的人身上 我会按照你的步骤一点一点地给你一个亮点,但你要完全负责你最终会做什么 1) 反编译已签名的apk 此步骤通常集中于对原始apk应用命令: apktool d app_to_tamper.apk 这将生成一个文件夹,例如app

是否可以反编译a已签名的apk(例如,使用
密钥库a
签名),修改其代码,重新编译并使用不同的密钥库对其进行签名(例如,
密钥库B


这样的apk会在设备上安装和运行吗?

是的,这是可能的,而这正是应用程序进入黑市时发生的情况。当然,这种情况尤其发生在那些不关心apk安全的人身上

我会按照你的步骤一点一点地给你一个亮点,但你要完全负责你最终会做什么

1) 反编译已签名的apk

此步骤通常集中于对原始apk应用命令:

apktool d app_to_tamper.apk
这将生成一个文件夹,例如
app\u to\u tamper\u文件夹

2) 修改它的代码->我不会在这里添加任何内容

3) 重新编译

此步骤通常集中在对修改后的apk[实际上在其文件夹上]应用下一个apktool命令:

apktool b app_to_tamper_folder
从上一个命令中,您将返回在
app\u to\u tamper\u文件夹/dist目录中生成的未签名的
tampered\u app.apk

4) 签字

首先,您必须在被篡改的应用程序apk上签名,否则一旦您尝试在手机上运行它,它将无法工作。至少有两种方法可以做到这一点。最常见的是基于以下命令:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $YOUR-KEY-STORE-PATH  $UNSIGN-APK-PATH $ALIAS-NAME
例如[这里我用debug.keystore签名]:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore debug.keystore tampered_app.apk androiddebugkey
您可以选择验证apk

jarsigner -verify -verbose -certs $UNSIGN-APK-PATH
5) 优化它

此步骤基于名为
zipalign
的工具和以下命令:

zipalign -v 4 $UNSIGN-APK-PATH $OUTPUT-APK-PATH
例如:

zipalign -v 4 tampered_app.apk final_tampered_app.apk
基本上,它会对齐APK中所有未压缩的数据,如图像或原始文件。这将减少运行应用程序时所消耗的RAM量。更多信息可以在Android官方文档中找到。请注意,根据您将选择的签名工具,您可能必须使用不同的时间线应用此命令

此时,您得到了
最终的\u篡改的\u app.apk
,可以在手机上安装和运行了


6) 奖金

正如我所说的,这种情况尤其发生在那些甚至不想保护apk的人身上。Android Studio本机支持一个工具ProGuard,它能够提供基本的模糊处理。这将不足以使你免受攻击者的伤害,正如我在我的文章中广泛展示的那样,但可以肯定的是,这将使篡改应用程序立即变得更加困难


为了获得更强大的保护,请使用一些付费工具,尤其是当应用程序包含敏感数据时[如医疗保健、金融科技等]。这将防止你/你的公司/你的应用程序的坏名声,并将增加用户的信任和安全。安全总比遗憾好,尤其是在当今

是的,这是可能的,而且这正是应用程序进入黑市时发生的事情。当然,这种情况尤其发生在那些不关心apk安全的人身上

我会按照你的步骤一点一点地给你一个亮点,但你要完全负责你最终会做什么

1) 反编译已签名的apk

此步骤通常集中于对原始apk应用命令:

apktool d app_to_tamper.apk
这将生成一个文件夹,例如
app\u to\u tamper\u文件夹

2) 修改它的代码->我不会在这里添加任何内容

3) 重新编译

此步骤通常集中在对修改后的apk[实际上在其文件夹上]应用下一个apktool命令:

apktool b app_to_tamper_folder
从上一个命令中,您将返回在
app\u to\u tamper\u文件夹/dist目录中生成的未签名的
tampered\u app.apk

4) 签字

首先,您必须在被篡改的应用程序apk上签名,否则一旦您尝试在手机上运行它,它将无法工作。至少有两种方法可以做到这一点。最常见的是基于以下命令:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $YOUR-KEY-STORE-PATH  $UNSIGN-APK-PATH $ALIAS-NAME
例如[这里我用debug.keystore签名]:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore debug.keystore tampered_app.apk androiddebugkey
您可以选择验证apk

jarsigner -verify -verbose -certs $UNSIGN-APK-PATH
5) 优化它

此步骤基于名为
zipalign
的工具和以下命令:

zipalign -v 4 $UNSIGN-APK-PATH $OUTPUT-APK-PATH
例如:

zipalign -v 4 tampered_app.apk final_tampered_app.apk
基本上,它会对齐APK中所有未压缩的数据,如图像或原始文件。这将减少运行应用程序时所消耗的RAM量。更多信息可以在Android官方文档中找到。请注意,根据您将选择的签名工具,您可能必须使用不同的时间线应用此命令

此时,您得到了
最终的\u篡改的\u app.apk
,可以在手机上安装和运行了


6) 奖金

正如我所说的,这种情况尤其发生在那些甚至不想保护apk的人身上。Android Studio本机支持一个工具ProGuard,它能够提供基本的模糊处理。这将不足以使你免受攻击者的伤害,正如我在我的文章中广泛展示的那样,但可以肯定的是,这将使篡改应用程序立即变得更加困难


为了获得更强大的保护,请使用一些付费工具,尤其是当应用程序包含敏感数据时[如医疗保健、金融科技等]。这将防止你/你的公司/你的应用程序的坏名声,并将增加用户的信任和安全。安全总比遗憾好,尤其是现在,Stack Overflow是一个解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。堆栈溢出是一个解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许是一个更好的p