能力值:
( LV9,RANK:330 )
|
-
-
2 楼
这次什么花样?看看
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
|
能力值:
( LV9,RANK:330 )
|
-
-
4 楼
写一个注册机吧!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
最初由 laoqian 发布 写一个注册机吧!
啊,注册机是怎样写的啊,我没学过编程啊
|
能力值:
( LV9,RANK:330 )
|
-
-
6 楼
好,等你学会写注册机,我发起邀请你加入FCG――这就是奖品吧!呵呵
|
能力值:
( LV12,RANK:370 )
|
-
-
7 楼
重新改进了一下,当时没有考虑极端情况。小剑的逻辑不错啊,适合于找漏洞。干侦破比较合适,呵呵
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
我写出来laoqian也邀请我加入行不?
|
能力值:
( LV9,RANK:330 )
|
-
-
9 楼
可以,估计很难的,这个crackme写注册机,一般人写不出来,写穷举的注册机也可以!
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
给几个:
923 2526 101
922 2551 102
921 2576 103
。。。
|
能力值:
( LV9,RANK:330 )
|
-
-
11 楼
注册机作的,还是试算的,还是穷举的?
|
能力值:
( LV9,RANK:330 )
|
-
-
12 楼
12345 ,25905777,1036231
12345 ,1073433202,1073729479
可以做注册机了,呵呵
x,序列号
y,注册码
A,随机常数,可以是整数,(实数,也可以?不过编程处理麻烦一些,)不过此处为=2,3,4....整数!
X=25Y+A
Y=2^[A*10]-用户名
其中根据用户名,计算得,Y必须大于100,而确定A值,而且仅仅是大于
可以看出一个用户名,如果不限定可有无数解!
忽然发现,A=3时候不对,晕倒了!以后有时间再看!
|
能力值:
( LV4,RANK:50 )
|
-
-
13 楼
当然是注册机了
|
能力值:
( LV9,RANK:1130 )
|
-
-
14 楼
学习中~。这个东西好玩
0040150E . 83FE 64 cmp esi, 64 ; 输入的东西一定要大于64(100)
00401511 . 0F8C 9B000000 jl 004015B2
00401517 . 83FF 64 cmp edi, 64
0040151A . 0F8C 92000000 jl 004015B2
00401520 . 83F8 64 cmp eax, 64
00401523 . 0F8C 89000000 jl 004015B2
00401529 . 8D04B6 lea eax, [esi+esi*4] ; 注册码*5
0040152C . 8D0480 lea eax, [eax+eax*4] ; 然后再*5
0040152F . 2BF8 sub edi, eax ; 序列号-上面的结果
00401531 . 8D04BF lea eax, [edi+edi*4] ; 结果*5 放到eax
00401534 . D1E0 shl eax, 1 ; 左移1位
00401536 . 83F8 10 cmp eax, 10 ; 和10(16)比较
00401539 . 894424 14 mov [esp+14], eax ; 存储
0040153D 7C 73 jl short 004015B2 ; 结果如果小于10,跳到下面
0040153F DD05 10254000 fld qword ptr [402510] ; 2
00401545 . DB4424 14 fild dword ptr [esp+14] ; 上面的结果
00401549 . E8 A8030000 call <jmp.&MSVCRT._CIpow>
0040154E . DA6424 18 fisub dword ptr [esp+18] ; 用户名
00401552 . E8 99030000 call <jmp.&MSVCRT._ftol>
00401557 . 8BC8 mov ecx, eax
00401559 . 99 cdq
0040155A . F7FE idiv esi ; 除以 注册码
0040155C . 2BCE sub ecx, esi
0040155E . 83F8 01 cmp eax, 1
00401561 . 75 3C jnz short 0040159F ; 关键
谁能告诉下这两个Call的 功能???
call <jmp.&MSVCRT._CIpow>
call <jmp.&MSVCRT._ftol>
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
最初由 laoqian 发布 X=25Y+A Y=2^[A*10]-用户名
当初我怎么都推不出Y=2^[A*10]-用户名
请问你是怎么得到的?教一下方法。
|
能力值:
( LV9,RANK:330 )
|
-
-
16 楼
忽然发现,A=3时候不对,晕倒了!以后有时间再看
明白了,为什么!!!
因为ecx只能存储8字节,高位就另存,当ecx*5大于2^32时候,就去掉高位,只留下后面8位(16进制),就是只保留余数!然后再*5,在同理。
这样A=3即能计算出序列号,3.4.5.6....以此类推!
准备写写总结!
这个crackme有点意思
如果加上hash函数,再把算法复杂一些,这个注册机制就很难逆向!
根据用户名,算法,确定A值,就可以唯一注册码了!
|
|
|