首页
社区
课程
招聘
[原创]java的crackme谁有兴趣 ps:舵手兄进来试试 :)
发表于: 2006-1-16 20:55 7586

[原创]java的crackme谁有兴趣 ps:舵手兄进来试试 :)

2006-1-16 20:55
7586
收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 328
活跃值: (39)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
斑竹 给我一个全县阿

这个已经被我破解

如下是我的信息

Name   : vhly[FR]
Serial : KQQQ-075613-V0300d5a-1413

同时我要提醒 以后少能那些用EXE4J打包的exe文件上来

上传点 jar文件就可以

注册机也没发上传 要不我发给你们

[email]vhly@163.com[/email]

Author : vhly[FR]
Tools : DJ Java Decompiler, Hedit(用来获取.exe文件中的.jar文件), gen (类文件 用于解密由EXE4J加密的文件内容)

首先:谴责使用EXE4J的行为 使文件无法运行

1. 提取.jar 文件 该CrackMe使用Exe4J打包 分析Exe4J 在添加文件到.exe时 使用0x88将文件内容Xor
   所以自制文件解密类 gen 源代码如下:

import java.io.*;
import java.util.*;

public class gen
{
        public static void main(String args[]) throws IOException
        {
                FileInputStream fin = new FileInputStream(args[0]);  // 可以将整个exe文件解码
                FileOutputStream fout = new FileOutputStream(args[1]);
                BufferedInputStream bin = new BufferedInputStream(fin);
                BufferedOutputStream bout = new BufferedOutputStream(fout);
                int in = 0;
                do{
                        in = bin.read();
                        if(in == -1)
                                break;
                        in^= 0x88;
                        bout.write(in);
                }while(true);
                bin.close();
                fin.close();
                bout.close();
                fout.close();
        }
}

(1) 提取 由于.jar文件的文件头标记为“PK” 所以搜索 找到多处 分别提取 测试是否可用 共找到两个jar文件 一个为 exe4jlib.jar 通用文件 另一个为crackme.jar 提取后重命名为 J_crackme.jar
(2) 解压缩J_crackme.jar 文件 得到的文件为

        myprojects/crack.class 主类
        myprojects/crackme.class 主窗口类
        myprojects/crack$1.class 内部类
        myprojects/crackme_this_windowAdapter.class 窗口适配器
        myprojects/crackme_jButton1_actionAdapter.class 动作适配器
       
2. 使用反编译器 DJ Java 进行反编译

反编译 crackme.class

得到的关键代码为:

    public void jButton1_actionPerformed(ActionEvent actionevent)
    {
        if(!txtEmail.getText().equals(""))
            ck(txtEmail.getText());
    }

    public void ck(String s)
    {
        byte buf[] = s.getBytes();
        StringBuffer sb = new StringBuffer();
        try
        {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            md5.update(buf);
            byte digestData[] = md5.digest();
            boolean flag = false;
            for(int i = 12; i >= 9; i--)
            {
                int l = digestData[i] & 0xff;
                sb.append((char)(l % 25 + 65));
            }

            sb.append("-");
            for(int j = 7; j >= 3; j--)
            {
                int i1 = digestData[j] & 0xff;
                if(j == 5)
                    sb.append(Integer.toHexString(i1 % 16));
                else
                    sb.append(i1 % 10);
            }

            sb.append("3");
            sb.append("-");
            int k = digestData[15] & 0xff;
            sb.append((char)(k % 25 + 65));
            for(int j1 = 14; j1 >= 12; j1--)
            {
                int i2 = digestData[j1] & 0xff;
                sb.append(i2 % 10);
            }

            for(int k1 = 7; k1 >= 4; k1--)
            {
                int j2 = digestData[k1] & 0xff;
                sb.append(Integer.toHexString(j2 % 16));
            }

            sb.append("-");
            for(int l1 = 3; l1 >= 0; l1--)
            {
                int k2 = digestData[l1] & 0xff;
                sb.append(k2 % 10);
            }

/*

对于制作注册机来说 根本不用分析上述的功能 只要找到方法就可以 之后就是生成了

生成方式 :  String rightSerial = sb.toString(); 就这么简单就得到了 正确的序列号

*/

            if(txtSn.getText().equals(sb.toString()))
                JOptionPane.showMessageDialog(null, "Oh,My God!被你破解了,给我来封Email吧,一些事情告诉你 :)", "Java-Crack me v0.1 by:xwk", 1);
            else
                JOptionPane.showMessageDialog(null, "Hi,Boy Try again :)", "Java-Crack me v0.1 by:xwk", 0);
        }
        catch(Exception exception) { }
    }

3. 如下是我的注册信息

Name   : vhly[FR]
Serial : KQQQ-075613-V0300d5a-1413

4. 有更好的CrackMe请联系

[email]vhly@163.com[/email]

2006/01/17
2006-1-17 21:51
0
雪    币: 328
活跃值: (39)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
以后使用混乱器将生成的jar文件 混乱一下再上传

也别再使EXE4J了 太麻烦

你可以去www.crackmes.de去看看我的Java Crackme

祝你好运
2006-1-17 21:56
0
雪    币: 1237
活跃值: (1679)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
vhly好样的,分析的不错,学习

exe4j打包的程序运行时会把源程序.jar完整解压到临时目录
2006-1-19 14:52
0
雪    币: 257
活跃值: (105)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
再写一个更强的,把JAVA加密理一下,算法也复杂一些!
2006-1-20 16:32
0
雪    币: 328
活跃值: (39)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
6
舵手兄,要不是没有权限,我早就上传一个更厉害的了

你又的话就分享一下把
2006-1-21 08:30
0
雪    币: 328
活跃值: (39)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
7
再来几个

让哥们解解渴

本来我也作了一个就是没有权限不然也送给哥们了
2006-1-21 22:08
0
雪    币: 257
活跃值: (105)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
本来前一段时间也打算写一个,但总感觉算不上强,所以就没敢上传。JAVA单纯的写CRACKME总感觉强度提不上去,个人觉得加密混淆再加上繁多的类文件才能达到较好的效果。
2006-1-22 21:51
0
雪    币: 239
活跃值: (190)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
哈哈 vhly兄厉害的
我没想到你还是把代码提出来了
所以没有混淆
我找到好的方法后再发给你
2006-1-26 13:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
java高手越来越多啦
2006-1-26 15:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
支持ing....
2006-2-1 09:36
0
游客
登录 | 注册 方可回帖
返回
//