zoukankan      html  css  js  c++  java
  • 【爱加密】防止签名破解

    【爱加密】防止签名破解

    • |
    • 浏览:312
    • |
    • 更新:2014-01-29 15:30
    • |
    • 标签: 加密
    分步阅读

    百度经验:jingyan.baidu.com

    防止签名破解的经验与方法

    百度经验:jingyan.baidu.com

    方法/步骤

    1. 1

      现在的破解手段是越来越高明了,分享一篇破解签名的文章,各位研究一下,对于签名破解可要仔细防范呀。

      我们以“XXXX管家”为例,该apk使用了签名保护。我们对apk二次打包后,程序无法运行。原因是程序运行时会获取当前应用签名和官方签名进行对比。如果发现不一致就会终止程序。

      下面我们对签名保护进行破解

      首先我们需要用到的工具是APK改之理。

    2. 2

      点击”项目”->”打开apk”,反编译apk。

      【爱加密】防止签名破解步骤阅读

    3. 3

      获取应用签名的java代码是:

      PackageInfo packageInfo = getPackageManager().getPackageInfo(

      "xx.xxx.xx", PackageManager.GET_SIGNATURES);

      Signature[] signs = packageInfo.signatures;

      其中“Signature” 对应的smali代码是

      “Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature”

      我们在改之理

      搜索“Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature”

      【爱加密】防止签名破解步骤阅读

    4. 4

      有两个文件用到了签名。首先看下ct.smali

      【爱加密】防止签名破解步骤阅读

    5. 5

      发现这个S(Ljava/lang/String;) 是获取签名的方法。Ctrl+F搜索下“->s(”,看谁调用了s这个方法。搜索后定位到了 gy()方法。返回值是布尔型。

      【爱加密】防止签名破解步骤阅读

    6. 6

      该方法 491行 查询了当前apk的签名,并保存在了v0寄存器里

      【爱加密】防止签名破解步骤阅读

    7. 7

      500 行,获取了保存的官方签名,并保存在了v1寄存器里

      【爱加密】防止签名破解步骤阅读

    8. 8

      579行,判断v0和v1是否相等。返回值保存在了v0寄存器里

      583行,返回了v0

      【爱加密】防止签名破解步骤阅读

    9. 9

      通过分析我们发现这个gy()方法,就是判断签名的地方。我们只需要修改下让该方法返回真,就能突破签名保护。

      在581行,强制返回值v0为真

      【爱加密】防止签名破解步骤阅读

    10. 10

      保存,重新编译运行。程序可以正常打开了。

      END

  • 相关阅读:
    uva 12034 Race
    计算机基础之计算机硬件软件数据结构
    Project Perfect让Swift在server端跑起来-Perfect in Visual Studio Code (四)
    关于自己定义转场动画,我都告诉你。
    Shell编程入门
    CODEVS 1029 遍历问题
    【VBA研究】工作表自己主动筛选模式检測
    卸载MySQL 5.0
    操作系统(二)进程控制
    前端面试题
  • 原文地址:https://www.cnblogs.com/cute/p/4146968.html
Copyright © 2011-2022 走看看