WebZIP 3.71.508 (5千字)

看雪資料發表於2000-06-24

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。

相關文章