能力值:
( LV9,RANK:180 )
|
-
-
2 楼
这样不知几分?
SN:= (((Key mod 1725747523)*31)+710526211227) ^ 672543512909
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
 算法我莫有弄得太难呀,咋这半天莫有人弄出算法呢.应该是很简单的呀...
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这样写,还是写不出注册机来.不信你试试.
因为strtoint64 转换之后有修正的地方 就是edx值比较的地方.
在试试看:
暂时给你91分
好象就要成功了加油,但还差最关键的步骤
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
额~还米摸索明白~
|
能力值:
( LV9,RANK:180 )
|
-
-
6 楼
MyKey = 6826596698965
6826596698965 mod 1725747523 = 1265245500
* 31 = 39222610500
+ 710526211227 = 749748821727
^672543512909 = 214852470674
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
98分
如果用strtoint64,然后在由int64如何能转换成最后的字符串类型的结果,那就得一百分了.
在加油.
|
能力值:
( LV9,RANK:180 )
|
-
-
8 楼
不懂
123456
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
regCode.Text:=IntToStr(((StrToInt64(trim(MacCode.Text)) mod $66DCD143)*$0000001F+$6EA9949B) xor $96B7994D);
这是按上面的注册算法计算后的结果是这样的: 00450E32 8D55F8 lea edx, [ebp-$08]
* Reference to: SysUtils.Trim(AnsiString):AnsiString;overload;
|
00450E35 E89673FBFF call 004081D0
00450E3A 8B45F8 mov eax, [ebp-$08]
* Reference to: SysUtils.StrToInt64(AnsiString):Int64;
|
00450E3D E83E76FBFF call 00408480
* Reference to: System.@_llmod;
|
00450E42 E87141FBFF call 00404FB8
* Reference to: System.@_llmul;
| or: System.@_llmulo;
|
00450E47 E84841FBFF call 00404F94
00450E4C 059B94A96E add eax, +$6EA9949B
00450E51 83D200 adc edx, +$00 ;看这按算法反成这样地了
00450E54 81F04D99B796 xor eax, $96B7994D
00450E5A 81F200000000 xor edx, $00000000;看这按算法反成这样地了
00450E60 52 push edx
00450E61 50 push eax
00450E62 8D45FC lea eax, [ebp-$04] 而crackme中是这样的:
adc edx, +$0A5
xor edx, $9C 所以,注册写还是写不了,不知道是为什么最后转换成字符串的时候为什么会变呢.
咋变成这样地了呢: adc edx, +$00
xor edx, $00000000
按这样生成的注册码,去注册肯定是注册不了的.
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
regCode.Text:=inttostr((6826596698965 mod 1725747523*31+710526211227) xor 672543512909)
sessiondiy
得100分
|
能力值:
( LV9,RANK:180 )
|
-
-
11 楼
我还是不懂你的问题在那里
对了. 忘了问... 我在2楼 ' 6楼写的是同样的东西, 为何相差7分?
我俩看的是同一个 CM 吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
这个CM是我写的:
我写完了之后我想写个注册机,刚开始的时候我是这样写的:
regCode.Text:=IntToStr(((StrToInt64(trim(MacCode.Text)) mod $66DCD143)*$0000001F+$6EA9949B) xor $96B7994D);
这样写,我郁闷了一天,也莫有弄明白为啥计算出来的结果,就是不对呢.
用sessiondiy 的算法,这样写一下竟然好用了,太奇怪了:
regCode.Text:=inttostr((strtoint64(macCode.text) mod 1725747523*31+710526211227) xor 672543512909);
sessiondiy 对不起,是我没看明白,本应该你第一个发的就是正确的.是我没看明白.
|
能力值:
( LV9,RANK:180 )
|
-
-
13 楼
我想我明白了.
你想将这算法写成注册机, 结果你发现Compiler没正确处理 64bit 的 int
所以你一直算不出正确值, 对不对?
|
能力值:
( LV9,RANK:180 )
|
-
-
14 楼
被你快了一步发帖.
我真会猜...哈
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
是的,谢谢sessiondiy 你真是高手佩服
sessiondiy 2 楼发的答案是正确的
给 100分
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
0086C526 05 9B94A96E add eax,6EA9949B
0086C52B 81D2 A5000000 adc edx,0A5
0086C531 81F0 4D99B796 xor eax,96B7994D
0086C537 81F2 9C000000 xor edx,9C
终于明白了,原来int64需要需要两个寄存器才能装得下。
|
能力值:
( LV15,RANK:2473 )
|
-
-
17 楼
100分没什么用
吃个鸭蛋比较实惠,虽然比不上猪蹄
|
能力值:
(RANK:300 )
|
-
-
18 楼
sessiondiy
不是高手....他是翻译官,是crackme的翻译官....嘿嘿.
二进制的脑袋里面就想是黑盒,什么crackme往里一丢.完事。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
楼上的错了,你楼上的才是crackme的翻译官+算法天才
当然,sessiondiy 的技术我一向都很佩服
|
能力值:
( LV9,RANK:180 )
|
-
-
20 楼
天生不喜欢吃肥肉
二颗水煮蛋清淡一点
|
能力值:
( LV9,RANK:180 )
|
-
-
21 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
都是人才哪。。。
|
能力值:
( LV13,RANK:420 )
|
-
-
23 楼
传说中的.....高级人脑翻译官
|
能力值:
( LV7,RANK:110 )
|
-
-
24 楼
各位高人能不能分析一下
|
能力值:
( LV7,RANK:110 )
|
-
-
25 楼
|
|
|