破解QMolView

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

QMolView(http://members.lycos.co.uk/qmolview/),45天的限制。

步驟如下:
1。查殼。好像沒有加殼,軟體用delphi編寫。
2。OllyDbg調入。
    輸入User Name; Company; Authorization Code
      彈出對話方塊,提示:Bad Registration Code
      當前記憶體dump進CPU,在記憶體中查詢Bad Registration Code,並尋找其參考。看到如下程式碼:
...........................

   註冊碼需要24位,我輸入:yzez;使用者單位:[DFCG][BCG][FCG],試驗碼:123456789009876543211234
006886BF  CALL QMolview.00438DEC 
006886C4  LEA EAX,DWORD PTR SS:[EBP-4] 
006886C7  MOV ECX,7 ****************賦ECX常數7,即去掉前7位試驗碼,取後面的17位試驗碼!
006886CC  MOV EDX,1 
006886D1  CALL QMolview.00404388 
006886D6  LEA EAX,DWORD PTR SS:[EBP-4] 
006886D9  MOV ECX,1 
006886DE  MOV EDX,6*********************再把取出的17位試驗碼的第6位去掉,餘下16位試驗碼! 
006886E3  CALL QMolview.00404388 
006886E8  LEA EAX,DWORD PTR SS:[EBP-4] 
006886EB  MOV ECX,1 
006886F0  MOV EDX,0B *******************再去掉上面取出的試驗碼中的第0B位即11位試驗碼,餘下15位試驗碼,
*****以上述為例,去掉前七位就是;89009876543311234,再去掉第6、11兩位:8、3,得到:890097654311234
006886F5  CALL QMolview.00404388          
006886FA  MOV EAX,DWORD PTR SS:[EBP-4]*******上述值儲存到EAX中 
006886FD  PUSH EAX 
006886FE  LEA EDX,DWORD PTR SS:[EBP-8] 
00688701  MOV EAX,DWORD PTR DS:[EBX+2EC]*****使用者名稱入EAX 
00688707  CALL QMolview.00438DEC           
0068870C  MOV EAX,DWORD PTR SS:[EBP-8] 
0068870F  PUSH EAX                       <--------Company壓棧    
00688710  LEA EDX,DWORD PTR SS:[EBP-C] 
00688713  MOV EAX,DWORD PTR DS:[EBX+2E4] 
00688719  CALL QMolview.00438DEC          <--------計算,根據使用者名稱和單位計算:得到一組值:我的是:1811037398D1FC9 
0068871E  MOV EDX,DWORD PTR SS:[EBP-C] 
00688721  MOV EAX,DWORD PTR DS:[EBX+2F8] 
00688727  POP ECX 
00688728  CALL QMolview.00687C2C       <----------關鍵比較     
0068872D  TEST AL,AL                   <--------AL=0 ,註冊失敗,AL=1,註冊成功!
0068872F  JE SHORT QMolview.00688759   <-----------跳就提示錯誤註冊碼!!! 
00688731  MOV EAX,EBX 
00688733  CALL QMolview.004556CC        <--------註冊成功前的操作? 
00688738  PUSH 0                                   ; /Arg1 = 00000000 
0068873A  MOV CX,WORD PTR DS:[6887B8]              ; | 
00688741  MOV DL,2                                 ; | 
00688743  MOV EAX,QMolview.006887C4                ; |ASCII "Thank you for purchase QMolView." 
00688748  |. E8 B387DDFF    CALL QMolview.00460F00                   ; QMolview.00460F00 
0068874D  |. C783 34020000 >MOV DWORD PTR DS:[EBX+234],1 
00688757  |. EB 30          JMP SHORT QMolview.00688789 
00688759  |> 6A 00          PUSH 0                                   ; /Arg1 = 00000000 
0068875B  |. 66:8B0D B88768>MOV CX,WORD PTR DS:[6887B8]              ; | 
00688762  |. B2 02          MOV DL,2                                 ; | 
00688764  |. B8 F0876800    MOV EAX,QMolview.006887F0                ; |ASCII "Bad Registration Code" 
00688769  |. E8 9287DDFF    CALL QMolview.00460F00                   ; QMolview.00460F00 
0068876E  |. 33D2           XOR EDX,EDX 
=====================================================================================
      關鍵比較CALL:

00687C2C  /$ 55             PUSH EBP 
00687C2D  |. 8BEC           MOV EBP,ESP 
00687C2F  |. 83C4 F0        ADD ESP,-10 
00687C32  |. 53             PUSH EBX 
00687C33  |. 33DB           XOR EBX,EBX 
00687C35  |. 895D F0        MOV DWORD PTR SS:[EBP-10],EBX 
00687C38  |. 895D F4        MOV DWORD PTR SS:[EBP-C],EBX 
00687C3B  |. 894D F8        MOV DWORD PTR SS:[EBP-8],ECX 
00687C3E  |. 8955 FC        MOV DWORD PTR SS:[EBP-4],EDX 
00687C41  |. 8BD8           MOV EBX,EAX 
00687C43  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4] 
00687C46  |. E8 A9C6D7FF    CALL QMolview.004042F4 
00687C4B  |. 8B45 F8        MOV EAX,DWORD PTR SS:[EBP-8] 
00687C4E  |. E8 A1C6D7FF    CALL QMolview.004042F4 
00687C53  |. 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8] 
00687C56  |. E8 99C6D7FF    CALL QMolview.004042F4 
00687C5B  |. 33C0           XOR EAX,EAX 
00687C5D  |. 55             PUSH EBP 
00687C5E  |. 68 167D6800    PUSH QMolview.00687D16 
00687C63  |. 64:FF30        PUSH DWORD PTR FS:[EAX
00687C66  |. 64:8920        MOV DWORD PTR FS:[EAX],ESP 
00687C69  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4] 
00687C6C  |. E8 CFC4D7FF    CALL QMolview.00404140 
00687C71  |. 3B43 3C        CMP EAX,DWORD PTR DS:[EBX+3C] 
00687C74  |. 7F 19          JG SHORT QMolview.00687C8F 
00687C76  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4] 
00687C79  |. E8 C2C4D7FF    CALL QMolview.00404140 
00687C7E  |. 3B43 40        CMP EAX,DWORD PTR DS:[EBX+40] 
00687C81  |. 7C 0C          JL SHORT QMolview.00687C8F 
00687C83  |. 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8] 
00687C86  |. E8 B5C4D7FF    CALL QMolview.00404140 
00687C8B  |. 85C0           TEST EAX,EAX 
00687C8D  |. 75 04          JNZ SHORT QMolview.00687C93 
00687C8F  |> 33DB           XOR EBX,EBX 
00687C91  |. EB 60          JMP SHORT QMolview.00687CF3 
00687C93  |> 8D55 F4        LEA EDX,DWORD PTR SS:[EBP-C] 
00687C96  |. 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8] 
00687C99  |. E8 E61CD8FF    CALL QMolview.00409984 
00687C9E  |. 8B55 F4        MOV EDX,DWORD PTR SS:[EBP-C] 
00687CA1  |. 8D45 08        LEA EAX,DWORD PTR SS:[EBP+8] 
00687CA4  |. E8 9FC2D7FF    CALL QMolview.00403F48 
00687CA9  |. 8D4D F0        LEA ECX,DWORD PTR SS:[EBP-10] 
00687CAC  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4] 
00687CAF  |. 8BC3           MOV EAX,EBX 
00687CB1  |. E8 4EFCFFFF    CALL QMolview.00687904 
00687CB6  |. 8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10] 
00687CB9  |. 8B55 08        MOV EDX,DWORD PTR SS:[EBP+8] 
00687CBC  |. E8 3B1DD8FF    CALL QMolview.004099FC********在這個CALL比較,比較什麼?上面取的試驗碼,與根據使用者名稱和
****單位計算的值比較,相等,EAX的值為1,否則為0 
00687CC1  |. 85C0           TEST EAX,EAX **********EAX的值為0,為0就跳,一跳就失敗,
00687CC3  |. 74 04          JE SHORT QMolview.00687CC9 
00687CC5  |. 33DB           XOR EBX,EBX 
00687CC7  |. EB 2A          JMP SHORT QMolview.00687CF3 
00687CC9  |> 8D43 38        LEA EAX,DWORD PTR DS:[EBX+38] 
00687CCC  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4] 
00687CCF  |. E8 30C2D7FF    CALL QMolview.00403F04 
00687CD4  |. 8D43 44        LEA EAX,DWORD PTR DS:[EBX+44] 
00687CD7  |. 8B55 F8        MOV EDX,DWORD PTR SS:[EBP-8] 
00687CDA  |. E8 25C2D7FF    CALL QMolview.00403F04 
00687CDF  |. 8D43 4C        LEA EAX,DWORD PTR DS:[EBX+4C] 
00687CE2  |. 8B55 08        MOV EDX,DWORD PTR SS:[EBP+8] 
00687CE5  |. E8 1AC2D7FF    CALL QMolview.00403F04 
00687CEA  |. 8BC3           MOV EAX,EBX 
00687CEC  |. E8 9B010000    CALL QMolview.00687E8C 
00687CF1  |. B3 01          MOV BL,1 
00687CF3  |> 33C0           XOR EAX,EAX 
00687CF5  |. 5A             POP EDX 
00687CF6  |. 59             POP ECX 
00687CF7  |. 59             POP ECX 
00687CF8  |. 64:8910        MOV DWORD PTR FS:[EAX],EDX 
00687CFB  |. 68 1D7D6800    PUSH QMolview.00687D1D 
00687D00  |> 8D45 F0        LEA EAX,DWORD PTR SS:[EBP-10] 
00687D03  |. BA 04000000    MOV EDX,4 
00687D08  |. E8 C7C1D7FF    CALL QMolview.00403ED4 
00687D0D  |. 8D45 08        LEA EAX,DWORD PTR SS:[EBP+8] 
00687D10  |. E8 9BC1D7FF    CALL QMolview.00403EB0 
00687D15  . C3             RETN 
00687D16   .^E9 8DBBD7FF    JMP QMolview.004038A8 

    所以這個軟體的註冊碼關鍵是找到使用者名稱和單位計算後的數值,把這個值找到後,替換試驗碼的後17位,
然後再在這個值的第5、10兩位後面加入任意的兩位數值和字元就行了。
    一組可用註冊碼:yzez;
                    使用者單位:[DFCG][BCG][FCG], 
                    註冊碼:1234567181108373980D1FC9

相關文章