首页
社区
课程
招聘
[下载]我的第4个Java CrackMe -> KeyFile Gen 希望大家踊跃点
发表于: 2006-12-7 09:59 7476

[下载]我的第4个Java CrackMe -> KeyFile Gen 希望大家踊跃点

2006-12-7 09:59
7476

看雪论坛上的Java的CrackMe非常少,因此我在这里上传一个,在crackmes.de中已经有了破解了


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
打包个EXE的吧
2006-12-8 17:57
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
看惯X86,反而不想看高级语言代码了。。
2006-12-8 20:47
0
雪    币: 152
活跃值: (588)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
java 到底有没有类似于OD的调试器可以直接调试jar文件??
我快找疯了
2011-6-28 19:54
0
雪    币: 1436
活跃值: (3901)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
jd-gui和rej无法打开,不知道咋破解
2011-7-1 14:06
0
雪    币: 257
活跃值: (105)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
喜欢JAVA的人少,我来吧。
先反编译Loader.class,写出解密函数,解密加密了的类。
package com.vhly.crackmes.cm4;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

public class decrypt {
        public static void main(String[] args) {
                String s1 = "c:/KeyFile.class";
                try{
                InputStream inputstream = new BufferedInputStream(new FileInputStream(s1));
                BufferedInputStream bufferedinputstream = new BufferedInputStream(inputstream);
                ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(1024);
                for(int i = 0; (i = bufferedinputstream.read()) != -1;)
                {
                    i ^= 0xa8;
                    i ^= 0x63;
                    bytearrayoutputstream.write(i);
                }
       
                byte abyte0[] = bytearrayoutputstream.toByteArray();
                inputstream.close();
                FileOutputStream fout = new FileOutputStream(s1);
                        fout.write(abyte0);
                        fout.close();
                }catch(Exception e){
                        e.printStackTrace();
                }
       

        }

}
解密加密了的class,分析Main.class的actionPerformed方法和KeyFile.class的isVal方法就可以写出keygen.
package com.vhly.crackmes.cm4;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.security.MessageDigest;
import java.util.zip.CRC32;

import sun.misc.BASE64Encoder;

public class KeyGen {

        public static void main(String[] args){
                if(args.length != 1)
                        return;
                String magic = "vhly[FR]'s CrackMe #4 KeyFile";
        String name = args[0];
        String serial = "";
        long crcvalue = 0L;
        
               
                try
        {
                        StringBuffer stringbuffer = new StringBuffer();
                        stringbuffer.append("aAF#@QRAJSEFjkaos0dvjkl;asefQ$@#%@Q$T%Jmoa0pl_)(*&(^*%^%$");
                stringbuffer.append("  ");
                stringbuffer.append(name);
                stringbuffer.append("    asdfjkl;asdfQ#$TSHSDFHGSdfgjkopasdu90zxcv");
                StringBuffer stringbuffer1 = stringbuffer.reverse();
                String s = stringbuffer1.toString();
                
            MessageDigest messagedigest = MessageDigest.getInstance("SHA-1");
            messagedigest.update(s.getBytes());
            byte abyte0[] = messagedigest.digest();
            messagedigest = null;
            BASE64Encoder base64encoder = new BASE64Encoder();
            String s1 = base64encoder.encodeBuffer(abyte0);
            serial = s1;
            
            CRC32 crc32 = new CRC32();
            crc32.update(magic.getBytes());
            crc32.update(name.getBytes());
            crc32.update(serial.getBytes());
            crcvalue = crc32.getValue();
            
            KeyFile kf = new KeyFile();
            kf.setCRC(crcvalue);
            kf.setName(name);
            kf.setSerial(serial);
            
            FileOutputStream fos = new FileOutputStream("c:/key.reg");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(kf);
            fos.close();
            oos.close();
        }catch(Exception e){
                e.printStackTrace();
        }
        
        

        }

}

运行需要KeyFile.class
package com.vhly.crackmes.cm4;

import java.io.Serializable;
import java.security.MessageDigest;
import java.util.zip.CRC32;
import sun.misc.BASE64Encoder;

public class KeyFile implements Serializable
{

    public KeyFile()
    {
        magic = "vhly[FR]'s CrackMe #4 KeyFile";
        name = "vhly[FR]";
        serial = "null";
        crcvalue = 0L;
    }

    public final String getName()
    {
        return name;
    }

    public final void setName(String s)
    {
        name = s;
    }

    public final void setSerial(String s)
    {
        serial = s;
    }

    public final void setCRC(long l)
    {
        crcvalue = l;
    }

    public final boolean isVal()
    {
        CRC32 crc32 = new CRC32();
        crc32.update(magic.getBytes());
        crc32.update(name.getBytes());
        crc32.update(serial.getBytes());
        long l = crc32.getValue();
        crc32 = null;
        if(l != crcvalue)
            return false;
        StringBuffer stringbuffer = new StringBuffer();
        stringbuffer.append("aAF#@QRAJSEFjkaos0dvjkl;asefQ$@#%@Q$T%Jmoa0pl_)(*&(^*%^%$");
        stringbuffer.append("  ");
        stringbuffer.append(name);
        stringbuffer.append("    asdfjkl;asdfQ#$TSHSDFHGSdfgjkopasdu90zxcv");
        StringBuffer stringbuffer1 = stringbuffer.reverse();
        stringbuffer = null;
        String s = stringbuffer1.toString();
        stringbuffer1 = null;
        try
        {
            MessageDigest messagedigest = MessageDigest.getInstance("SHA-1");
            messagedigest.update(s.getBytes());
            byte abyte0[] = messagedigest.digest();
            messagedigest = null;
            BASE64Encoder base64encoder = new BASE64Encoder();
            String s1 = base64encoder.encodeBuffer(abyte0);
            base64encoder = null;
            if(s1.equals(serial))
                return true;
        }
        catch(Exception exception)
        {
            return false;
        }
        return false;
    }

    private String magic;
    private String name;
    private String serial;
    private long crcvalue;
}
2011-7-1 18:05
0
雪    币: 257
活跃值: (105)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
2006-12-07, 09:59:20
居然才发现06年的东西
2011-7-1 19:12
0
游客
登录 | 注册 方可回帖
返回
//