• 标 题:WebZIP 3.71.508 (5千字)
  • 作 者:dr0
  • 时 间:2000-6-24 16:08:01
  • 链 接:http://bbs.pediy.com

http://www.spidersoft.com

这个软件用如下的指令段判断注册码。经过几次试探发现该函数返回0xC8
则显示“Tnank you for registering WebZip!”。

0167:004E7402  MOV      EDX,[EBP-08]
0167:004E7405  MOV      EAX,EBX
0167:004E7407  CALL      004E75A4        //这里头判断注册码
0167:004E740C  SUB      EAX,000000C8    //返回C8表示注册码正确
0167:004E7411  JZ        004E741B
0167:004E7413  DEC      EAX              //返回C9则错误
0167:004E7414  JZ        004E743E
0167:004E7416  DEC      EAX              //返回CA则错误
0167:004E7417  JZ        004E744B
0167:004E7419  JMP      004E745D        //返回其它值

跟进上面的那个CALL,看见函数体如下:

0167:004E75A4  PUSH      EBP
0167:004E75A5  MOV      EBP,ESP
0167:004E75A7  ADD      ESP,-10
0167:004E75AA  PUSH      EBX
0167:004E75AB  PUSH      ESI
0167:004E75AC  PUSH      EDI
0167:004E75AD  XOR      ECX,ECX
0167:004E75AF  MOV      [EBP-08],ECX
0167:004E75B2  MOV      [EBP-04],ECX
0167:004E75B5  MOV      EDI,EDX
0167:004E75B7  MOV      EBX,EAX
0167:004E75B9  XOR      EAX,EAX
0167:004E75BB  PUSH      EBP
0167:004E75BC  PUSH      004E76E9
0167:004E75C1  PUSH      DWORD PTR FS:[EAX]
0167:004E75C4  MOV      FS:[EAX],ESP
0167:004E75C7  LEA      EAX,[EBP-04]
0167:004E75CA  PUSH      EAX
0167:004E75CB  MOV      EAX,EDI
0167:004E75CD  CALL      0040407C
0167:004E75D2  MOV      EDX,EAX
0167:004E75D4  DEC      EDX
0167:004E75D5  MOV      ECX,00000002
0167:004E75DA  MOV      EAX,EDI
0167:004E75DC  CALL      00404284
0167:004E75E1  MOV      EAX,[EBP-04]  //你输入的注册码的后两个字符
0167:004E75E4  MOV      EDX,004E7704  // "1Y"
0167:004E75E9  CALL      0040418C      //比较
0167:004E75EE  JNZ      004E75F7      //若最后两位是1Y
0167:004E75F0  MOV      ESI,0000016D  //则为错误的注册码
0167:004E75F5  JMP      004E7632
0167:004E75F7  XOR      EAX,EAX
0167:004E75F9  PUSH      EBP
0167:004E75FA  PUSH      004E7619
0167:004E75FF  PUSH      DWORD PTR FS:[EAX]
0167:004E7602  MOV      FS:[EAX],ESP
0167:004E7605  MOV      EAX,[EBP-04]  //注册码的后两位
0167:004E7608  CALL      0040977C      //转换成整数
0167:004E760D  MOV      ESI,EAX        //保存在esi中
0167:004E760F  XOR      EAX,EAX
0167:004E7611  POP      EDX
0167:004E7612  POP      ECX
0167:004E7613  POP      ECX
0167:004E7614  MOV      FS:[EAX],EDX
0167:004E7617  JMP      004E7632
0167:004E7619  JMP      0040355C
0167:004E761E  MOV      EBX,000000C9
0167:004E7623  CALL      004038B8
0167:004E7628  JMP      004E76CE
0167:004E762D  CALL      004038B8
0167:004E7632  TEST      ESI,ESI      //后两位为00吗?
0167:004E7634  JNZ      004E7661    //不为00则错误
0167:004E7636  LEA      EAX,[EBP-04]
0167:004E7639  PUSH      EAX
0167:004E763A  MOV      EDX,[EBX+6C]
0167:004E763D  MOV      EAX,[EBX+34]
0167:004E7640  MOV      ECX,ESI
0167:004E7642  CALL      004E5298
0167:004E7647  MOV      EAX,[EBP-04]  //正确的注册码
0167:004E764A  MOV      EDX,EDI      //你输入的假注册码
0167:004E764C  CALL      0040418C      //比较注册码
0167:004E7651  JNZ      004E765A
0167:004E7653  MOV      EBX,000000C8  //返回C8表示OK
0167:004E7658  JMP      004E76CE
0167:004E765A  MOV      EBX,000000C9  //返回C9则错误
0167:004E765F  JMP      004E76CE
0167:004E7661  LEA      EAX,[EBP-04]
0167:004E7664  PUSH      EAX
0167:004E7665  MOV      EDX,[EBX+6C]
0167:004E7668  MOV      EAX,[EBX+34]
0167:004E766B  MOV      ECX,ESI
0167:004E766D  CALL      004E5298
0167:004E7672  MOV      EAX,[EBP-04]
0167:004E7675  MOV      EDX,EDI
0167:004E7677  CALL      0040418C
0167:004E767C  JNZ      004E76C9
0167:004E767E  INC      DWORD PTR [EBX+44]
0167:004E7681  LEA      EDX,[EBP-08]
0167:004E7684  MOV      EAX,EBX
0167:004E7686  CALL      004E8660
0167:004E768B  MOV      EDX,[EBP-08]
0167:004E768E  LEA      EAX,[EBX+34]
0167:004E7691  CALL      00403E50
0167:004E7696  XOR      EAX,EAX
0167:004E7698  MOV      [EBX+3C],EAX
0167:004E769B  CALL      0040AD24
0167:004E76A0  CALL      00402BAC
0167:004E76A5  SUB      EAX,01
0167:004E76A8  SBB      EDX,00
0167:004E76AB  MOV      [EBP-10],EAX
0167:004E76AE  MOV      [EBP-0C],EDX
0167:004E76B1  FILD      QWORD PTR [EBP-10]
0167:004E76B4  FSTP      REAL8 PTR [EBX+48]
0167:004E76B7  WAIT
0167:004E76B8  ADD      [EBX+40],ESI
0167:004E76BB  MOV      EAX,EBX
0167:004E76BD  CALL      004E7B50
0167:004E76C2  MOV      EBX,000000CA  //返回CA也错误
0167:004E76C7  JMP      004E76CE
0167:004E76C9  MOV      EBX,000000C9  //返回C9则错误
0167:004E76CE  XOR      EAX,EAX
0167:004E76D0  POP      EDX
0167:004E76D1  POP      ECX
0167:004E76D2  POP      ECX
0167:004E76D3  MOV      FS:[EAX],EDX
0167:004E76D6  PUSH      004E76F0
0167:004E76DB  LEA      EAX,[EBP-08]
0167:004E76DE  MOV      EDX,00000002
0167:004E76E3  CALL      00403E20
0167:004E76E8  RET
0167:004E76E9  JMP      00403810
0167:004E76EE  JMP      004E76DB
0167:004E76F0  MOV      EAX,EBX    //函数的返回值
0167:004E76F2  POP      EDI
0167:004E76F3  POP      ESI
0167:004E76F4  POP      EBX
0167:004E76F5  MOV      ESP,EBP
0167:004E76F7  POP      EBP
0167:004E76F8  RET

由此得到一个注册码:
User Name:    dr0
Serial No:    China
Reg Key:      AE33536C8300

注册成功的标志是下面的选项可以使用:
菜单View->Options->General Settings->Turn off banner ad insertion。