能力值:
( LV13,RANK:1760 )
51 楼
有西班牙文和蹩脚的英文版的... China 老大哥上次已经上传过了
原作者是西班牙人
http://bbs.pediy.com/showthread.php?t=184557
能力值:
( LV2,RANK:10 )
52 楼
楼主大好人
能力值:
( LV2,RANK:10 )
53 楼
写了个ruby脚本获取crackme 的序列号
#!/usr/bin/env ruby
print "input your name:"
name = gets.chomp
s=0;name.each_byte {|c| if c > 'A'.ord && c < 'Z'.ord then s+=c; else s+=c-0x20; end}
p "name:#{name}"
p "serial number: #{s^0x1234^0x5678}"
能力值:
( LV13,RANK:1760 )
54 楼
...,挺好
能力值:
( LV2,RANK:10 )
55 楼
嘿嘿,我同样写了生成splish注册码程序,向楼主的奉献精神致敬!
http://bbs.pediy.com/showthread.php?t=187565&page=3#40
能力值:
( LV2,RANK:10 )
56 楼
第十六章的练习mexcrk1序列号应该是唯一的吧,总觉得不止一个,看了半天,发现好象只有一个.
厄,我是没看十七章之前发的..
能力值:
( LV2,RANK:10 )
57 楼
楼主辛苦了,谢谢,收藏
能力值:
( LV2,RANK:10 )
58 楼
楼主楼主我爱你,就像老鼠爱大米
能力值:
( LV13,RANK:1760 )
59 楼
...
能力值:
( LV2,RANK:10 )
60 楼
谢谢楼主的翻译。
能力值:
( LV2,RANK:10 )
61 楼
谢谢楼主...
能力值:
( LV2,RANK:10 )
62 楼
翻译的很快,楼主辛苦了。
能力值:
( LV2,RANK:10 )
63 楼
支持楼主,继续加油。
能力值:
( LV2,RANK:10 )
64 楼
第十七章生成Canasta注册码脚本,分析这个对于我这样的小菜还是有点绕的:)
#!/usr/bin/env ruby
#注意:
#并没有针对所有注册分支进行处理,so just try another License name if it doesn't work
#from instruction at 0x4b3dd8
magic=[
0x000000D9, 0x00000063, 0x00000058, 0x00000022, 0x0000003E, 0x00000093, 0x000000F0, 0x00000008, 0x00000034, 0x00000062,
0x0000001B, 0x000000BF, 0x000000D7, 0x000000B9, 0x0000006F, 0x0000004A, 0x0000005A, 0x000000B2, 0x00000084, 0x00000024
]
s=i=0
print "input License name:"
name=gets.chomp!
while(s%10**6<10**5)
i=0
name.each_byte{|c|
s+=c*(i+1)*magic[i];i+=1
}
end
printf "License name: #{name} \nLicense key: #{s}\n"
运行起来
./Canasta.rb
input License name:jiych
License name: jiych
License key: 121440
能力值:
( LV13,RANK:1760 )
65 楼
Good job...
能力值:
( LV2,RANK:10 )
66 楼
thx,楼主辛苦了。
能力值:
( LV2,RANK:10 )
67 楼
F7按到手抽筋,delphi程序封装太厉害,算法本身很简单,改天把追踪过程总结下
#include <stdio.h>
#include <string.h>
/***********
by jiych
1.字符和所在位置异或,并求和a;
2.取最后一个字符异或的结果,循环左移0xC位,得结果b;
3.将a和b相加后的数转变为10进制数。
注意:
并没有针对所有注册分支进行处理,so just try another License name if it doesn't work
***********/
int main(void)
{
char name[65];
printf("input name:");
name[0] = 0;
scanf("%64s", name);
int len = strlen(name);
int i;
int a, b, ba;
a=b=ba=0;
for(i=0;i<len;i++){
ba = name[i]^(i+1);
a += ba;
}
b = ba>>(32-0xC) | ba<<0xC;
a += b;
printf("Nombre:%s\n", name);
printf("Codigo:%d\n", a);
return 0;
}
执行,
./a.out
input name:jiych
Nombre:jiych
Codigo:447012
能力值:
( LV13,RANK:1760 )
68 楼
很用心,赞
能力值:
( LV2,RANK:10 )
69 楼
紧随安大步伐
能力值:
( LV13,RANK:1760 )
70 楼
,你怎么嘛还没转正? 还差3kx?
能力值:
( LV2,RANK:10 )
71 楼
是呀,好惭愧,10年注册的
还好不是太在意,而且也快了
能力值:
( LV13,RANK:1760 )
72 楼
恩,快了...
能力值:
( LV2,RANK:10 )
73 楼
用ruby脚本写的,代码如下:
#!/usr/bin/env ruby
#
=begin
第十八章CRACKME2.exe破解 by jiych
1.将输入的字符串进行如下处理:
1.1 大写字符或小于'A'的字符保持不变;
1.2 大于字符'Z'的,减去0x20
2.将1中处理后的每个字节和'Messing_in_bytes'字符串异或;
3.将2中异或后的字节依次和0x402150处的字节进行比较,若全部相等则检查通过
0x402150:
0x1F, 0x2C, 0x37, 0x36, 0x3B, 0x3D, 0x28, 0x19, 0x3D, 0x26,
0x1A, 0x31, 0x2D, 0x3B, 0x37, 0x3E
注意, CRACKME2.exe程序中有bug:
只要输入一个字符,则都可以通过检查;
输入超过一个字符时,则只要整个输入字符串(n个字符)的前n-1个字符可以通过,整个就可以通过检查。
=end
magic = [0x1F, 0x2C, 0x37, 0x36, 0x3B, 0x3D, 0x28, 0x19, 0x3D, 0x26,
0x1A, 0x31, 0x2D, 0x3B, 0x37, 0x3E]
bytes = "Messing_in_bytes"
print "input number of password you wanto generata[1-16]:"
len = (gets.chomp!).to_i
key = ''
magic.each_with_index{|m,ind|
rd = Integer(rand*100)%2
tmp = (m^bytes[ind].ord).chr
if tmp >= 'A' && tmp <= 'Z'
key += ((m^bytes[ind].ord)+rd*0x20).chr
else
key += tmp
end
if key.length >= len
break
end
}
printf "password: #{key}\n"
运行:
./cm_crackme2.rb
input number of password you wanto generata[1-16]:13
password: RiDerSOftHeST
能力值:
( LV13,RANK:1760 )
74 楼
有点nice呀,又是ruby,又是python,又是C
能力值:
( LV3,RANK:20 )
75 楼
紧跟大神脚步,,(虽然还有很远)