使用与原始签名 apk 不同的密钥库反编译已签名的 apk、修改和重新编译?
Decompile a signed apk, modify and recompile usiing different keystore than that of the original signed apk?
是否可以反编译一个签名的apk(比如,用keystore A
签名),修改它的代码,重新编译并使用不同的密钥库签名(比如, keystore B
)?
是否会在设备上安装并运行这样的 apk?
是的,这是可能的,当应用程序被投放到黑市时就会发生这种情况。当然,这种情况尤其发生在那些不关心保护他们的 apk
的人身上
我会按照你的步骤逐点给你一个亮点,但你对你最终会做什么负全部责任
1) 反编译已签名的 apk
这一步通常集中在对原始apk应用apktool命令:
apktool d app_to_tamper.apk
这将生成一个文件夹,比如 app_to_tamper_folder
2) 修改其代码 -> 我不会在此处添加任何内容
3) 重新编译
这一步通常集中在修改后的 apk 上应用下一个 apktool 命令[实际上在它的文件夹上]:
apktool b app_to_tamper_folder
从上一个命令中,您将得到在 app_to_tamper_folder/dist directory
中生成的未签名 tampered_app.apk
4) 签名
首先,您必须在 tampered_app.apk
上签名,否则一旦您尝试 运行 在您的 phone 上签名,它将无法工作。至少有两种方法可以做到这一点。最常见的是基于这个命令:
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 官方文档 here 上找到。请注意,根据您选择的签名工具,您可能需要在不同的时间轴上应用此命令
此时您已准备好安装 final_tampered_app.apk
和 phone
上的 运行
6) 奖金
正如我所说,这种情况尤其发生在那些甚至不尝试保护 apk 的人身上。 Android Studio 原生支持一种工具 - ProGuard - 它能够提供基本的混淆。正如我在我的 another post 中广泛展示的那样,这不足以使您免受攻击者的损害,但可以肯定的是,这会使应用程序篡改变得更加困难
为了获得更强大的保护,请使用一些付费工具,尤其是当应用程序包含敏感数据时 [例如医疗保健、金融科技等]。这将防止 you/your company/your 应用程序的不良声誉,并会增加用户的信任度和安全性。安全总比后悔好,尤其是现在
是否可以反编译一个签名的apk(比如,用keystore A
签名),修改它的代码,重新编译并使用不同的密钥库签名(比如, keystore B
)?
是否会在设备上安装并运行这样的 apk?
是的,这是可能的,当应用程序被投放到黑市时就会发生这种情况。当然,这种情况尤其发生在那些不关心保护他们的 apk
的人身上我会按照你的步骤逐点给你一个亮点,但你对你最终会做什么负全部责任
1) 反编译已签名的 apk
这一步通常集中在对原始apk应用apktool命令:
apktool d app_to_tamper.apk
这将生成一个文件夹,比如 app_to_tamper_folder
2) 修改其代码 -> 我不会在此处添加任何内容
3) 重新编译
这一步通常集中在修改后的 apk 上应用下一个 apktool 命令[实际上在它的文件夹上]:
apktool b app_to_tamper_folder
从上一个命令中,您将得到在 app_to_tamper_folder/dist directory
tampered_app.apk
4) 签名
首先,您必须在 tampered_app.apk
上签名,否则一旦您尝试 运行 在您的 phone 上签名,它将无法工作。至少有两种方法可以做到这一点。最常见的是基于这个命令:
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 官方文档 here 上找到。请注意,根据您选择的签名工具,您可能需要在不同的时间轴上应用此命令
此时您已准备好安装 final_tampered_app.apk
和 phone
6) 奖金
正如我所说,这种情况尤其发生在那些甚至不尝试保护 apk 的人身上。 Android Studio 原生支持一种工具 - ProGuard - 它能够提供基本的混淆。正如我在我的 another post 中广泛展示的那样,这不足以使您免受攻击者的损害,但可以肯定的是,这会使应用程序篡改变得更加困难
为了获得更强大的保护,请使用一些付费工具,尤其是当应用程序包含敏感数据时 [例如医疗保健、金融科技等]。这将防止 you/your company/your 应用程序的不良声誉,并会增加用户的信任度和安全性。安全总比后悔好,尤其是现在