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。