首页
社区
课程
招聘
简单的Crackme,高手莫入
发表于: 2004-12-22 20:26 7563

简单的Crackme,高手莫入

2004-12-22 20:26
7563
收藏
免费 7
支持
分享
最新回复 (5)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
我看到了密钥是pediy

想投机取巧用pediy 12个0来注册不过好像发生了字符串转int的错误
等待高手解决
2004-12-23 10:25
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
3
这个 crackme 很像有 bug,当 crackme 在处理最后一次 (共 6 次) 循环时,指计指向缓冲以外的地方,导致 string to chr 的呼叫出错

to shoooo : 我也是这样想,以pediy 作为名字,所有 xor 的结果是 0,开头的两个位值也是0,所以比较后必定与 ‘pediy’ 相等  :D

这个 crackme 的算法限制序号是 12 位长度,把序号的第 1 , 2 位字符转换为数值,假设序号为 123456789012
变量 Y  = 12 (0xc)
密轮是 pediy,依次序检查序号的第 3, 6, 9, 12 个位 :
变量 S = ‘p’ xor 3 + 变量 Y
把名字的位  S 比较

if ‘r’ == 变量 S then
Next-loop
End if
2004-12-23 15:18
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
这个CrackMe算法有问题,当注册算法循环到第六次之后,取注册码的指针过大,指向一个空指针而出现读取异常,这样这个CrackMe即使输入正确的注册码也是没办法注册成功的,只有爆破。要想注册成功建议将循环次数减少一次(原注册算法是循环6次)或将注册码的长度从0x0C放大一些。
2004-12-23 15:47
0
雪    币: 222
活跃值: (145)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
procedure TForm1.Button1Click(Sender: TObject);
var
key:array[1..5] of integer;
s,stmp:string;
i,tmp:integer;
b:boolean;
begin
key[1]:=$70;
key[2]:=$65;
key[3]:=$64;
key[4]:=$69;
key[5]:=$79;
b:=length(sn.text)=12;
if b then
begin
  s:=copy(sn.text,1,2);
   for i:=1 to 5 do
    begin
     stmp:=copy(sn.text,i*2+1,i*2+2);
     tmp:=strtoint(stmp[i]) xor key[i];
     tmp:=tmp+strtoint(s);
      if ord(name.text[i])<>tmp then
       break;
    end;{for}
    b:=i=5;
    if b then
    awf.Visible:=b;
  end;{if}
end;

厉害哟
2004-12-25 20:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我也正想知道,谢谢前面高人指点了
2004-12-26 18:05
0
游客
登录 | 注册 方可回帖
返回
//