小骚 发表于 2020-5-21 17:24

简单的签名校验CrackMe

各路大神的签名校验合集
内置7种签名校验方法,5种在java层,2种在so层
都非常简单,不需要ida,不需要调试
1.普通的签名校验(MD5计算)
2.校验Application(检查是否被动态代{过}{滤}理)
3.提早检测(在调用attachBaseContext之前检测签名)
4.检测PM代{过}{滤}理(检查IPackageManager有没有被动态代{过}{滤}理)
5.较新的API检测(用API28以上的新API去获取)
6.普通校验sha1值(so层,不过这个延迟3秒退出程序)
7.普通签名校验(so层)

MT一键去签名校验无法完美通过,过60加固签名校验方法也无法完美通过

总共涉及3个MD5,通用方法生成的,我把工具类放出来,也可以把自己的签名转换md5替换我的,也可以达到过签名校验
成功条件,修改红框文本,并过签名校验,让所有都显示通过
(核心破解以及只改显示字符串不算)
仅简单混淆了一下,再加一个乐固版本
练手之作,大神勿喷


//生成大写的MD5
public static String MD5(String str) {
      char hexDigits[] = {
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
                'e', 'f' };
      try {
            byte[] strTemp = str.getBytes();
            MessageDigest mdTemp = MessageDigest.getInstance("MD5");
            mdTemp.update(strTemp);
            byte tmp[] = mdTemp.digest();
            char strs[] = new char;
            int k = 0;
            for (int i = 0; i < 16; i++) {
                byte byte0 = tmp;
                strs = hexDigits;
                strs = hexDigits;
            }
            return new String(strs).toUpperCase();
      } catch (Exception e) {
            return null;
      }
    }


//生成小写的MD5
public static String MD55(String sourceStr) {
      String result = "";
      try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(sourceStr.getBytes());
            byte b[] = md.digest();
            int i;
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b;
                if (i < 0)
                  i += 256;
                if (i < 16)
                  buf.append("0");
                buf.append(Integer.toHexString(i));
            }
            result = buf.toString();
      } catch (NoSuchAlgorithmException e) {
            System.out.println(e);
      }

      return result;

    }

//其中MyApplication类中的是sign转base64转换过的

public class Base64Util {
    /**
   * 二进制数组 编码成 二进制数组
   * @Param input
   * @return
   */
    public static byte[] encodeToBytes(byte[] input) {
      return Base64.encode(input, Base64.NO_WRAP);
    }

    /**
   * 二进制数组 编码成 字符串
   * @param input
   * @return
   */
    public static String encodeToString(byte[] input) {
      return Base64.encodeToString(input, Base64.NO_WRAP);
    }

    /**
   * 二进制数组 解码成 二进制数组
   * @param input
   * @return
   */
    public static byte[] decode(byte[] input) {
      return Base64.decode(input, Base64.NO_WRAP);
    }

    /**
   * 字符串 解码成 二进制数组
   * @return
   */
    public static byte[] decode(String str) {
      return Base64.decode(str, Base64.NO_WRAP);
    }
}

小骚 发表于 2020-8-5 19:34

大轩轩 发表于 2020-8-5 15:33
都是爆破出来的
修改前



具体看
原地址

大轩轩 发表于 2020-8-5 15:33


都是爆破出来的
修改前

修改后

修改前


改SO文件我直接十六进制 0000,然后 if 就没了{:1_907:},想请教一下这么只去掉不等于 != 这个!


另外请问较新的API检测那个是什么意思,只是改了跳转过了

longge188 发表于 2020-5-21 17:59

用心讨论,共获提升!

图拉柏 发表于 2020-5-21 23:34

感谢大神分享

资料终结者 发表于 2020-5-22 07:48

小程序发送请求的时候加密,然后后台解密,大佬知道吗?这种密文传输

你说我说 发表于 2020-5-22 10:14

太棒了,谢谢分享

Light紫星 发表于 2020-5-22 10:39

厉害厉害,so签名验证难过

yuxinxianzi 发表于 2020-5-23 13:38

我是来学习的。。。

AIfeifei 发表于 2020-5-31 08:04

链接挂了???

小骚 发表于 2020-5-31 08:34

AIfeifei 发表于 2020-5-31 08:04
链接挂了???

没有呀,还是可以下载的

AIfeifei 发表于 2020-5-31 08:37

小骚 发表于 2020-5-31 08:34
没有呀,还是可以下载的

好吧,换个浏览器就可以下载了。。。。
页: [1] 2
查看完整版本: 简单的签名校验CrackMe