吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 30568|回复: 56
收起左侧

[Android 原创] Android分析神器Jeb2最新版破解

[复制链接]
Kali-J 发表于 2016-9-18 03:17
本帖最后由 Kali-J 于 2016-9-18 13:05 编辑

参考了F8大神的思路,但是等到真正动手,逆向分析写代码的时候才发现知道怎么做和真正做起来还是蛮大距离的

分析的思路我就不说了……太麻烦了……看代码吧……真的有兴趣的可以留言
和吾爱的朋友们讨论之后发现上传的附件有些问题,打包有错,我会更新附件并上传,朋友们也可以用我贴出来代码编译运行。同时发现因为我们在没有购买full版本的时候只能下到demo版本,这两个版本的代码是不一样的,所以即使激活了也只是一个使用期限很长的demo版本。还是在论坛下载流出的full版本吧,给各位朋友带来困扰了

先贴上代码
Decrypt.java
[Java] 纯文本查看 复制代码
import com.sun.xml.internal.ws.server.AbstractWebServiceContext;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;

public class Decrypt{

    //public static final String str = "Copyright (c) 1993, 2015, Oracle and/or its affiliates. All rights reserved. ";

    public static void main(String[] args) {
        long IP = BX.IP();
        int beforez=(((int)(IP >> 32))) - 28363537 + 1432778632 & 2147483647;
        long beforezint = beforez ;
        beforezint = beforezint << 32;
        beforezint = ((int)(((int)BX.IP())+ 1460952406)) + beforezint;
        int time = ((int)(System.currentTimeMillis() / 1000));
        time = (time + 300000000 - 3456000)^1450416845;
        int check=0;
        for (int i = time;i > 0 ; i >>= 4){
            check += i & 15;
        }
        check = check % 10;
        System.out.print(String.valueOf(beforezint)+"Z"+String.valueOf(time)+String.valueOf(check));
    }

}


BX.java
[Java] 纯文本查看 复制代码
import java.io.*;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
import java.security.MessageDigest;
import java.nio.*;

public final class BX {
private static long[] GS = null;
private static String osName = null;
private static final long LK = 121820464987384338L;
private static String userName;

        static {  // static修饰的代码块为静态代码块,该类被加载时就会执行该代码块
            int v0 = 2;
            osName = System.getProperty(Decode.decode(new byte[]{44, 28, 94, 23, 19, 4, 2}, v0, 129), "");
            userName = System.getProperty(Decode.decode(new byte[]{54, 28, 21, 11, 92, 7, 6, 5, 17}, v0, 73), "Lambda");
            if(!osName.startsWith(Decode.decode(new byte[]{-123, 62, 7, 10, 11, 24, 4}, 1, 210))) {
                v0 = 1;
            }

            GS = new long[v0];
            for(v0 = 0; v0 < GS.length; ++v0) {
                GS[v0] = -1;
            }
        }

    public BX() {
        super();
    }



