吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 37146|回复: 151
上一主题 下一主题
收起左侧

[Android 原创] 锁机软件破解

    [复制链接]
跳转到指定楼层
楼主
lemniscate 发表于 2019-5-5 20:57 回帖奖励
样本来源:https://www.52pojie.cn/forum.php ... id%3D191&page=3
部分图片拿自原帖。

先看看锁机界面长什么样子:


根据帖子的apk下载链接,我们下载后打开jadx,找到AndroidManifest 文件:
得知Application名字和首页页面名字:逐个看看:


先看Application,

有点狡猾,Application和首页都是藏起来的
藏在Android目录下,一般这个目录都是Android的文件,弄成自己的想让人找不到。

看了一下好像没干啥,去首页看看去:找到oncreate
看看这个da干了些什么:



总得来说,用base64混淆了一下字符串,让你增加难度,不知道发生了什么,我们自己写代码还原一下:


代码注释在下面的图片中:

做完这些操作后就执行root 和exit,这两个我就不接去出来了。

然后我们去复制这个Android,apk出来
扔进去jadx或者jeb

发现类名被混淆了,点击打开会卡死,估计是利用了一些bug导致反编译工具没有响应。
这个时候我本来要放弃的,没有思路,然后查了一下资料,知识星球里面有一个叫Bin的哥们评论别人,其中一个思路就是先将dex转成jar,利用proguard去将jar混淆成abcd。
dex2jar的使用方法我是参考这个网页:https://blog.csdn.net/katrinawj/article/details/80016315
proguard的使用方法参考这个网页:https://www.liangzl.com/get-article-detail-16955.html
有兴趣的哥们请自行查阅使用,时间紧急,我得写完帖子下班了,饿了。

然后将生成的jar扔进jadx
发现能正常查阅了


好了,我们现在虚拟机跑起来软件,让它锁机,锁机界面如下:


从AndroidManifest得知没有Application类所以我们从Mainactivity看起:
这里有一个ga和startService

点进去ga

看起来查询包名,然后不知道干啥,解密一下

向这个包名发送数据,抓点log,好像无关紧要

我们去com.tyh.app.tyh这个service看看
oncreate走起

重点是这三个,随机生成一个k,然后settext,然后设置监听事件,
点进去监听事件看看,


a是edittext 也是是输入密码的框
ha是判断密码是否正确的地方,我们点进去ha

是一个hex密码转换表加上一些逻辑

我们直接写代码看看

先说明一下,这里得四重校验是我一下字全部写出来得,跟我的代码顺序无关

我们看看四重校验得第一个base64

base64:中奖号码:946805632145
中奖号码:946805632145
base64:中奖号码:5866525853
中奖号码:5866525853
base64:中奖号码:86523587580
中奖号码:86523587580
base64:中奖号码:36850664453
中奖号码:36850664453



和我们得锁机密码是不是很像,对得,还记得我们上面说得k么,这个k就是多出来得最后三位
我们将这个k带入到代码里面,在我这里是871


代码里面还做了截断前五位得操作,所以我们要输入进去得密码就是                                                                                                                                                                                                                                NMCLG


来到第二层

我们看第二层得点击事件代码



总得来说,就是在输入框输入密码,密码截图前3 和剩余部分两部分,前面得进行进行三次md5后和7063eeced8dada899a5231e272d0ba07比较,正确得话用剩余部分和String replaceAll = i.a(new StringBuffer().append(this.a.f).toString()).replaceAll(a.a(new byte[]{(byte) 120, (byte) 101, (byte) 113, (byte) 82, (byte) 42}), "");这段代码的出来得结果比较,吻合就通过。

刚开始看得时候一脸懵逼,想了一会才发现是md5,写代码写啥了。

首先我们先破解前面,三次md5后和7063eeced8dada899a5231e272d0ba07这个写死得值比较,怎么办,百度md5破解吧,老天不负有心人,找到个免费给我结果得,幸好这里得加密没有加盐,不然可能会解不出来,或者解出来要钱。


得知,前三位数是944 固定得。
然后带入这次得锁机最后三位数070到代码里面

得出来是这串
然后我们用944加上这一串输入进去


然后就进入第三层,但是第三层和第二层是一样得,第四层和第一层是一样得,所以只要破解两种算法就行。

写的匆忙,如有疏忽,请指出。另外,如果第二层第三层如果最后三位得密码是0开头就貌似有点问题,要重启一下输入非0。具体没有细测,谢谢大家

以下是测试代码,写得匆忙,仅供参考


