用SoftICE跳過註冊碼檢查可以安裝成功,其試用版是用VBOX搞的 (3千字)

看雪資料發表於2001-04-22

JVISION 1.4.2 for Commercial use

http://www.object-insight.com/html/screensunlock.html

這個需要安裝序列號的好象是正式版?裝好之後沒有VBOX。

jvision*.exe

001B:02FFDE77  8B442410            MOV      EAX,[ESP+10]
001B:02FFDE7B  85C0                TEST      EAX,EAX
001B:02FFDE7D  7522                JNZ      02FFDEA1            //NOP this
001B:02FFDE7F  8BC3                MOV      EAX,EBX
001B:02FFDE81  8BCE                MOV      ECX,ESI
001B:02FFDE83  E88C7FCDFE          CALL      01CD5E14            //finishing installation
001B:02FFDE88  8B6C2448            MOV      EBP,[ESP+48]
001B:02FFDE8C  B801000000          MOV      EAX,00000001
001B:02FFDE91  8B7C2444            MOV      EDI,[ESP+44]
001B:02FFDE95  8B742440            MOV      ESI,[ESP+40]
001B:02FFDE99  8B5C243C            MOV      EBX,[ESP+3C]
001B:02FFDE9D  83C44C              ADD      ESP,4C
001B:02FFDEA0  C3                  RET
001B:02FFDEA1  B8D0B5C700          MOV      EAX,00C7B5D0
001B:02FFDEA6  8BCE                MOV      ECX,ESI
001B:02FFDEA8  E893404900          CALL      03491F40
001B:02FFDEAD  8BCE                MOV      ECX,ESI
001B:02FFDEAF  E88891CDFE          CALL      01CD703C              //"serial number incorrect"

安裝程式似是用InstallAnywhere for Java製作的。有個編譯後的安裝指令碼檔案InstallScript.data,但實際上是個*.class檔案,裡面有判斷註冊碼的東西。如下:

        show_Serial_Number_Panel_Enter_Serial_Number = new SetSerialNumber();
        show_Serial_Number_Panel_Enter_Serial_Number.setPrefix(true);
        show_Serial_Number_Panel_Enter_Serial_Number.setMutuallyExclusiveProducts(true);
        show_Serial_Number_Panel_Enter_Serial_Number.setSeedStr("*#&*,&*,!*#!},!*,!}#!*,&*#&");
        show_Serial_Number_Panel_Enter_Serial_Number.setNoOfSerialNumbers(1000L);
        show_Serial_Number_Panel_Enter_Serial_Number.setMatchingProduct("Product");
        show_Serial_Number_Panel_Enter_Serial_Number.setInstallPanelClassName("com.zerog.ia.installer.installpanels.SerialNumberInstallPanel");
        show_Serial_Number_Panel_Enter_Serial_Number.setAllowBlankInput(false);
        show_Serial_Number_Panel_Enter_Serial_Number.setSerialNumberEntered("UserEnteredSerialNumber");
        show_Serial_Number_Panel_Enter_Serial_Number.setPrompt("Please Enter the Serial Number: ");
        show_Serial_Number_Panel_Enter_Serial_Number.setStepTitle("Enter Serial Number");
        show_Serial_Number_Panel_Enter_Serial_Number.setNoOfProductsStr("(|%({e$@+.");
        show_Serial_Number_Panel_Enter_Serial_Number.setStaticStringStr("+`^+:+|(}:+!(})");
        show_Serial_Number_Panel_Enter_Serial_Number.setSuffix(false);
        show_Serial_Number_Panel_Enter_Serial_Number.setAdditionalText("This Installer Requires a Serial Number to Continue");
        show_Serial_Number_Panel_Enter_Serial_Number.setNoOfDigitsStr("(!^(@@*e1.");
        show_Serial_Number_Panel_Enter_Serial_Number.setFileName("jvision142w_SerialNumbers.txt");
        show_Serial_Number_Panel_Enter_Serial_Number.setExternalID("SetSerialNumber.15");
        ProgressMonitor.updateScriptIncrement();
        jVISIO2_preInstallActions.addElement(show_Serial_Number_Panel_Enter_Serial_Number);

再把臨時目錄下的IAclasses.zip解開,找到SetSerialNumber.class、SerialNumberManager.class、SerialNumberInstallPanel.class,真正的註冊碼判斷就在這裡面。有興趣的自己分析吧。真正的程式檔案都在installer.zip中的raw目錄下。

相關文章