    private static long IP(int arg7) {
        long result=0;
        int v1;
        int v6 = 3;
        int v5 = 2;
        String v0 = null;

        if(arg7==0){
            v1 = 23;
            try {
                v0 = BX.IP(Decode.decode(new byte[]{52, 2, 25, 26, 82, 10, 20, 24, 6, 79, 76, 22, 74,
                        84, 17, 94, 92, 71, 12, 85, 71, 89, 85}, 2, 65), Decode.decode(new byte[]{40,
                        0, 28, 13}, 1, 125)) + "__" + BX.ry();
            }
            catch(Exception v1_1) {
            }

            if(v0 == null) {
                v0 = Decode.decode(new byte[]{15, 14, 29, 27, 22, 8, 43, 9, 25, 66, 76, 2}, v5, 107) + "__" +
                        BX.userName;
            }


            try {
                MessageDigest v1_2 = MessageDigest.getInstance("MD5");
                v1_2.update(v0.getBytes());
                ByteBuffer v0_2 = ByteBuffer.wrap(v1_2.digest());
                v0_2.order(ByteOrder.LITTLE_ENDIAN);
                result = v0_2.getLong() & 9223372036854775807L;
            }
            catch(NoSuchAlgorithmException v0_1) {
                result = 0;
            }

            return result;
        }

        if(arg7 != 1) {
            if(v0 == null) {
                v0 = Decode.decode(new byte[]{15, 14, 29, 27, 22, 8, 43, 9, 25, 66, 76, 2}, v5, 107) + "__" +
                        BX.userName;
            }

            v1 = 3;
            try {
                MessageDigest v1_2 = MessageDigest.getInstance("MD5");
                v1_2.update(v0.getBytes());
                ByteBuffer v0_2 = ByteBuffer.wrap(v1_2.digest());
                v0_2.order(ByteOrder.LITTLE_ENDIAN);
                result = v0_2.getLong() & 9223372036854775807L;
            }
            catch(NoSuchAlgorithmException v0_1) {
                result = 0;
            }

            return result;
        }

        try {
            v0 = BX.ry();
        }
        catch(Exception v1_1) {
        }

        if(v0 == null) {
            v0 = Decode.decode(new byte[]{15, 14, 29, 27, 22, 8, 43, 9, 25, 66, 76, 2}, v5, 107) + "__" +
                    BX.userName;
        }

        v1 = 3;
        try {
            MessageDigest v1_2 = MessageDigest.getInstance("MD5");
            v1_2.update(v0.getBytes());
            ByteBuffer v0_2 = ByteBuffer.wrap(v1_2.digest());
            v0_2.order(ByteOrder.LITTLE_ENDIAN);
            result = v0_2.getLong() & 9223372036854775807L;
        }
        catch(NoSuchAlgorithmException v0_1) {
            result = 0;
        }

        return result;

    }

    private static String ry() {
        return BX.IP(Decode.decode(new byte[]{11, 26, 4, 10, 67, 66, 11, 6, 28, 83, 71, 2, 17, 84, 83, 22,
                23, 27, 8, 13, 2, 27, 24, 15, 7, 23}, 1, 124), Decode.decode(new byte[]{16, 10, 2, 16, 19,
                5, 41, 29, 25, 66, 77, 17}, 2, 122));
    }

    public static long IP(){
        long v2;
        try {
            if(BX.GS[0] < 0) {
                BX.GS[0] = BX.IP(0);
            }

            v2 = BX.GS[0];
        }
        catch(Throwable v0) {
            throw v0;
        }
        return v2;
    }

    private static String IP(String arg3, String arg4) {
        Process process;
        String v0 = null;
        Runtime runtime = Runtime.getRuntime();
        try {
            process = runtime.exec(arg3.split(" "));
        }
        catch(IOException v1_1) {
            return v0;
        }

        OutputStream v2 = process.getOutputStream();
        InputStream v1_3 = process.getInputStream();
        try {
            v2.close();
        }
        catch(IOException v1_1) {
            return v0;
        }

        Scanner v2_1 = new Scanner(v1_3);
        try {
            do {
                if(v2_1.hasNext()) {
                    if(!arg4.equals(v2_1.next())) {
                        continue;
                    }

                    break;
                }

                v2_1.close();
                return v0;
            }
            while(true);

            v0 = v2_1.next().trim();
        }
        catch(Throwable v0_1) {
            v2_1.close();
            throw v0_1;
        }


        v2_1.close();
        return v0;
    }
}


Decode.java,这个字符串的解密代码是参考了这篇文章的
[Java] 纯文本查看 复制代码
public class Decode {

    public static final String str = "Copyright (c) 1993, 2015, Oracle and/or its affiliates. All rights reserved. ";

