首页
社区
课程
招聘
支持Java的 和 Java's CrackMe的 看一下
发表于: 2006-1-17 22:01 5237

支持Java的 和 Java's CrackMe的 看一下

2006-1-17 22:01
5237
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 1580
活跃值: (2059)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
两个crackme不都有Solution了

你的代码混淆貌似不起作用。
2006-1-17 22:24
0
雪    币: 328
活跃值: (39)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
不能因为已经有解决方法,就不去研究破解了,那么我们只是去读 solution
就是和看看书,不去实践邮什么两样
2006-1-18 08:12
0
雪    币: 1580
活跃值: (2059)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我的意思是现在的两个Crackme难度不够大,很快就有Solution,用JAD反编译,根本没有你说的代码混淆,虽然提示字符串加密了,但在第一个中没有作用,根据代码都可以猜出来是啥提示。在第二个中
由于加密字串参与运算,作用才体现出来。
----------
第一个:

if(s1.length() <= 3)
            {
                JOptionPane.showMessageDialog(this, I.I(12));//猜测提示用户名长度不能小于3
                return;
            }
            BASE64Encoder base64encoder = new BASE64Encoder();
            String s3 = base64encoder.encode(s1.getBytes());//编码用户名
            byte abyte0[] = s3.getBytes();//Base64编码后的用户名
            byte abyte1[] = s2.getBytes();//输入的序列号
            boolean flag = false;//标志位
            if(abyte0.length != abyte1.length)//输入的序列号的长度如果和用户名Base64编码后的长度不一样,则出错
            {
                JOptionPane.showMessageDialog(this, I.I(47));//猜测:提示序列号错误
                return;
            }
            for(int i = 0; i < abyte0.length; i++)
            {
                flag = abyte0[i] == abyte1[i];//按位比较
                if(!flag)//只要有一位不同就提示出错
                {
                    JOptionPane.showMessageDialog(this, I.I(47));//猜测:提示序列号错误
                    return;
                }
            }

            if(!flag)
            {
                JOptionPane.showMessageDialog(this, I.I(47));//猜测:提示序列号错误
                return;
            } else
            {
                JOptionPane.showMessageDialog(this, I.I(63));//猜测:提示注册成功
                return;
            }

----------------
第二个:

if(s1.length() <= 3)
            {
                //ReCompile,看看都是啥?
                //JOptionPane.showMessageDialog(this, I.I(47));
                //JOptionPane.showMessageDialog(this, I.I(51));
                //
                JOptionPane.showMessageDialog(this, I.I(12));
                return;
            }
            byte abyte0[] = null;
            try
            {
                MessageDigest messagedigest = MessageDigest.getInstance(I.I(47));//对java不太了解,这里是定义编码方式?这里加密字串就起作用了
                messagedigest.update(I.I(51).getBytes());
                messagedigest.update(s1.getBytes());
                abyte0 = messagedigest.digest();
            }
            catch(Exception exception) { }
            CRC32 crc32 = new CRC32();
            crc32.update(abyte0);
            long l = crc32.getValue();
            //添加一句,然后ReCompile,注册码自显示:)
            JOptionPane.showMessageDialog(this,Long.toString(l, 36));
            //
            long l1 = Long.parseLong(s2, 36);
            boolean flag = false;
            if(l / l1 == 1L)
                flag = true;
            else
                flag = false;
            if(!flag)
            {
                JOptionPane.showMessageDialog(this, I.I(60));//出错
                return;
            } else
            {
                JOptionPane.showMessageDialog(this, I.I(76));//成功
                return;
            }

-----------
2006-1-18 09:33
0
游客
登录 | 注册 方可回帖
返回