冰盾濾鏡註冊演算法分析

看雪資料發表於2015-11-15

整理日期:2003.4.10
最新版本:3.0
檔案大小:175KB
軟體授權:共享軟體
使用平臺:Win9x/Me/NT/2000/XP
釋出公司:Home Page
軟體簡介:
   

使終端使用者可以實現對系統中執行的一切垃圾程式視窗和可疑程式得到全面監控,從而達到杜絕非法視窗、垃圾或廣告視窗以及駭客程式及病毒程式對計算機系統造成的肆意破壞的目的。

註冊申請碼:560338156
註冊認證碼(假碼):654321
一、W32DASM中查詢出錯資訊
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040A72C(C)
|
:0040A74A 6A00                    push 00000000
:0040A74C 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"註冊失敗!"
                                 |
:0040A74E 6874054400              push 00440574

向上看,如下

:0040A725 33C7                    xor eax, edi
:0040A727 83C408                  add esp, 00000008
:0040A72A 3BC1                    cmp eax, ecx
:0040A72C 751C                    jne 0040A74A====>關鍵出錯
:0040A72E 8BCE                    mov ecx, esi
:0040A730 E82B000000              call 0040A760
:0040A735 85C0                    test eax, eax
:0040A737 741F                    je 0040A758
:0040A739 6A00                    push 00000000
:0040A73B 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"註冊成功!"
                                 |
:0040A73D 6880054400              push 00440580
:0040A742 E8212D0200              call 0042D468
:0040A747 5F                      pop edi

二、用ollyDbg載入,前往0040A725地址,如下,動態跟蹤
0040A700   .  56            PUSH ESI
0040A701   .  57            PUSH EDI
0040A702   .  8BF1          MOV ESI,ECX
0040A704   .  6A 01         PUSH 1
0040A706   .  E8 1DDD0100   CALL ProcessC.00428428
0040A70B   .  8B46 5C       MOV EAX,DWORD PTR DS:[ESI+5C]            ;  取註冊申請碼,入eax
0040A70E   .  50            PUSH EAX
0040A70F   .  E8 7C950000   CALL ProcessC.00413C90                   ;  轉換為十六進位制,eax=216614EC0(具體請看下面)
0040A714   .  8BF8          MOV EDI,EAX
0040A716   .  8B46 60       MOV EAX,DWORD PTR DS:[ESI+60]            ;  取註冊認證碼,入eax
0040A719   .  50            PUSH EAX
0040A71A   .  E8 71950000   CALL ProcessC.00413C90                   ;  註冊認證碼轉換為十六進位制,運算結果返回eax=0009FBF1
0040A71F   .  8B8E 54010000 MOV ECX,DWORD PTR DS:[ESI+154]           ;  ecx為AA6D3522
0040A725   .  33C7          XOR EAX,EDI                              ;  EAX與EDI異或:EDI為註冊申請碼560338156的十六進位制,EAX為認證碼654321的十六進位制
0040A727   .  83C4 08       ADD ESP,8
0040A72A   .  3BC1          CMP EAX,ECX                              ;  EAX與ECX比是否相等,ECX=AA6D3522
0040A72C      75 1C         JNZ SHORT ProcessC.0040A74A===========>關鍵跳轉
0040A72E   .  8BCE          MOV ECX,ESI
0040A730   .  E8 2B000000   CALL ProcessC.0040A760