    public static String decode(byte[] bytes, int type, int dec) {
        byte[] decBytes = new byte[0];
        int bytesLegth = 0;
        String reslut = "";
        int count = 0;
        try {
            if(type != 0 && bytes.length != 0) {
                if(type == 1) {
                    bytesLegth = bytes.length;
                    decBytes = new byte[bytesLegth];

                    byte byte1 = ((byte)dec);
                    while(count < bytesLegth) {

                        decBytes[count] = ((byte)(byte1 ^ bytes[count]));

                        byte1 = decBytes[count];
                        ++count;
                    }
                    reslut = new String(decBytes, "UTF-8");
                }else if(type == 2) {
                    bytesLegth = bytes.length;
                    decBytes = new byte[bytesLegth];
                    int index = 0;
                    while(count < bytesLegth) {


                        decBytes[count] = ((byte)(bytes[count] ^ (((byte)str.charAt(index)))));
                        index = (index + 1) % str.length();
                        ++count;

                    }
                    reslut = new String(decBytes, "UTF-8");
                }else{
                    throw new RuntimeException();
                }
            }

        }catch(Exception excepion) {

            reslut = new String(decBytes);
        }
        return reslut;
    }
}


附上注册机

注册方法:
1、先在官网注册并下载一个40天试用版,注册的时候要写姓名和邮箱,记好

2、解压缩后运行,出现下图所示
one.PNG

3、去图上所示URL,把许可证数据和注册时所用信息填入,获得一个试用版Key,不用管

4、运行附件中的jar文件,得到一个Key,粘贴入许可证密钥中,点击verify即可。附件比较大,用网盘了http://pan.baidu.com/s/1bNjjyu



之所以要有步骤3,是为了把你的机器信息留在官方数据库中,这样才能更新。


注册成功
two.PNG

更新成功
three.PNG

点评

希望在代码中加些注释  发表于 2016-9-18 14:53

免费评分

参与人数 7威望 +2 热心值 +7 收起 理由
likang + 1 好好好 啪啪啪
qtfreet00 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
40huo + 1 我很赞同!
hanna518 + 1 谢谢@Thanks!
jaffa + 1 谢谢@Thanks!
miracles + 1 谢谢@Thanks!
smile1110 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| Kali-J 发表于 2016-9-18 09:29 来自手机
yaojing 发表于 2016-9-18 09:23
一点反应没有,没有主类。。。。。。。

那就用我贴的代码来编译吧。我看了看,demo版本即使破解了也是有限制的,demo版的代码本来就是不全的。详见http://m.blog.csdn.net/article/details?id=48732735
a6718589 发表于 2016-9-18 09:34
Kali-J 发表于 2016-9-18 09:11
安装程序从官网下载,跟你下载时候用的注册信息有关

就是是bin
corepiugins
doc
scripts
jeb.linux.sh
jeb.macos.sh
jeb.wincon.bat
我该怎么操作
smile1110 发表于 2016-9-18 04:40
不苦小和尚 发表于 2016-9-18 05:57
好厉害,试试看最新版能不能用
lan2602144404 发表于 2016-9-18 07:27
这个是干什么用的呢,谢谢分享
 楼主| Kali-J 发表于 2016-9-18 07:30 来自手机
不苦小和尚 发表于 2016-9-18 05:57
好厉害,试试看最新版能不能用

哈,你试试看,目前的注册机只适用于windows,如果最新版能用了留言回复一下呐
 楼主| Kali-J 发表于 2016-9-18 07:31 来自手机
lan2602144404 发表于 2016-9-18 07:27
这个是干什么用的呢,谢谢分享

一个dex文件代码分析的软件的破解方法
真爱贤 发表于 2016-9-18 07:41
可以,学习学习!!!
yyj85391 发表于 2016-9-18 08:26
运行附件中的JAR包没有任何反应
头像被屏蔽
milove 发表于 2016-9-18 08:28
提示: 作者被禁止或删除 内容自动屏蔽
iKey 发表于 2016-9-18 08:32
这个好强大,但是为什么我jar运行不起 - -,JAVA环境正常。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 19:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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