public class GameGuardian {
    public static void main(String[] args) {
        byte[] a = new byte[]{(byte) 67, (byte) 77, (byte) 118, (byte) 90, (byte) 108, Message.CMD_CS_FREEZE, (byte) 88, (byte) 72, (byte) 69, (byte) 119, Message.CMD_CS_KEEP_ALIVE, Message.CMD_CS_GET_RESULT_LIST, (byte) 68, (byte) 99, Message.CMD_CS_KEEP_ALIVE, (byte) 84, (byte) 121, (byte) 119, (byte) 76, (byte) 85, (byte) 66, (byte) 104, (byte) 75, (byte) 85, (byte) 69, (byte) 103, Message.CMD_CS_GET_RESULT_LIST, (byte) 83, (byte) 42};
        System.out.println(base64(a));

        byte[] b = new byte[]{(byte) 122, (byte) 116, (byte) 72, (byte) 73, (byte) 110, (byte) 74, (byte) 110, (byte) 73, (byte) 110, (byte) 74, (byte) 68, (byte) 74, (byte) 122, (byte) 100, (byte) 118, (byte) 77, (byte) 110, (byte) 74, (byte) 117, Message.CMD_CS_ALTER, (byte) 110, (byte) 97, Message.CMD_CS_TAKE_SCREENSHOT, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        byte[] c = new byte[]{(byte) 108, Message.CMD_CS_UNFREEZE, (byte) 110, (byte) 75, (byte) 121, Message.CMD_CS_FREEZE, (byte) 102, (byte) 89, (byte) 122, (byte) 99, Message.CMD_CS_KEEP_ALIVE, (byte) 98, (byte) 66, (byte) 77, (byte) 114, (byte) 89, (byte) 66, Message.CMD_CS_FREEZE, (byte) 76, (byte) 75, (byte) 108, Message.CMD_CS_FREEZE, (byte) 114, (byte) 72, (byte) 68, (byte) 103, (byte) 101, (byte) 86, (byte) 69, (byte) 104, (byte) 114, (byte) 84, (byte) 66, (byte) 97, Message.CMD_CS_TAKE_SCREENSHOT, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        byte[] d = new byte[]{(byte) 108, Message.CMD_CS_UNFREEZE, (byte) 110, (byte) 75, (byte) 121, Message.CMD_CS_FREEZE, (byte) 102, (byte) 89, (byte) 122, (byte) 99, Message.CMD_CS_KEEP_ALIVE, (byte) 98, (byte) 66, (byte) 77, (byte) 114, (byte) 89, (byte) 66, Message.CMD_CS_FREEZE, (byte) 76, (byte) 75, (byte) 108, Message.CMD_CS_FREEZE, (byte) 114, (byte) 72, (byte) 68, (byte) 103, (byte) 101, (byte) 86, (byte) 69, (byte) 104, (byte) 114, (byte) 78, (byte) 66, (byte) 119, (byte) 87, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        ;
        System.out.println(base64(b));
        System.out.println(base64(c));
        System.out.println(base64(d));

        byte[] e = new byte[]{(byte) 67, Message.CMD_CS_UNFREEZE, (byte) 117, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        System.out.println(base64(e));

        byte[] f = new byte[]{(byte) 66, (byte) 119, Message.CMD_CS_KEEP_ALIVE, Message.CMD_CS_GET_RESULT_LIST, (byte) 66, (byte) 78, (byte) 113, (byte) 71, (byte) 108, (byte) 119, Message.CMD_CS_CLEAR_LOCK_LIST, (byte) 71, (byte) 67, (byte) 78, (byte) 67, (byte) 83, (byte) 67, (byte) 77, (byte) 118, (byte) 84, (byte) 66, Message.CMD_CS_UNFREEZE, (byte) 118, (byte) 85, (byte) 68, (byte) 99, (byte) 97, (byte) 86, (byte) 67, Message.CMD_CS_UNFREEZE, (byte) 76, (byte) 90, (byte) 68, (byte) 103, (byte) 118, (byte) 84, (byte) 99, (byte) 71, Message.CMD_CS_TAKE_SCREENSHOT, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        System.out.println(base64(f));

        byte[] g1 = new byte[]{(byte) 121, Message.CMD_CS_UNFREEZE, (byte) 97, (byte) 71, (byte) 67, Message.CMD_CS_FREEZE, (byte) 114, (byte) 74, (byte) 121, (byte) 120, (byte) 106, (byte) 75, (byte) 108, Message.CMD_CS_SEARCH_NUMBER, (byte) 102, (byte) 85, (byte) 122, (byte) 104, (byte) 106, (byte) 86, (byte) 65, (byte) 119, (byte) 113, (byte) 86, (byte) 122, (byte) 103, (byte) 102, Message.CMD_CS_SEARCH_NUMBER, (byte) 121, (byte) 115, Message.CMD_CS_KEEP_ALIVE, Message.CMD_CS_RESET_SEARCH, (byte) 68, (byte) 103, (byte) 68, (byte) 84, (byte) 66, (byte) 99, (byte) 97, (byte) 86, (byte) 67, Message.CMD_CS_UNFREEZE, (byte) 76, (byte) 90, (byte) 68, (byte) 103, (byte) 118, (byte) 84, (byte) 108, Message.CMD_CS_FREEZE, (byte) 102, (byte) 87, (byte) 67, (byte) 99, Message.CMD_CS_KEEP_ALIVE, (byte) 98, (byte) 66, (byte) 77, (byte) 114, (byte) 89, (byte) 66, Message.CMD_CS_FREEZE, (byte) 76, (byte) 75, (byte) 108, (byte) 77, (byte) 102, (byte) 87, (byte) 65, (byte) 87, (byte) 79, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        byte[] g2 = new byte[]{(byte) 121, Message.CMD_CS_FREEZE, (byte) 72, (byte) 84, (byte) 66, Message.CMD_CS_FREEZE, (byte) 113, (byte) 71, (byte) 110, (byte) 74, (byte) 113, Message.CMD_CS_SEARCH_NUMBER, (byte) 105, (byte) 99, Message.CMD_CS_KEEP_ALIVE, (byte) 90, (byte) 69, (byte) 120, (byte) 110, Message.CMD_CS_SEARCH_NUMBER, (byte) 122, (byte) 119, Message.CMD_CS_SEARCH_NUMBER, (byte) 86, (byte) 121, (byte) 120, (byte) 98, (byte) 87, (byte) 108, Message.CMD_CS_SEARCH_NUMBER, (byte) 102, (byte) 85, (byte) 122, (byte) 104, (byte) 106, (byte) 86, (byte) 65, (byte) 119, (byte) 113, (byte) 85, (byte) 121, (byte) 120, (byte) 98, (byte) 82, (byte) 99, (byte) 71, Message.CMD_CS_TAKE_SCREENSHOT, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        byte[] g3 = new byte[]{(byte) 121, Message.CMD_CS_UNFREEZE, (byte) 97, (byte) 71, (byte) 67, Message.CMD_CS_FREEZE, (byte) 114, (byte) 74, (byte) 121, (byte) 120, (byte) 106, (byte) 75, (byte) 108, Message.CMD_CS_SEARCH_NUMBER, (byte) 102, (byte) 85, (byte) 122, (byte) 104, (byte) 106, (byte) 86, (byte) 65, (byte) 119, (byte) 113, (byte) 86, (byte) 122, (byte) 103, (byte) 102, Message.CMD_CS_SEARCH_NUMBER, (byte) 121, (byte) 115, Message.CMD_CS_KEEP_ALIVE, Message.CMD_CS_RESET_SEARCH, (byte) 68, (byte) 103, (byte) 68, (byte) 84, (byte) 66, (byte) 99, (byte) 97, (byte) 86, (byte) 67, Message.CMD_CS_UNFREEZE, (byte) 76, (byte) 90, (byte) 68, (byte) 103, (byte) 118, (byte) 84, (byte) 108, Message.CMD_CS_UNFREEZE, (byte) 98, (byte) 89, (byte) 65, (byte) 120, (byte) 121, (byte) 84, (byte) 121, (byte) 120, (byte) 98, (byte) 87, (byte) 108, Message.CMD_CS_SEARCH_NUMBER, (byte) 102, (byte) 85, (byte) 122, (byte) 104, (byte) 106, (byte) 86, (byte) 65, (byte) 119, (byte) 113, (byte) 85, (byte) 121, (byte) 120, (byte) 98, (byte) 82, (byte) 42, (byte) 99, (byte) 71, Message.CMD_CS_TAKE_SCREENSHOT, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        byte[] g4 = new byte[]{(byte) 121, Message.CMD_CS_FREEZE, (byte) 72, (byte) 84, (byte) 66, Message.CMD_CS_FREEZE, (byte) 113, (byte) 71, (byte) 110, (byte) 74, (byte) 113, Message.CMD_CS_SEARCH_NUMBER, (byte) 105, (byte) 99, Message.CMD_CS_KEEP_ALIVE, (byte) 90, (byte) 69, (byte) 120, (byte) 110, Message.CMD_CS_SEARCH_NUMBER, (byte) 122, (byte) 119, Message.CMD_CS_SEARCH_NUMBER, (byte) 86, (byte) 67, (byte) 104, (byte) 106, (byte) 80, (byte) 68, (byte) 73, Message.CMD_CS_GET_RESULT_LIST, (byte) 72, (byte) 67, (byte) 104, (byte) 97, (byte) 86, (byte) 113, (byte) 119, Message.CMD_CS_ALTER, (byte) 75, (byte) 67, (byte) 77, Message.CMD_CS_KEEP_ALIVE, (byte) 80, (byte) 122, (byte) 99, Message.CMD_CS_ALTER, (byte) 72, (byte) 67, (byte) 103, (byte) 83, (byte) 107, (byte) 42};
        System.out.println(base64(g1));
        System.out.println(base64(g2));
        System.out.println(base64(g3));
        System.out.println(base64(g4));

        byte[] h1 = new byte[]{(byte) 67, (byte) 77, (byte) 118, (byte) 73, (byte) 66, Message.CMD_CS_FREEZE, Message.CMD_CS_KEEP_ALIVE, Message.CMD_CS_SEARCH_NUMBER, (byte) 99, (byte) 71, Message.CMD_CS_TAKE_SCREENSHOT, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        byte[] h2 = new byte[]{(byte) 122, (byte) 120, (byte) 72, (byte) 80, (byte) 68, (byte) 97, (byte) 79, Message.CMD_CS_TAKE_SCREENSHOT, (byte) 42};
        System.out.println(base64(h1));
        System.out.println(base64(h2));

        //android.apk
        System.out.println("=============Android.apk==============");
        byte[] i = new byte[]{(byte) 121, (byte) 18, (byte) 25, (byte) 84, (byte) 108, (byte) 77, (byte) 102, (byte) 80, (byte) 122, (byte) 103, (byte) 117, (byte) 85, (byte) 68, (byte) 119, (byte) 75, (byte) 29, (byte) 42};
        System.out.println(base64(i));

        byte[] j = new byte[]{(byte) 116, (byte) 103, (byte) 25, (byte) 78, (byte) 113, (byte) 18, (byte) 102, (byte) 16, (byte) 42};
        System.out.println(base64(j));

        byte[] k = new byte[]{(byte) 66, (byte) 103, (byte) 25, (byte) 78, (byte) 121, (byte) 18, (byte) 102, (byte) 16, (byte) 105, (byte) 99, (byte) 17, (byte) 18, (byte) 105, (byte) 104, (byte) 114, (byte) 79, (byte) 67, (byte) 77, (byte) 118, (byte) 72, (byte) 122, (byte) 104, (byte) 114, (byte) 80, (byte) 66, (byte) 119, (byte) 117, (byte) 29, (byte) 42};
        System.out.println(base64(k));

        byte[] l1 = new byte[]{(byte) 121, (byte) 18, (byte) 25, (byte) 84, (byte) 108, (byte) 77, (byte) 102, (byte) 75, (byte) 67, (byte) 78, (byte) 113, (byte) 85, (byte) 116, (byte) 101, (byte) 25, (byte) 104, (byte) 113, (byte) 16, (byte) 102, (byte) 117, (byte) 120, (byte) 16, (byte) 118, (byte) 111, (byte) 118, (byte) 102, (byte) 106, (byte) 106, (byte) 114, (byte) 118, (byte) 109, (byte) 29, (byte) 42};
        byte[] l2 = new byte[]{(byte) 66, (byte) 103, (byte) 76, (byte) 85, (byte) 122, (byte) 120, (byte) 109, (byte) 29, (byte) 42};
        System.out.println(base64(l1));
        System.out.println(base64(l2));

        byte[] m = new byte[]{(byte) 121, (byte) 18, (byte) 25, (byte) 84, (byte) 108, (byte) 78, (byte) 114, (byte) 21, (byte) 65, (byte) 99, (byte) 21, (byte) 72, (byte) 67, (byte) 104, (byte) 97, (byte) 85, (byte) 68, (byte) 104, (byte) 76, (byte) 79, (byte) 42};
        System.out.println(base64(m));

        byte[] n = new byte[]{(byte) 121, (byte) 18, (byte) 25, (byte) 84, (byte) 108, (byte) 77, (byte) 102, (byte) 80, (byte) 122, (byte) 103, (byte) 117, (byte) 85, (byte) 68, (byte) 119, (byte) 75, (byte) 29, (byte) 42};
        System.out.println(base64(n));

        byte[] o1 = new byte[]{(byte) 21, (byte) 108, (byte) 73, (byte) 84, (byte) 21, (byte) 65, (byte) 119, (byte) 119, (byte) 21, (byte) 121, (byte) 11, (byte) 19, (byte) 21, (byte) 22, (byte) 99, (byte) 98, (byte) 111, (byte) 74, (byte) 75, (byte) 16, (byte) 110, (byte) 74, (byte) 71, (byte) 87, (byte) 110, (byte) 116, (byte) 121, (byte) 90, (byte) 109, (byte) 74, (byte) 101, (byte) 16, (byte) 110, (byte) 113, (byte) 29, (byte) 29, (byte) 42};
        byte[] o2 = new byte[]{(byte) 21, (byte) 108, (byte) 73, (byte) 84, (byte) 21, (byte) 65, (byte) 119, (byte) 119, (byte) 21, (byte) 121, (byte) 11, (byte) 19, (byte) 21, (byte) 22, (byte) 99, (byte) 98, (byte) 111, (byte) 74, (byte) 117, (byte) 20, (byte) 110, (byte) 74, (byte) 121, (byte) 17, (byte) 109, (byte) 74, (byte) 117, (byte) 20, (byte) 110, (byte) 116, (byte) 109, (byte) 29, (byte) 42};
        byte[] o3 = new byte[]{(byte) 21, (byte) 108, (byte) 73, (byte) 84, (byte) 21, (byte) 65, (byte) 119, (byte) 119, (byte) 21, (byte) 121, (byte) 11, (byte) 19, (byte) 21, (byte) 22, (byte) 99, (byte) 98, (byte) 111, (byte) 74, (byte) 71, (byte) 18, (byte) 110, (byte) 116, (byte) 105, (byte) 90, (byte) 110, (byte) 116, (byte) 71, (byte) 19, (byte) 110, (byte) 116, (byte) 71, (byte) 87, (byte) 42};
        byte[] o4 = new byte[]{(byte) 21, (byte) 108, (byte) 73, (byte) 84, (byte) 21, (byte) 65, (byte) 119, (byte) 119, (byte) 21, (byte) 121, (byte) 11, (byte) 19, (byte) 21, (byte) 22, (byte) 99, (byte) 98, (byte) 111, (byte) 74, (byte) 109, (byte) 18, (byte) 111, (byte) 100, (byte) 117, (byte) 87, (byte) 110, (byte) 74, (byte) 121, (byte) 16, (byte) 110, (byte) 100, (byte) 117, (byte) 90, (byte) 42};
        System.out.println(base64(o1));
        System.out.println(base64(o2));
        System.out.println(base64(o3));
        System.out.println(base64(o4));

        int ii = 536;//这里请写自己得k(第一重检验得base64得后三位)
        System.out.println("a:" + a(ii));//SSLNJ 前五位

        //2
//        String base64_2 = base64(new byte[]{(byte) 110, (byte) 90, (byte) 97, (byte) 18, (byte) 109, (byte) 18, (byte) 118, (byte) 76, (byte) 121, (byte) 18, (byte) 118, (byte) 75, (byte) 111, (byte) 103, (byte) 114, (byte) 72, (byte) 122, (byte) 103, (byte) 101, (byte) 20, (byte) 111, (byte) 116, (byte) 76, (byte) 72, (byte) 110, (byte) 116, (byte) 105, (byte) 90, (byte) 109, (byte) 119, (byte) 117, (byte) 89, (byte) 110, (byte) 90, (byte) 106, (byte) 75, (byte) 109, (byte) 103, (byte) 106, (byte) 72, (byte) 109, (byte) 100, (byte) 67, (byte) 29, (byte) 42});
//        System.out.println("base64_2:" + base64_2);
        System.out.println("================================");
        int iiiii = 963;//这里请替换
        String replaceAll = ia(new StringBuffer().append(iiiii).toString()).replaceAll(base64(new byte[]{(byte) 120, (byte) 101, (byte) 113, (byte) 82, (byte) 42}), "");
        System.out.println("2ReplaceAll:" + replaceAll);
        String editable = "944" + replaceAll;
//        if (editable.length() > 3) {
//            String substring = editable.substring(0, 3);
//            editable = editable.substring(3, editable.length());
//            System.out.println("editable:" + editable);
//            System.out.println(ia(ia(ia("944"))));
//            //944
//            String base64 = base64(new byte[]{(byte) 110, (byte) 90, (byte) 97, (byte) 18, (byte) 109, (byte) 18, (byte) 118, (byte) 76, (byte) 121, (byte) 18, (byte) 118, (byte) 75, (byte) 111, (byte) 103, (byte) 114, (byte) 72, (byte) 122, (byte) 103, (byte) 101, (byte) 20, (byte) 111, (byte) 116, (byte) 76, (byte) 72, (byte) 110, (byte) 116, (byte) 105, (byte) 90, (byte) 109, (byte) 119, (byte) 117, (byte) 89, (byte) 110, (byte) 90, (byte) 106, (byte) 75, (byte) 109, (byte) 103, (byte) 106, (byte) 72, (byte) 109, (byte) 100, (byte) 67, (byte) 29, (byte) 42});
//            if (ia(ia(ia("944"))).equals(base64) && editable.equals(replaceAll)) {
//                System.out.println("2:yes");
//            }
//        }
//
//        //3
//        System.out.println("================================");
//        iiiii = 679;//这里请替换
//        replaceAll = ia(new StringBuffer().append(iiiii).toString()).replaceAll(base64(new byte[]{(byte) 120, (byte) 101, (byte) 113, (byte) 82, (byte) 42}), "");
//        System.out.println("2ReplaceAll:" + replaceAll);
//        editable = "944" + replaceAll;
//        if (editable.length() > 3) {
//            String substring = editable.substring(0, 3);
//            editable = editable.substring(3, editable.length());
//            System.out.println("editable:" + editable);
//            System.out.println(ia(ia(ia("944"))));
//            //944
//            String base64 = base64(new byte[]{(byte) 110, (byte) 90, (byte) 97, (byte) 18, (byte) 109, (byte) 18, (byte) 118, (byte) 76, (byte) 121, (byte) 18, (byte) 118, (byte) 75, (byte) 111, (byte) 103, (byte) 114, (byte) 72, (byte) 122, (byte) 103, (byte) 101, (byte) 20, (byte) 111, (byte) 116, (byte) 76, (byte) 72, (byte) 110, (byte) 116, (byte) 105, (byte) 90, (byte) 109, (byte) 119, (byte) 117, (byte) 89, (byte) 110, (byte) 90, (byte) 106, (byte) 75, (byte) 109, (byte) 103, (byte) 106, (byte) 72, (byte) 109, (byte) 100, (byte) 67, (byte) 29, (byte) 42});
//            if (ia(ia(ia("944"))).equals(base64) && editable.equals(replaceAll)) {
//                System.out.println("2:yes");
//            }
//        }
//
//        //4
//        System.out.println("================================");
//        int iiii = 676;
//        System.out.println("a:" + a(iiii));
    }

    public static final String ia(String str) {
        char[] cArr = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
        try {
            byte[] bytes = str.getBytes();
            String al = base64(new byte[]{(byte) 116, (byte) 117, (byte) 113, (byte) 17, (byte) 42});
            System.out.println(al);
            MessageDigest instance = MessageDigest.getInstance(base64(new byte[]{(byte) 116, (byte) 117, (byte) 113, (byte) 17, (byte) 42}));
            instance.update(bytes);
            char[] cArr2 = new char[256];
            int i = 0;
            for (byte b : instance.digest()) {
                int i2 = i + 1;
                cArr2[i] = cArr[(b >>> 4) & 15];
                i = i2 + 1;
                cArr2[i2] = cArr[b & 15];
            }
            System.out.println("ia:" + new String(cArr2));
            return new String(cArr2);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static String a(int i) {
        String replaceAll = hex(String.valueOf(i)).replaceAll(base64(new byte[]{(byte) 107, (byte) 102, (byte) 84, (byte) 72, (byte) 108, (byte) 120, (byte) 80, (byte) 98, (byte) 108, (byte) 118, (byte) 80, (byte) 68, (byte) 70, (byte) 100, (byte) 97, (byte) 80, (byte) 42}), "");
        System.out.println(replaceAll);
        String a = base64(new byte[]{(byte) 109, (byte) 97, (byte) 29, (byte) 29, (byte) 42});
        String a2 = base64(new byte[]{(byte) 109, (byte) 113, (byte) 29, (byte) 29, (byte) 42});
        String a3 = base64(new byte[]{(byte) 109, (byte) 71, (byte) 29, (byte) 29, (byte) 42});
        String a4 = base64(new byte[]{(byte) 109, (byte) 87, (byte) 29, (byte) 29, (byte) 42});
        String a5 = base64(new byte[]{(byte) 110, (byte) 97, (byte) 29, (byte) 29, (byte) 42});
        String a6 = base64(new byte[]{(byte) 110, (byte) 113, (byte) 29, (byte) 29, (byte) 42});
        String a7 = base64(new byte[]{(byte) 110, (byte) 71, (byte) 29, (byte) 29, (byte) 42});
        String a8 = base64(new byte[]{(byte) 110, (byte) 87, (byte) 29, (byte) 29, (byte) 42});
        String a9 = base64(new byte[]{(byte) 111, (byte) 97, (byte) 29, (byte) 29, (byte) 42});
        String a10 = base64(new byte[]{(byte) 111, (byte) 113, (byte) 29, (byte) 29, (byte) 42});
        String a11 = base64(new byte[]{(byte) 117, (byte) 97, (byte) 29, (byte) 29, (byte) 42});
        String a12 = base64(new byte[]{(byte) 115, (byte) 71, (byte) 29, (byte) 29, (byte) 42});
        byte[] bArr = new byte[5];
        String a13 = base64(new byte[]{(byte) 119, (byte) 71, (byte) 29, (byte) 29, (byte) 42});
        byte[] bArr2 = new byte[5];
        String a14 = base64(new byte[]{(byte) 113, (byte) 87, (byte) 29, (byte) 29, (byte) 42});
        byte[] bArr3 = new byte[5];
        String a15 = base64(new byte[]{(byte) 116, (byte) 71, (byte) 29, (byte) 29, (byte) 42});
        byte[] bArr4 = new byte[5];
        String a16 = base64(new byte[]{(byte) 116, (byte) 113, (byte) 29, (byte) 29, (byte) 42});
        byte[] bArr5 = new byte[5];
        String a17 = base64(new byte[]{(byte) 116, (byte) 97, (byte) 29, (byte) 29, (byte) 42});
        byte[] bArr6 = new byte[5];
        String a18 = base64(new byte[]{(byte) 114, (byte) 87, (byte) 29, (byte) 29, (byte) 42});
        byte[] bArr7 = new byte[5];
        String a19 = base64(new byte[]{(byte) 117, (byte) 87, (byte) 29, (byte) 29, (byte) 42});
        byte[] bArr8 = new byte[5];
        String a20 = base64(new byte[]{(byte) 113, (byte) 71, (byte) 29, (byte) 29, (byte) 42});
        for (int i2 = 0; i2 < 10; i2++) {
            replaceAll = replaceAll.replaceAll(new String[]{a, a2, a3, a4, a5, a6, a7, a8, a9, a10}[i2], new String[]{a11, a12, a13, a14, a15, a16, a17, a18, a19, a20}[i2]).toString();
        }
        System.out.println(new StringBuffer(replaceAll).reverse().toString());
        return new StringBuffer(replaceAll).reverse().toString().substring(0, 5);
    }

    public static String base64(byte[] bArr) {
        int length = bArr.length;
        for (int i = 0; i < length; i++) {
            bArr[i] = (byte) (bArr[i] ^ 32);
        }
        try {
            System.out.println("base64:" + new String(Base64.decode(bArr)));
            return new String(Base64.decode(bArr));
        } catch (Base64DecodingException e) {
            e.printStackTrace();
        }
        return null;
    }

    private static final String hex(String str) {
        System.out.println("hex:" + str);
        char[] cArr = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
        try {
            byte[] bytes = str.getBytes();
            MessageDigest instance = MessageDigest.getInstance(base64(new byte[]{(byte) 116, (byte) 117, (byte) 113, (byte) 17, (byte) 42}));
            instance.update(bytes);
            char[] cArr2 = new char[256];
            int i = 0;
            for (byte b : instance.digest()) {
                int i2 = i + 1;
                cArr2[i] = cArr[(b >>> 4) & 15];
                i = i2 + 1;
                cArr2[i2] = cArr[b & 15];
            }
            return new String(cArr2);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

}
         
public class Message {
    public static final byte BOOL_FALSE = (byte) 0;
    public static final byte BOOL_TRUE = (byte) 1;
    public static final byte CMD_CS_ALLOCATE_PAGE = (byte) 10;
    public static final byte CMD_CS_ALTER = (byte) 21;
    public static final byte CMD_CS_APP_LIST = (byte) 35;
    public static final byte CMD_CS_CLEAR_LOCK_LIST = (byte) 24;
    public static final byte CMD_CS_CLEAR_SEARCH = (byte) 22;
    public static final byte CMD_CS_CONFIG = (byte) 32;
    public static final byte CMD_CS_COPY_MEMORY = (byte) 40;
    public static final byte CMD_CS_DISABLE_PROTECTION = (byte) 27;
    public static final byte CMD_CS_DUMP = (byte) 39;
    public static final byte CMD_CS_FREEZE = (byte) 18;
    public static final byte CMD_CS_GET_MEMORY = (byte) 37;
    public static final byte CMD_CS_GET_MEMORY_CONTENT = (byte) 28;
    public static final byte CMD_CS_GET_MEMORY_ITEMS = (byte) 14;
    public static final byte CMD_CS_GET_RESULT_LIST = (byte) 17;
    public static final byte CMD_CS_KEEP_ALIVE = (byte) 25;
    public static final byte CMD_CS_LOAD_RESULTS = (byte) 11;
    public static final byte CMD_CS_MEM = (byte) 36;
    public static final byte CMD_CS_PAUSE_PROCESS = (byte) 31;
    public static final byte CMD_CS_PROCESS_LIST = (byte) 34;
    public static final byte CMD_CS_REGION_LIST = (byte) 38;
    public static final byte CMD_CS_REMOVE_RESULT = (byte) 30;
    public static final byte CMD_CS_RESET_SEARCH = (byte) 20;
    public static final byte CMD_CS_SEARCH_GROUP = (byte) 33;
    public static final byte CMD_CS_SEARCH_MASK = (byte) 41;
    public static final byte CMD_CS_SEARCH_NUMBER = (byte) 16;
    public static final byte CMD_CS_SEARCH_TEXT = (byte) 12;
    public static final byte CMD_CS_SELECT_PROCESS = (byte) 15;
    public static final byte CMD_CS_SET_TEMP_PATH = (byte) 26;
    public static final byte CMD_CS_SH = (byte) 13;
    public static final byte CMD_CS_STOP_SERVICE = (byte) 23;
    public static final byte CMD_CS_TAKE_SCREENSHOT = (byte) 29;
    public static final byte CMD_CS_UNFREEZE = (byte) 19;
    public static final byte CMD_SC_ALLOCATED_PAGE = (byte) 58;
    public static final byte CMD_SC_APP_LIST = (byte) 52;
    public static final byte CMD_SC_GET_MEMORY = (byte) 54;
    public static final byte CMD_SC_MEM = (byte) 53;
    public static final byte CMD_SC_MEMORY_ITEM = (byte) 47;
    public static final byte CMD_SC_MEMORY_ITEMS = (byte) 49;
    public static final byte CMD_SC_PROCESS_LIST = (byte) 51;
    public static final byte CMD_SC_PROGRESS_STATE = (byte) 48;
    public static final byte CMD_SC_REGION_LIST = (byte) 56;
    public static final byte CMD_SC_REPORT_ERROR = (byte) 46;
    public static final byte CMD_SC_RESULTS = (byte) 43;
    public static final byte CMD_SC_REVERT = (byte) 50;
    public static final byte CMD_SC_SEARCH_DONE = (byte) 44;
    public static final byte CMD_SC_SEND_CODE = (byte) 55;
    public static final byte CMD_SC_SH_USAGE = (byte) 57;
    public static final byte CMD_SC_TARGET_DEAD = (byte) 45;
    public static final int CODE_BAD_KERNEL = 20;
    public static final int CODE_CANCEL_DONE = 7;
    public static final int CODE_COPY_ENDED = 5;
    public static final int CODE_COPY_FAILED = 6;
    public static final int CODE_DUMP_ENDED = 3;
    public static final int CODE_DUMP_FAILED = 4;
    public static final int CODE_DUMP_STARTED = 2;
    public static final int CODE_MEM_DEV_CHECK_END = 1;
    public static final int CODE_MEM_DEV_CHECK_START = 0;
    public static final int CODE_NEED_PTRACE = 21;
    public static final int CODE_PATCH_ENDED = 13;
    public static final int CODE_PATCH_FAILED = 14;
    public static final int CODE_PATCH_STARTED = 12;
    public static final int CODE_PAUSED = 8;
    public static final int CODE_RESUMED = 9;
    public static final int CODE_SH_END = 18;
    public static final int CODE_SPEEDHACK_LOADED = 11;
    public static final int CODE_SPEEDHACK_LOADING = 10;
    public static final int CODE_UNRANDOMIZER_LOADED = 16;
    public static final int CODE_UNRANDOMIZER_LOADING = 15;
    public static final int CODE_USED = 19;
    public static final int CODE_WAITPID_FAILED = 17;
    public static final int CONFIG_CALLS_ALTERNATIVE = 2048;
    public static final int CONFIG_DEEP_READ = 65536;
    public static final int CONFIG_HIDE_FROM_GAME_1 = 128;
    public static final int CONFIG_HIDE_FROM_GAME_2 = 256;
    public static final int CONFIG_HIDE_FROM_GAME_3 = 512;
    public static final int CONFIG_HIDE_FROM_GAME_4 = 32768;
    public static final int CONFIG_MEMORY_EXPERIMENTAL = 16;
    public static final int CONFIG_MEMORY_EXTENDED = 8;
    public static final int CONFIG_PREVENT_UNLOAD_HARD = 64;
    public static final int CONFIG_PREVENT_UNLOAD_SOFT = 32;
    public static final int CONFIG_PTRACE_BYPASS_FREEZE = 16384;
    public static final int CONFIG_PTRACE_BYPASS_NOTHING = 8192;
    public static final int CONFIG_PTRACE_BYPASS_OFF = 131072;
    public static final int CONFIG_RESET_ON_EXIT = 2;
    public static final int CONFIG_SELINUX = 4;
    public static final int CONFIG_SKIP_EMPTY_MEMORY = 1;
    public static final int CONFIG_SKIP_ZYGOTE_MEMORY = 1024;
    public static final int CONFIG_WAITPID_ALTERNATIVE = 4096;
    public static final int DONE_CLEAR = 2;
    public static final int DONE_REMOVE = 1;
    public static final int DONE_RESET = 3;
    public static final int DONE_SEARCH = 0;
    public static final int ERROR_BUG = 2;
    public static final int ERROR_DISK_FULL = 3;
    public static final int ERROR_EPERM_ON_ATTACH = 105;
    public static final int ERROR_EPERM_ON_ATTACH_DEFEND = 106;
    public static final int ERROR_FATAL = 100;
    public static final int ERROR_GROUP_FAIL = 108;
    public static final int ERROR_IO = 4;
    public static final int ERROR_MAPS_ALL = 10;
    public static final int ERROR_MAPS_ONE = 9;
    public static final int ERROR_OUT_OF_MEM = 1;
    public static final int ERROR_SPEEDHACK_FAIL = 107;
    public static final int FILTER_ADDRESS_GREATER = 1;
    public static final int FILTER_ADDRESS_LESS = 2;
    public static final int FILTER_FRACTIONAL = 32;
    public static final int FILTER_POINTER = 64;
    public static final int FILTER_TYPE = 16;
    public static final int FILTER_VALUE_GREATER = 4;
    public static final int FILTER_VALUE_LESS = 8;
    public static final int POINTER_EXECUTABLE = 2;
    public static final int POINTER_EXECUTABLE_WRITABLE = 1;
    public static final int POINTER_READABLE = 8;
    public static final int POINTER_UNKNOWN = 4;
    public static final int POINTER_WRITABLE = 16;
    public static final byte PROCESS_KILL = (byte) 2;
    public static final byte PROCESS_PAUSE = (byte) 0;
    public static final byte PROCESS_RESUME = (byte) 1;
    public static final int RAND_COUNT = 12;
    public static final int RD_DOUBLE = 4;
    public static final int RD_QWORD = 2;
    public static final int SH_CONFIG = 32;
    public static final int SH_RD = 1;
    public static final int SH_SET = 16;
    public static final int SH_USAGE = 8;
    public static final int TIMERS_COUNT = 44;
    public static final int TIMERS_TYPES = 4;
}


                                                                                                                                                                                                            

免费评分

参与人数 62威望 +2 吾爱币 +68 热心值 +55 收起 理由
18752016058 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
hhhccy7 + 1 谢谢@Thanks!
carrys17 + 1 + 1 谢谢@Thanks!
185 + 1 + 1 用心讨论,共获提升!
zoroman + 1 + 1 谢谢@Thanks!
水泥杀手 + 1 + 1 用心讨论,共获提升!
达云兮 + 1 热心回复!
广东漂泊的浪子 + 1 + 1 用心讨论,共获提升!
Alienew + 1 用心讨论,共获提升!
Qianhuan + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
多幸运遇见baby + 1 + 1 用心讨论,共获提升!
道冲渊风 + 1 + 1 谢谢@Thanks!
TIS有趣的灵魂 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
1500746056 + 1 + 1 谢谢@Thanks!
z14mian + 1 我很赞同!
khzhao + 1 + 1 鼓励转贴优秀软件安全工具和文档!
GCaptain + 1 + 1 用心讨论,共获提升!
H_Kali + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Trytoz + 1 + 1 热心回复!
小学生一枚 + 1 + 1 热心回复!
SUNPOOLZW + 1 + 1 我很赞同!
石琢 + 1 + 1 我很赞同!
fei8255 + 1 + 1 用心讨论,共获提升!
暗夜协奏者 + 1 + 1 谢谢@Thanks!
linlern + 1 + 1 鼓励转贴优秀软件安全工具和文档!
hhj134 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
魔-沫 + 1 + 1 谢谢@Thanks!
菜鸡想学破解 + 1 我很赞同!
qtfreet00 + 2 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
潋凌努力变优秀 + 1 + 1 热心回复!
tiefeifei + 1 + 1 热心回复!
dadaewqq + 1 + 1 我很赞同!
公孙秒秒 + 2 + 1 膜拜大神
loqiu + 1 用心讨论,共获提升!
Oohuo + 1 + 1 鼓励转贴优秀软件安全工具和文档!
zer.0 + 1 + 1 用心讨论,共获提升!
淡然面对 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
1234567好了哦 + 1 谢谢@Thanks!
3118 + 1 + 1 热心回复!
SJC + 1 鼓励转贴优秀软件安全工具和文档!
pwn2017 + 1 + 1 我很赞同!
qqwww520kk + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ftpc + 1 鼓励转贴优秀软件安全工具和文档!
fb蓝色忧郁 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
wxue + 1 + 1 用心讨论,共获提升!
iBristlecone + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
涛之雨 + 1 + 1 用心讨论,共获提升!
blacktea1 + 1 + 1 厉害
fhy129 + 1 + 1 热心回复!
九宫格 + 1 用心讨论,共获提升!
Host1 + 1 + 1 热心回复!
椎名牧 + 1 + 1 用心讨论,共获提升!
为海尔而战 + 1 + 1 厉害厉害!
笙若 + 1 + 1 谢谢@Thanks!
隰则有泮 + 1 + 1 我很赞同!
Fan.s + 1 鼓励转贴优秀软件安全工具和文档!
独行风云 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
chinalcd + 1 + 1 好厉害!
小Q主人 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
贵族天王星 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
woshinidie + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
王者归来back + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
wpj 发表于 2019-5-5 21:32
反正我是没看懂怎么解锁,希望那些缺德的写锁机程序敲诈的人早日见马克思。
推荐
老郭浪了 发表于 2020-3-23 09:02
头像被屏蔽
沙发
筱闲 发表于 2019-5-5 21:09
3#
GMCN 发表于 2019-5-5 21:09
腻害腻害
4#
quaternion 发表于 2019-5-5 21:10
这个 是真厉害了
5#
lizhipei78 发表于 2019-5-5 21:12
最后也没有说要如何解锁啊
6#
crhst 发表于 2019-5-5 21:15
你就说你是怎么惹上这个的吧?
7#
lkj2711 发表于 2019-5-5 21:19
楼主乃大神,佩服至极
8#
随意点 发表于 2019-5-5 21:20
crhst 发表于 2019-5-5 21:15
你就说你是怎么惹上这个的吧?

1楼第一个链接
9#
吃大米的L 发表于 2019-5-5 21:26
干嘛要解密呢 ,连上电脑, 把app删了不就好了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 12:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表