PC 控制檯(PC Controler) V1.5.75 破解過程 (5千字)

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

PC 控制檯(PC Controler) V1.5.75 破解過程

破解撰寫:leeyam[BCG]

首先執行該程式,隨意填寫註冊資訊,提示需要重新啟動軟體驗證註冊碼!
判斷該程式先將輸入的註冊碼存放某個位置,然後啟動時呼叫!

用Language發現是用ASPACK加的殼,很容易脫掉。然後利用W32Dasm反編,查詢字串,發現程式會呼叫登錄檔,"\Software\MySoftware Studio\UserInfo"
從第一個呼叫入手:
* Possible StringData Ref from Code Obj ->"\Software\MySoftware Studio\UserInfo"
                                  |
:00489B6C BA909E4800              mov edx, 00489E90
:00489B71 8B45F8                  mov eax, dword ptr [ebp-08]
:00489B74 E81B78FDFF              call 00461394
:00489B79 8845FF                  mov byte ptr [ebp-01], al
:00489B7C 807DFF00                cmp byte ptr [ebp-01], 00
:00489B80 750A                    jne 00489B8C
:00489B82 E841A7F7FF              call 004042C8
:00489B87 E9C3020000              jmp 00489E4F

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00489B80(C)
|

* Possible StringData Ref from Code Obj ->"UserName"
                                  |
:00489B8C BAC09E4800              mov edx, 00489EC0
:00489B91 8B45F8                  mov eax, dword ptr [ebp-08]
:00489B94 E8A77FFDFF              call 00461B40
:00489B99 84C0                    test al, al
:00489B9B 0F848D020000            je 00489E2E

* Possible StringData Ref from Code Obj ->"UserID"
                                  |
:00489BA1 BAD49E4800              mov edx, 00489ED4
:00489BA6 8B45F8                  mov eax, dword ptr [ebp-08]
:00489BA9 E8927FFDFF              call 00461B40
:00489BAE 84C0                    test al, al
:00489BB0 0F8478020000            je 00489E2E

* Possible StringData Ref from Code Obj ->"UserEmail"
                                  |
:00489BB6 BAE49E4800              mov edx, 00489EE4
:00489BBB 8B45F8                  mov eax, dword ptr [ebp-08]
:00489BBE E87D7FFDFF              call 00461B40
:00489BC3 84C0                    test al, al
:00489BC5 0F8463020000            je 00489E2E

* Possible StringData Ref from Code Obj ->"10674538806"
                                  |
:00489BCB BAF89E4800              mov edx, 00489EF8
:00489BD0 8B45F8                  mov eax, dword ptr [ebp-08]
:00489BD3 E8687FFDFF              call 00461B40
:00489BD8 84C0                    test al, al
:00489BDA 0F844E020000            je 00489E2E
:00489BE0 33C0                    xor eax, eax
:00489BE2 55                      push ebp
:00489BE3 68389C4800              push 00489C38
:00489BE8 64FF30                  push dword ptr fs:[eax]
:00489BEB 648920                  mov dword ptr fs:[eax], esp
:00489BEE 8D4DF4                  lea ecx, dword ptr [ebp-0C]

* Possible StringData Ref from Code Obj ->"UserName"
                                  |
:00489BF1 BAC09E4800              mov edx, 00489EC0
:00489BF6 8B45F8                  mov eax, dword ptr [ebp-08]
:00489BF9 E8167DFDFF              call 00461914
:00489BFE 8D4DF0                  lea ecx, dword ptr [ebp-10]

* Possible StringData Ref from Code Obj ->"UserID"
                                  |
:00489C01 BAD49E4800              mov edx, 00489ED4
:00489C06 8B45F8                  mov eax, dword ptr [ebp-08]
:00489C09 E8067DFDFF              call 00461914
:00489C0E 8D4DEC                  lea ecx, dword ptr [ebp-14]

* Possible StringData Ref from Code Obj ->"UserEmail"
                                  |
:00489C11 BAE49E4800              mov edx, 00489EE4
:00489C16 8B45F8                  mov eax, dword ptr [ebp-08]
:00489C19 E8F67CFDFF              call 00461914

* Possible StringData Ref from Code Obj ->"10674538806"
                                  |
:00489C1E BAF89E4800              mov edx, 00489EF8
:00489C23 8D4DE8                  lea ecx, dword ptr [ebp-18]
:00489C26 8B45F8                  mov eax, dword ptr [ebp-08]
:00489C29 E8E67CFDFF              call 00461914
:00489C2E 33C0                    xor eax, eax
:00489C30 5A                      pop edx
:00489C31 59                      pop ecx
:00489C32 59                      pop ecx
:00489C33 648910                  mov dword ptr fs:[eax], edx
:00489C36 EB1D                    jmp 00489C55
:00489C38 E9F3A2F7FF              jmp 00403F30
:00489C3D C645FF00                mov [ebp-01], 00
:00489C41 E852A6F7FF              call 00404298
:00489C46 E87DA6F7FF              call 004042C8
:00489C4B E9FF010000              jmp 00489E4F
:00489C50 E843A6F7FF              call 00404298

以上可以很容易發現是在調入登錄檔裡填寫的註冊資訊!相信判斷註冊碼的位置就在下面,再往下看看!發現以下程式碼想必是判斷關鍵:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00489D06(C)
|
:00489D49 8B45E8                  mov eax, dword ptr [ebp-18]…………………………調入假碼
:00489D4C 8B55DC                  mov edx, dword ptr [ebp-24]…………………………調入真碼
:00489D4F E864AEF7FF              call 00404BB8…………………………判斷註冊碼!
:00489D54 0F9445FF                sete byte ptr [ebp-01]
:00489D58 807DFF00                cmp byte ptr [ebp-01], 00
:00489D5C 0F84D0000000            je 00489E32

於是呼叫我的TRW2000,直接下中斷 bpx 489d4f 然後執行該程式,順利被攔截,馬上 D edx 得到正確註冊碼,添入軟體後註冊成功!

相關文章