首页
社区
课程
招聘
[原创]也是我09年的第1个CrackMe,呵呵
发表于: 2009-1-11 14:45 15645

[原创]也是我09年的第1个CrackMe,呵呵

2009-1-11 14:45
15645
收藏
免费 0
支持
分享
最新回复 (44)
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
26
这之前,我没有猜出最后的几位解码的注册码.
所以只用了前16位注册码.(由于只用了16位密码,所以下面补上的代码也不会被破坏掉^_^)
然后在004016E8处直接补上的代码
  PUSH 0             ;/
  PUSH 40A36C        ;|  "注册成功"               
  PUSH 40A378        ;|  "注册码成功,恭喜你,哈!"
  PUSH 0             ;|  
  CALL DS:[4090FC]   ;\  USER32.MessageBoxA
  JMP 401726

算是爆破的.
2009-1-13 17:45
0
雪    币: 137
活跃值: (430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
弱弱的问句...密钥怎么算出来的?
2009-1-13 21:07
0
雪    币: 137
活跃值: (430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
User:Hello
SN:8B1A112966994C35-GUO
2009-1-13 21:12
0
雪    币: 224
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
29
复杂的算法 在知道代码的情况下 还是可以分析出来的啦
退一步说 就算是不分析算法 不管具体的处理过程
有程序在就可以 黑盒 暴力穷举

知道算法或有有程序  暴力就是个时间问题  所以现在加密算法都把密钥搞的好长
128位 256位 512位 .................. 算法都比较复杂
现在一些像md5 3DES之类 算法都是公开的
这种情况下就是考验计算机的时候了
这也就是 超级计算机 诞生的原因之一   解密

所以现在的加密算法设计上都要 在当今条件的计算能力上  提高几个数量级  才能达到安全的一个标准
破解的时间 >  被加密信息的价值时效
就认为加密是安全的

以上都是个人的看法  呵呵
2009-1-14 00:56
0
雪    币: 1596
活跃值: (25)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
30
我发现第一次点的时候提示正确,第二次就提示错误,第三次又提示正确代码看下面:
是不是在提示正确后没有清理内存,在第二次点击的时候没有能正确定入内存??
---------------------------------------------------------------------------------------

当前16位正确后会跳到这里,来解密第二部分代码
0040166B   > /8B95 F8FEFFFF MOV EDX,DWORD PTR SS:[EBP-108]
00401671   . |8B85 F8FEFFFF MOV EAX,DWORD PTR SS:[EBP-108]
00401677   . |83E8 01       SUB EAX,1                                         ;  +1
0040167A   . |8985 F8FEFFFF MOV DWORD PTR SS:[EBP-108],EAX
00401680   . |85D2          TEST EDX,EDX
00401682   . |74 47         JE SHORT CrackMe_.004016CB
00401684   . |8B4D DC       MOV ECX,DWORD PTR SS:[EBP-24]
00401687   . |0FB611        MOVZX EDX,BYTE PTR DS:[ECX]
0040168A   . |8B85 24FEFFFF MOV EAX,DWORD PTR SS:[EBP-1DC]
00401690   . |0FBE88 A8C740>MOVSX ECX,BYTE PTR DS:[EAX+40C7A8]
00401697   . |33D1          XOR EDX,ECX
00401699   . |8B45 DC       MOV EAX,DWORD PTR SS:[EBP-24]
0040169C   . |8810          MOV BYTE PTR DS:[EAX],DL
0040169E   . |8B4D DC       MOV ECX,DWORD PTR SS:[EBP-24]
004016A1   . |83C1 01       ADD ECX,1
004016A4   . |894D DC       MOV DWORD PTR SS:[EBP-24],ECX
004016A7   . |8B95 24FEFFFF MOV EDX,DWORD PTR SS:[EBP-1DC]
004016AD   . |83C2 01       ADD EDX,1
004016B0   . |8995 24FEFFFF MOV DWORD PTR SS:[EBP-1DC],EDX
004016B6   . |83BD 24FEFFFF>CMP DWORD PTR SS:[EBP-1DC],14
004016BD   . |7C 0A         JL SHORT CrackMe_.004016C9
004016BF   . |C785 24FEFFFF>MOV DWORD PTR SS:[EBP-1DC],10
004016C9   >^\EB A0         JMP SHORT CrackMe_.0040166B

----------------------------------------------------------------------------------
第二部分代码为以下:
004016E8      0FBE0D B9C740>MOVSX ECX,BYTE PTR DS:[40C7B9]
004016EF      83F9 47       CMP ECX,47
004016F2      74 02         JE SHORT CrackMe_.004016F6
004016F4      EB 30         JMP SHORT CrackMe_.00401726
004016F6      0FBE15 BAC740>MOVSX EDX,BYTE PTR DS:[40C7BA]
004016FD      83FA 55       CMP EDX,55
00401700      74 02         JE SHORT CrackMe_.00401704
00401702      EB 22         JMP SHORT CrackMe_.00401726
00401704      0FBE05 BBC740>MOVSX EAX,BYTE PTR DS:[40C7BB]
0040170B      83F8 4F       CMP EAX,4F
0040170E      74 02         JE SHORT CrackMe_.00401712
00401710      EB 14         JMP SHORT CrackMe_.00401726
00401712      6A 00         PUSH 0
00401714      68 6CA34000   PUSH CrackMe_.0040A36C
00401719      68 78A34000   PUSH CrackMe_.0040A378
0040171E      6A 00         PUSH 0
00401720      FF15 FC904000 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>;  USER32.MessageBoxA
附件为我的修改的,把加密代码改成了无加密代码,HEHE.
上传的附件:
2009-1-15 18:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
恩,同意


那块使用异或啊,所以 程序运行-》乱码-》输入KEY与乱码异或-》可运行代码-》再点一次-》再异或变成乱码-》再点一次-》可运行……


谢谢分享,鼓励一下。

    其实这是我研究的第一个CrackMe,感觉IAWEN很厉害啊,令我学到不少。感谢saga的分析,不然我还在云里雾里。但我感觉这好像不是楼主期望大家研究的重点,前面那段序列号计算才是。但是我是心有余而力不足啊,那段代码太长了,看起来好像有规律,可是我没分析出来。要做KeyGen应该不难吧,直接将代码copy出来就好了  ,但那实在是体力活了。
   呼唤楼主为我们解答疑难!


我很渴望学习一下,期望楼主不吝赐教。
2009-1-16 12:40
0
雪    币: 1596
活跃值: (25)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
32
大家写注册机都用什么语言写,我用VB和C#都不好用!
且这种从一个字串中离散取字的方法真的很头疼!
---------------------------------------------------------
对这个CM算法的理解:(也不知道对不对)
应该是先把0123456789ABCDEFFEDCBA9876543210放入内存

从这个CALL算出一个32位的字串
004017E6   .  E8 35010000   CALL CrackMe_.00401920

再从字串中离散取字组成正确的注册码(对比法),正确后解密一段代码,如注册码最后为3位"GUO"则到成功的MessageBoxA
2009-1-16 14:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
0040132C   MOV EAX,DWORD PTR SS:[EBP-240]
00401332     ADD EAX,1
00401335  MOV DWORD PTR SS:[EBP-240],EAX
0040133B  CMP DWORD PTR SS:[EBP-240],10
00401342  JGE SHORT CrackMe_.00401371
00401344   MOV ECX,DWORD PTR SS:[EBP-240]
0040134A  MOVZX EDX,BYTE PTR SS:[EBP+ECX-100]
00401352   PUSH EDX                                   
00401353  PUSH CrackMe_.0040A364                     
00401358   MOV EAX,DWORD PTR SS:[EBP-240]             找到这里了,
0040135E  LEA ECX,DWORD PTR SS:[EBP+EAX*2-1D8]      
00401365   PUSH ECX                                   
00401366  CALL DWORD PTR DS:[<&USER32.wsprintfA>]     
0040136C   ADD ESP,0C
0040136F   JMP SHORT CrackMe_.0040132C
00401371   MOV BYTE PTR SS:[EBP-25],0

这段没能看懂,希望解读下
2009-1-17 10:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
貌似楼主用的是单向散列算法,竟然是MD5。今天翻书看到的,参考《加密与解密》第三版第六章“加密算法”。哎,我太浅薄了 ,多学习才是啊。
2009-1-17 15:21
0
雪    币: 239
活跃值: (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
35
分析
http://bbs.pediy.com/showthread.php?t=80648

2009-1-18 09:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
呵呵,就喜欢这样的 crackme,
想起小学时做的 puzzle
第一次发帖,多指点
simonzack
397FF2B04017E180-GUO
这样的能评上1-9中拿一个难度???
2009-1-21 22:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
keygen:
<div id="code">
004016E8 . 22F9 AND BH,CL
004016EA . 58 POP EAX ; 0012FAE4
004016EB . F6EA0755 DD 5507EAF6
004016EF CC INT3
004016F0 D4 DB D4
004016F1 00 DB 00
004016F2 21 DB 21 ; CHAR '!'
004016F3 4D DB 4D ; CHAR 'M'
004016F4 C6 DB C6
004016F5 77 DB 77 ; CHAR 'w'
004016F6 5A DB 5A ; CHAR 'Z'
004016F7 F1 DB F1
004016F8 38 DB 38 ; CHAR '8'
004016F9 . FD920F2D DD 2D0F92FD
004016FD C4 DB C4
004016FE AF DB AF
004016FF 1A DB 1A
00401700 59 DB 59 ; CHAR 'Y'
00401701 45 DB 45 ; CHAR 'E'
00401702 BE DB BE
00401703 6D DB 6D ; CHAR 'm'
00401704 22 DB 22 ; CHAR '"'
00401705 F9 DB F9
00401706 50 DB 50 ; CHAR 'P'
00401707 . F4EA0755 DD 5507EAF4
0040170B CC INT3
0040170C D5 DB D5
0040170D 08 DB 08
0040170E 21 DB 21 ; CHAR '!'
0040170F 4D DB 4D ; CHAR 'M'
00401710 C6 DB C6
00401711 53 DB 53 ; CHAR 'S'
00401712 3F DB 3F ; CHAR '?'
00401713 4F DB 4F ; CHAR 'O'
00401714 45 DB 45 ; CHAR 'E'
00401715 . 2BF60F2D DD 2D0FF62B
00401719 2F DB 2F ; CHAR '/'
0040171A . 2DEC6D47 DD 476DEC2D
0040171E 3F DB 3F ; CHAR '?'
0040171F 4F DB 4F ; CHAR 'O'
00401720 D2 DB D2
00401721 52 DB 52 ; CHAR 'R'
00401722 . A9DF6D47 DD 476DDFA9
</div>

<script>
function strToBase(str,base){
var alphabet='0123456789abcdefghijklmnopqrstuvwxyz';
var ret=0;
str=str.toLowerCase();
for(var i=0;i<str.length;i++){
ret*=base;
ret+=alphabet.indexOf(str.substr(i,1));
}
return ret;
}

function checkValidChar(chr){
return (chr>=0x20 && chr<=0x7E);
}

var i,j;
var key="1234";

var code=document.getElementById('code').innerHTML;
var codeData=[];
code=code.replace(/>/g,' ').replace(/</g,' ').replace(/&/g,' ');
codeData=code.match(/(^|\n).{15}([0-9A-F]+?\s[0-9A-F]*?)\s/gi);
var codeBinary=[];
for(i=0;i<codeData.length;i++){
codeData=codeData.substr(15).replace(/\s/g,'');
for(j=0;j<codeData.length;j+=2){
codeBinary.push(strToBase(codeData.substr(j,2),16));
}
}

/*for(i=0,j=0;i<codeBinary.length;i++,j++){
if(j==key.length) j=0;
codeBinary^=String.charCodeAt(key.charAt(j));
}*/

for(i=0;i<codeBinary.length;i++){
if(checkValidChar(codeBinary^0x6A) && checkValidChar(codeBinary[i+1]) &&
checkValidChar(codeBinary[i+2]^0x68) && checkValidChar(codeBinary[i+3]^0x6C) &&
checkValidChar(codeBinary[i+4]^0xA3) && checkValidChar(codeBinary[i+5]^0x40)){
alert(i);
alert(codeBinary^0x6A);
alert(codeBinary[i+1]);
alert(codeBinary[i+2]^0x68);
alert(codeBinary[i+3]^0x6C);
alert(codeBinary[i+4]^0xA3);
alert(codeBinary[i+5]^0x40);
}
}

/***************************\
found: i=42
i%4=2
key: 85,79,45,71
0x2D,0x47,0x55,0x4F:
-GUO
\***************************/

</script>
2009-1-21 22:31
0
雪    币: 158
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
38
yangxiqin
EE0755673300D19C2D2A947D7500177A
输入注册码为什么异常,"内存xxx不能写....."郁闷..
2009-1-22 12:52
0
雪    币: 233
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
39
把各回复看一下,你就有答案了
2009-1-22 15:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
下载了哦,去破破看
2009-1-24 11:25
0
雪    币: 158
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
41
胡乱写了一下,不知能否运行..

keygen.rar
上传的附件:
2009-1-24 12:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
破掉了,就样可以吗。
上传的附件:
2009-1-24 16:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
0040B530  00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 62     ..............ab
0040B540  63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72     cdefghijklmnopqr
0040B550  73 74 75 76 77 78 79 7A 00 00 00 00 00 00 41 42     stuvwxyz......AB
0040B560  43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52     EFGHIJKLMNOPQR
0040B570  53 54 55 56 57 58 59 5A 00                                        STUVWXYZ.
2009-1-24 17:36
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
44
楼主 能不能把源码发一个?
2009-1-25 21:21
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
45
如果可以的话 我想见识一下你的源码  细节决定成败嘛
2009-1-25 21:33
0
游客
登录 | 注册 方可回帖
返回
//