能力值:
( 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
能力值:
( LV9,RANK:210 )
在线值:
3 楼
以后使用混乱器将生成的jar文件 混乱一下再上传
也别再使EXE4J了 太麻烦
你可以去http://www.crackmes.de去看看我的Java Crackme
祝你好运
能力值:
( LV2,RANK:10 )
4 楼
vhly好样的,分析的不错,学习
exe4j打包的程序运行时会把源程序.jar完整解压到临时目录
能力值:
( LV8,RANK:130 )
在线值:
5 楼
再写一个更强的,把JAVA加密理一下,算法也复杂一些!
能力值:
( LV9,RANK:210 )
在线值:
6 楼
舵手兄,要不是没有权限,我早就上传一个更厉害的了
你又的话就分享一下把
能力值:
( LV9,RANK:210 )
在线值:
7 楼
再来几个
让哥们解解渴
本来我也作了一个就是没有权限不然也送给哥们了
能力值:
( LV8,RANK:130 )
在线值:
8 楼
本来前一段时间也打算写一个,但总感觉算不上强,所以就没敢上传。JAVA单纯的写CRACKME总感觉强度提不上去,个人觉得加密混淆再加上繁多的类文件才能达到较好的效果。
能力值:
( LV4,RANK:50 )
在线值:
9 楼
哈哈 vhly兄厉害的
我没想到你还是把代码提出来了
所以没有混淆
我找到好的方法后再发给你
能力值:
( LV2,RANK:10 )
在线值:
10 楼
java高手越来越多啦
能力值:
( LV2,RANK:10 )
在线值:
11 楼
支持ing....