Subject: [HC] leapftp 2.3a
Date: Sun, 22 Mar 1998 17:04:44 GMT
From: 张亿仁 <IMan@ms1.palmary.net.tw>
To: post@hc.ml.org

又来灌水啦,炒炒冷饭.......

<一> 摘要
software  : leapftp 2.3
home page : http://www.leapware.com/leapftp
file name : lftp23u.exe
reg_name  : yupie
s/n       : 214065-591433290

<二> 缘起
前几天才解出来2.2版就有人说2.3版出来了,顺手抓下来瞧瞧并没没有什麽改变,原先的注
册码还是可以用,上次只是把注册码解出来就算了,这次就仔细把它的编码研究了一下.倒
是程式的介面有些改进,工具列的图示做的很精致,还是彩色的,只是如果光看图示恐怕猜
不出它的作用吧?

<叁> 执行情形
(1)
载入soft-ice後执行leapftp,进入程式後选择register,在user name填入yupie,S/N填入
填入1234567890,Ctrl-d进入soft-ice後下bpx hmemcpy指令,按F5重回到注册画面,按下确
定soft-ice,马上进入soft-ice.

(2)
bd *,按F12共13次出现错误画面.

(3)
重覆1-2,这次按F12共12次,再来用F10去追.

(4)

0137:004690E5  LEA     EDX,[EBP-08]
0137:004690E8  MOV     EAX,[EBX+000001DC]
0137:004690EE  CALL    00421AE0
0137:004690F3  MOV     EDX,[EBP-08]
0137:004690F6  MOV     EAX,EBX
0137:004690F8  POP     ECX
0137:004690F9  CALL    004691D0            ;这里跳跃就出现失败讯息
0137:004690FE  TEST    AL,AL
0137:00469100  JZ      00469164

同样在在0137:469100处改变旗标使其不做跳跃,结果出现注册成功的讯息,重新回到注册
画面注册,用F8切入004690F9.

