【问题标题】:Decompile a signed apk, modify and recompile usiing different keystore than that of the original signed apk?反编译签名的 apk,使用与原始签名 apk 不同的密钥库修改和重新编译?
【发布时间】:2018-06-10 21:00:39
【问题描述】:

是否可以反编译一个签名的apk(例如,用keystore A签名),修改它的代码,重新编译 并使用不同的密钥库(例如keystore B签署

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

【问题讨论】:

标签: android security android-keystore


【解决方案1】:

是的,这是有可能的,这正是应用程序投放黑市时发生的情况。当然,这尤其发生在那些不关心保护他们的 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 上签名,否则一旦您尝试在手机上运行它,它将无法运行。至少有两种方法可以做到这一点。最常见的就是基于这个命令:

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


6) 奖金

正如我所说,这种情况尤其发生在那些甚至不尝试保护 apk 的人身上。 Android Studio 原生支持一个工具 - ProGuard - 它能够提供基本的混淆。正如我在我的another post 中广泛展示的那样,这不足以使您免受攻击者的损害,但可以肯定的是,它会使应用程序立即被篡改变得更加困难

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

【讨论】:

  • 我找到了一些解决方案,使后端数据库变得难以混淆: 1. 创建一个 api 并使其拒绝恶意请求 2. 在 api 上保留数据库密钥 3. 添加类级别权限和 ACL在数据库上。您能否提出更多解决方案来保护数据库免受攻击,例如删除数据库或获取所有数据甚至恶意查询?
猜你喜欢
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 2020-11-11
  • 2012-09-04
  • 1970-01-01
  • 2015-07-28
  • 2014-05-13
  • 1970-01-01
相关资源
最近更新 更多