-------------------
轉換為十六進位制子程式
00413C05  /$  53            PUSH EBX
00413C06  |.  55            PUSH EBP
00413C07  |.  56            PUSH ESI
00413C08  |.  57            PUSH EDI
00413C09  |.  8B7C24 14     MOV EDI,DWORD PTR SS:[ESP+14]            ;  註冊碼入edi
00413C0D  |>  833D B41B4400>/CMP DWORD PTR DS:[441BB4],1
00413C14  |.  7E 0F         |JLE SHORT ProcessC.00413C25
00413C16  |.  0FB607        |MOVZX EAX,BYTE PTR DS:[EDI]
00413C19  |.  6A 08         |PUSH 8
00413C1B  |.  50            |PUSH EAX
00413C1C  |.  E8 E53E0000   |CALL ProcessC.00417B06
00413C21  |.  59            |POP ECX
00413C22  |.  59            |POP ECX
00413C23  |.  EB 0F         |JMP SHORT ProcessC.00413C34
00413C25  |>  0FB607        |MOVZX EAX,BYTE PTR DS:[EDI]             ;  註冊碼依次入eax,BYTE
00413C28  |.  8B0D A8194400 |MOV ECX,DWORD PTR DS:[4419A8]           ;  ProcessC.004419B2
00413C2E  |.  8A0441        |MOV AL,BYTE PTR DS:[ECX+EAX*2]
00413C31  |.  83E0 08       |AND EAX,8
00413C34  |>  85C0          |TEST EAX,EAX
00413C36  |.  74 03         |JE SHORT ProcessC.00413C3B
00413C38  |.  47            |INC EDI
00413C39  |.^ EB D2         \JMP SHORT ProcessC.00413C0D
00413C3B  |>  0FB637        MOVZX ESI,BYTE PTR DS:[EDI]              ;  註冊碼第一位入esiYTE PTR
00413C3E  |.  47            INC EDI                                  ;  下一位註冊碼
00413C3F  |.  83FE 2D       CMP ESI,2D                               ;  判斷註冊碼是否為"-"
00413C42  |.  8BEE          MOV EBP,ESI                              ;  esi入ebpE
00413C44  |.  74 05         JE SHORT ProcessC.00413C4B
00413C46  |.  83FE 2B       CMP ESI,2B                               ;  第一位是否為2BB
00413C49  |.  75 04         JNZ SHORT ProcessC.00413C4F
00413C4B  |>  0FB637        MOVZX ESI,BYTE PTR DS:[EDI]
00413C4E  |.  47            INC EDI
00413C4F  |>  33DB          XOR EBX,EBX
00413C51  |>  833D B41B4400>/CMP DWORD PTR DS:[441BB4],1
00413C58  |.  7E 0C         |JLE SHORT ProcessC.00413C66
00413C5A  |.  6A 04         |PUSH 4
00413C5C  |.  56            |PUSH ESI
00413C5D  |.  E8 A43E0000   |CALL ProcessC.00417B06
00413C62  |.  59            |POP ECX
00413C63  |.  59            |POP ECX
00413C64  |.  EB 0B         |JMP SHORT ProcessC.00413C71
00413C66  |>  A1 A8194400   |MOV EAX,DWORD PTR DS:[4419A8]
00413C6B  |.  8A0470        |MOV AL,BYTE PTR DS:[EAX+ESI*2]          ;  AL=84
00413C6E  |.  83E0 04       |AND EAX,4
00413C71  |>  85C0          |TEST EAX,EAX
00413C73  |.  74 0D         |JE SHORT ProcessC.00413C82
00413C75  |.  8D049B        |LEA EAX,DWORD PTR DS:[EBX+EBX*4]        ;  eax=ebx*5
00413C78  |.  8D5C46 D0     |LEA EBX,DWORD PTR DS:[ESI+EAX*2-30]     ;  轉換為十進位制   ebxD PTR
00413C7C  |.  0FB637        |MOVZX ESI,BYTE PTR DS:[EDI]
00413C7F  |.  47            |INC EDI
00413C80  |.^ EB CF         \JMP SHORT ProcessC.00413C51             ;  以上申請碼轉換為十六進位制ocessC.00413
00413C82  |>  83FD 2D       CMP EBP,2D
00413C85  |.  8BC3          MOV EAX,EBX
00413C87  |.  75 02         JNZ SHORT ProcessC.00413C8B
00413C89  |.  F7D8          NEG EAX
00413C8B  |>  5F            POP EDI
00413C8C  |.  5E            POP ESI
00413C8D  |.  5D            POP EBP
00413C8E  |.  5B            POP EBX
00413C8F  \.  C3            RETN

-----------------------------
總結如下:
申請碼與認證碼轉換為十六進位制,然後再異或,結果與AA6D3522相比是否相等,如相等,則註冊成功。

三、製作序號產生器:
利用程式本身製作,如下:
  在0040A725,把eax改為第0040A71F句的ECX值,本例為AA6D3522,單步執行到0040A727時,EAX的值即為認證碼
  
整理如下:
註冊申請碼:560338156
註冊認證碼:2332762574

                                 lordor
                                 4.12

相關文章