0137:004691D0  PUSH    EBP
0137:004691D1  MOV     EBP,ESP
0137:004691D3  ADD     ESP,-38
0137:004691D6  PUSH    EBX
0137:004691D7  PUSH    ESI
0137:004691D8  XOR     EBX,EBX
0137:004691DA  MOV     [EBP-38],EBX
0137:004691DD  MOV     [EBP-14],EBX
0137:004691E0  MOV     [EBP-08],ECX        ;reg_no放入@(EBP-08)
0137:004691E3  MOV     [EBP-04],EDX        ;reg_name放入@(EBP-04)
0137:004691E6  MOV     EAX,[EBP-04]
0137:004691E9  CALL    00403E24            ;可能是算注册码的地方
0137:004691EE  MOV     EAX,[EBP-08]        ;@(EBP-08)=214065
0137:004691F1  CALL    00403E24
0137:004691F6  MOV     EAX,[EBP+08]
0137:004691F9  CALL    00403E24
0137:004691FE  XOR     EAX,EAX
0137:00469200  PUSH    EBP
0137:00469201  PUSH    0046935A
0137:00469206  PUSH    DWORD PTR FS:[EAX]
0137:00469209  MOV     FS:[EAX],ESP
0137:0046920C  XOR     EAX,EAX
0137:0046920E  MOV     [EBP-0E],EAX
0137:00469211  MOV     [EBP-0A],AX
0137:00469215  MOV     EAX,[EBP-04]
0137:00469218  CALL    00403C70
0137:0046921D  MOV     ESI,EAX
0137:0046921F  TEST    ESI,ESI
0137:00469221  JLE     00469260
0137:00469223  MOV     EBX,00000001
0137:00469228  LEA     EAX,[EBP-0E]               ;这里就是计算注册码
0137:0046922B  CALL    00405580                   ;的地方,在追下去之前
0137:00469230  MOV     EAX,[EBP-04]               ;可以在softice里下"
0137:00469233  MOVZX   EAX,BYTE PTR [EBX+EAX-01]  ;wf"指令,观察80X87
0137:00469238  IMUL    EBX                        ;里的暂存器数值,跳出
0137:0046923A  MOV     EDX,EAX                    ;这个回圈时,请先记住
0137:0046923C  SHL     EAX,04                     ;st(0)里数值
0137:0046923F  SUB     EAX,EDX                    ;
0137:00469241  MOV     [EBP-18],EAX               ;
0137:00469244  FILD    DWORD PTR [EBP-18]         ;
0137:00469247  FADDP   ST(1),ST                   ;
0137:00469249  LEA     EAX,[EBX*4+EBX]            ;
0137:0046924C  MOV     [EBP-1C],EAX               ;
0137:0046924F  FILD    DWORD PTR [EBP-1C]         ;
0137:00469252  FADDP   ST(1),ST                   ;
0137:00469254  LEA     EAX,[EBP-0E]               ;
0137:00469257  CALL    004055B0                   ;
0137:0046925C  INC     EBX                        ;
0137:0046925D  DEC     ESI                        ;
0137:0046925E  JNZ     00469228                   ;
0137:00469260  MOV     EAX,[EBP+08]               ;
0137:00469263  CALL    004073DC
0137:00469268  MOV     [EBP-18],EAX
0137:0046926B  FILD    DWORD PTR [EBP-18]
0137:0046926E  FSTP    REAL10 PTR [EBP-28]
0137:00469271  WAIT
0137:00469272  LEA     EAX,[EBP-0E]
0137:00469275  CALL    00405580
0137:0046927A  FSTP    REAL10 PTR [EBP-34]        ;上面求出的数字放入
0137:0046927D  WAIT                               ;st(0)
0137:0046927E  LEA     EAX,[EBP-0E]
0137:00469281  CALL    00405580
0137:00469286  FLD     REAL10 PTR [EBP-34]        ;上面求出的数字在这
0137:00469289  FMULP   ST(1),ST                   ;里平方,加上214065就
0137:0046928B  FLD     REAL10 PTR [EBP-28]        ;是注册码
0137:0046928E  FADDP   ST(1),ST                   ;
0137:00469290  LEA     EAX,[EBP-0E]
.....
0137:004692C3  MOV     EDX,00000001
0137:004692C8  MOV     EAX,[EBP-08]
0137:004692CB  CALL    00403E74
0137:004692D0  MOV     EAX,[EBP-38]
0137:004692D3  MOV     EDX,[EBP+08]
0137:004692D6  CALL    00403D80
0137:004692DB  JNZ     00469325
.....
0137:00469325  XOR     EBX,EBX
0137:00469327  XOR     EAX,EAX
0137:00469329  POP     EDX
0137:0046932A  POP     ECX
0137:0046932B  POP     ECX
0137:0046932C  MOV     FS:[EAX],EDX
0137:0046932F  PUSH    00469361
0137:00469334  LEA     EAX,[EBP-38]
0137:00469337  CALL    004039F4
0137:0046933C  LEA     EAX,[EBP-14]               ;@(EBP-14)=591433290
0137:0046933F  CALL    004039F4

(5)

回到注册画面用yupie/214065-591433290完成注册.

<四> 结论

注册码的计算方式如下:

先将你的reg_name转换成ascii code,例如以crack为例.
c=99, r=114, a=97, c=99, k=107

1. c = ( 99*1*16- 99*1)+ 5 = 1490
2. r = (114*2*16-114*2)+10 = 3430
3. a = ( 97*3*16- 97*3)+15 = 4380
4. c = ( 99*4*16- 99*4)+20 = 5960
5. k = (107*5*16-107*5)+25 = 8050
------------------------------------
                            23310
                      x     23310
------------------------------------
                        543356100
                      +    214065
------------------------------------
                 214065-543570165

一时心血来潮用qbasic写了个注册机,程式也不大编译完竟然有8K!所以就没附上来,
有兴趣的人私下留信给我,嗯,我要想想怎麽会这麽大......

P.S. 感谢Ethan Liu传授编译*.bas的方法.另外有人在追PMMalil98吗?我只找到注册
码的正确形式,比对点还没找到.

--
如欲取消订阅, 请 mailto:req@hc.ml.org , 内文写上 unsubscribe hc 即可, 谢谢.