Android-APK:为何你的应用老是被破解,该如何有效地做签名校验

/**

  • 做普通的签名校验
    */
    private boolean doNormalSignCheck() {
    String trueSignMD5 = “d0add9987c7c84aeb7198c3ff26ca152”;
    String nowSignMD5 = “”;
    try {
    // 得到签名的MD5
    PackageInfo packageInfo = getPackageManager().getPackageInfo(
    getPackageName(),
    PackageManager.GET_SIGNATURES);
    Signature[] signs = packageInfo.signatures;
    String signBase64 = Base64Util.encodeToString(signs[0].toByteArray());
    nowSignMD5 = MD5Utils.MD5(signBase64);
    } catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
    }
    return trueSignMD5.equals(nowSignMD5);
    }

系统将应用的签名信息封装在 PackageInfo 中,调用 PackageManager 的 getPackageInfo(String packageName, int flags) 即可获取指定包名的签名信息。

这个并不用我多说了,如果没听过的话,用搜索引擎找一下「Android 签名校验」,花上几分钟就明白了,很容易的。

编译出 release 包并安装,可以看见运行效果很满意。但是事实真的如此么?下面我们让他作为受害者,被一键破解。

使用工具去除先前的校验

很多人可能不知道,去除简单的签名校验连小朋友都能做到!

请看具有「安全性测试」功能的「M* 管理器」上场,一键去除我们上文准备好的受害者的签名校验:

神奇的一幕发生了,居然还是通过,也就是我们刚才的操作形同虚设,我们把被破解后的安装包传回 PC,准备下一步分析

JADX 上场

为了知道他做了什么,我们需要逆向出目前受害者的代码。这里我们使用开源项目jadx来完成。

打开 jadx 之后会直接弹出「打开」对话框,选取被破解的 apk 即可:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
universal-apk-builder是一个用于构建通用APKAndroid应用程序包)的工具。它的作用是将一个应用程序的源代码和资源文件转换成可以在不同Android设备上运行的通用APK文件。 通常在开发Android应用程序时,需要为不同的设备和系统版本适配不同的APK文件。这意味着开发人员需要为每个设备和系统版本构建多个APK文件,增加了工作量和开发难度。 universal-apk-builder解决了这个问题。它可以根据输入的源代码和资源文件,自动进行适配和优化,生成一个通用的APK文件。这个通用APK文件可以在大多数Android设备和系统版本上运行,不再需要为每个设备和系统版本构建单独的APK文件。 使用universal-apk-builder的好处是显而易见的。首先,它大大减少了开发人员的工作量和开发周期,因为只需要构建一个通用的APK文件即可。其次,通用APK文件的运行效果和性能可以得到更好的保证,因为它经过了适配和优化处理。 然而,与任何工具一样,universal-apk-builder也有一些限制。它可能无法完全适配所有的Android设备和系统版本。在某些特殊情况下,仍然需要构建特定设备和系统版本的APK文件。此外,由于通用APK文件需要兼容多种设备和系统版本,可能会对应用程序的大小和性能产生一些影响。 总体而言,universal-apk-builder是一个实用的工具,可以帮助开发人员简化APK构建过程,提高开发效率。但开发人员仍需根据具体情况和需求来选择是否使用该工具,以及是否进行特定设备和系统版本的适配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值