轉貼 Ronnier 的 AcqURL 5.1 註冊黑名單的破解 (7千字)

看雪資料發表於2001-05-14

軟體名稱:AcqURL 5.1 漢化版
下載地址:http://fishs.guomai.sh.cn/soft/wl/pacqurl51-f.exe (830kb)
軟體介紹:很不錯的書籤工具。
破解目的:用老版本的序號產生器生成的註冊碼註冊時,過一段時間就會跳出警告框,說檢測到一個非法的註冊碼。
破解工具:W32Dsm89

    用 W32Dsm 反彙編 AcqURL.exe 檔案,如果沒有破解而使用網上的註冊碼,點選一個書籤後會彈出“XXX(當前使用者名稱) You have been identified...”這樣一個對話方塊,所以,在 W32Dsm 中用查詢->查詢文字查詢 You have been identified,可以找到就一處呼叫,為了方便說明我把整塊相關程式碼都給抄出來,而找到的地方在這塊程式碼的最後(注意找找哦^_^):

:0051746F E8BCB8EEFF              call 00402D30
:00517474 8BF0                    mov esi, eax
:00517476 81FEBFD8A700            cmp esi, 00A7D8BF
:0051747C 0F8FFD000000            jg 0051757F
:00517482 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"Hex19571"
                                  |
:00517485 BAA0775100              mov edx, 005177A0
:0051748A E8E1CAEEFF              call 00403F70
:0051748F 0F84EA000000            je 0051757F
:00517495 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"$1957197"
                                  |
:00517498 BAB4775100              mov edx, 005177B4
:0051749D E8CECAEEFF              call 00403F70
:005174A2 0F84D7000000            je 0051757F
:005174A8 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"12345432"
                                  |
:005174AB BAC8775100              mov edx, 005177C8
:005174B0 E8BBCAEEFF              call 00403F70
:005174B5 0F84C4000000            je 0051757F
:005174BB 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000323"
                                  |
:005174BE BADC775100              mov edx, 005177DC
:005174C3 E8A8CAEEFF              call 00403F70
:005174C8 0F84B1000000            je 0051757F
:005174CE 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000347"
                                  |
:005174D1 BAF0775100              mov edx, 005177F0
:005174D6 E895CAEEFF              call 00403F70
:005174DB 0F849E000000            je 0051757F
:005174E1 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000360"
                                  |
:005174E4 BA04785100              mov edx, 00517804
:005174E9 E882CAEEFF              call 00403F70
:005174EE 0F848B000000            je 0051757F
:005174F4 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000423"
                                  |
:005174F7 BA18785100              mov edx, 00517818
:005174FC E86FCAEEFF              call 00403F70
:00517501 747C                    je 0051757F
:00517503 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000452"
                                  |
:00517506 BA2C785100              mov edx, 0051782C
:0051750B E860CAEEFF              call 00403F70
:00517510 746D                    je 0051757F
:00517512 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000489"
                                  |
:00517515 BA40785100              mov edx, 00517840
:0051751A E851CAEEFF              call 00403F70
:0051751F 745E                    je 0051757F
:00517521 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000702"
                                  |
:00517524 BA54785100              mov edx, 00517854
:00517529 E842CAEEFF              call 00403F70
:0051752E 744F                    je 0051757F
:00517530 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000703"
                                  |
:00517533 BA68785100              mov edx, 00517868
:00517538 E833CAEEFF              call 00403F70
:0051753D 7440                    je 0051757F
:0051753F 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000893"
                                  |
:00517542 BA7C785100              mov edx, 0051787C
:00517547 E824CAEEFF              call 00403F70
:0051754C 7431                    je 0051757F
:0051754E 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10000931"
                                  |
:00517551 BA90785100              mov edx, 00517890
:00517556 E815CAEEFF              call 00403F70
:0051755B 7422                    je 0051757F
:0051755D 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10001148"
                                  |
:00517560 BAA4785100              mov edx, 005178A4
:00517565 E806CAEEFF              call 00403F70
:0051756A 7413                    je 0051757F
:0051756C 8B45FC                  mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"10001156"
                                  |
:0051756F BAB8785100              mov edx, 005178B8
:00517574 E8F7C9EEFF              call 00403F70
:00517579 0F85E9010000            jne 00517768

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0051747C(C), :0051748F(C), :005174A2(C), :005174B5(C), :005174C8(C)
|:005174DB(C), :005174EE(C), :00517501(C), :00517510(C), :0051751F(C)
|:0051752E(C), :0051753D(C), :0051754C(C), :0051755B(C), :0051756A(C)
|
:0051757F 8D45F8                  lea eax, dword ptr [ebp-08]
:00517582 8B9398040000            mov edx, dword ptr [ebx+00000498]
:00517588 8B5228                  mov edx, dword ptr [edx+28]
:0051758B E8ECC6EEFF              call 00403C7C
:00517590 8D45F4                  lea eax, dword ptr [ebp-0C]

* Possible StringData Ref from Code Obj ->" You have been identified as someone "
                                        ->"using AcqURL with an ILLEGAL registration "
                                        ->"number!  "
                                  |
:00517593 BACC785100              mov edx, 005178CC
:00517598 E8DFC6EEFF              call 00403C7C
:0051759D 8D45F0                  lea eax, dword ptr [ebp-10]

    看到這裡又一大堆跳轉點了吧?就是 0051757F 那裡,上面有一大堆地方條件跳轉到此處,這裡往下就是程式處理這些黑名單註冊碼的程式碼段了,我就不抄出來了,您看看就清楚了,大概就是修改 REG.DAT,把軟體改為 Expired,並在 ACQ.INI 中添上一個 [Check] 段,加入變數 Crack,值為此註冊碼在黑名單中的序號,把當前書籤檔案複製到 C:\bdatab.dat,然後破壞當前書籤檔案等等吧,具體我也看不懂,因為俺不會程式設計。^O^
    OK, OK, 來看看破解方法,0051757F 的上面,就是 00517579 那裡,有一個非零跳轉到 00517768,這裡 00517768 開始就是正常的啟動瀏覽器開啟 URL 的程式段了。那麼,找到剛才那一大堆的條件跳轉的第一個,就是 0051747C 這裡,把原來的 jg 0051757F 改為 jmp 00517768,這樣就永遠跳過這段處理非法註冊碼的程式段了。程式碼這麼算:先把目標地址減去指令地址,00517768-0051747C=2EC,由於這條 jmp 指令本身長度為 5,所以再減 5,2EC-5=2E7,這就是相對偏移了。所以把原來的 0F8FFD000000 改為 E9E7020000,E9 是 jmp,後面是相對偏移,位元組少一個,補上一個 nop,就是 90,搞定。:)
    嗯,我所理解的就是這樣了,因為自己也不會程式設計,所以都是些自己的理解,如果哪裡說錯了千萬別笑我哦。^_^


Ronnier
http://ronnier.yeah.net/

相關文章