Aay*_*eja 1 security android android-keystore
是否可以反编译已签名的apk(例如,签名keystore A),修改其代码,使用不同的密钥库重新编译和签名(比方说)?keystore B
将这样的apk安装并在设备上运行吗?
是的,这是可能的,这正是当应用程序被投放到黑市时会发生什么.当然,这尤其发生在那些不关心保护他们的apk的人身上
我会按照你的步骤逐点给你一个亮点,但你完全有责任完成所有这些工作
1)反编译一个签名的apk
此步骤通常集中在原始apk 上应用apktool命令:
apktool d app_to_tamper.apk
Run Code Online (Sandbox Code Playgroud)
这将生成一个文件夹,比如说 app_to_tamper_folder
2)修改它的代码 - >我不会在这里添加任何东西
3)重新编译
此步骤通常集中在修改后的apk [实际上在其文件夹]上应用下一个apktool命令:
apktool b app_to_tamper_folder
Run Code Online (Sandbox Code Playgroud)
从最后一个命令,您将获得一个未签名的tampered_app.apk生成app_to_tamper_folder/dist directory
4)签名
首先你必须签名,tampered_app.apk或者一旦你试图在手机上运行它,它将无法正常工作.至少有两种方法可以做到这一点.最常见的是基于此命令:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $YOUR-KEY-STORE-PATH $UNSIGN-APK-PATH $ALIAS-NAME
Run Code Online (Sandbox Code Playgroud)
所以例如[这里我用debug.keystore签名]:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore debug.keystore tampered_app.apk androiddebugkey
Run Code Online (Sandbox Code Playgroud)
您可以选择验证apk
jarsigner -verify -verbose -certs $UNSIGN-APK-PATH
Run Code Online (Sandbox Code Playgroud)
5)优化它
此步骤基于调用的工具zipalign和以下命令:
zipalign -v 4 $UNSIGN-APK-PATH $OUTPUT-APK-PATH
Run Code Online (Sandbox Code Playgroud)
例如:
zipalign -v 4 tampered_app.apk final_tampered_app.apk
Run Code Online (Sandbox Code Playgroud)
基本上它会对齐APK中的所有未压缩数据,例如图像或原始文件.这将减少运行应用程序时消耗的RAM量.更多信息可以在Android官方文档中找到.请注意,根据您选择签名的工具,您可能必须使用不同的时间轴应用此命令
此时,您final_tampered_app.apk已准备好安装并在手机上运行
6)奖金
正如我所说,这尤其发生在那些甚至不试图保护apk的人身上.Android Studio原生支持一种工具 - ProGuard - 能够提供基本的混淆.这不足以让你免受攻击者的伤害,因为我在我的另一篇文章中广泛展示但是肯定会让app立即篡改更加困难
为了获得更强大的保护,请使用一些付费工具,尤其是当应用程序包含敏感数据[例如医疗保健,金融科技等]时.这样可以防止您/您公司/您的应用程序出现不良信誉,从而提高用户的信任度和安全性.比抱歉更安全,特别是现在
| 归档时间: |
|
| 查看次数: |
3996 次 |
| 最近记录: |