處女作,希望給各位初學者一些幫助^_^ 魔法轉換2.0 beta 1 破解 (7千字)

看雪資料發表於2001-08-07

魔法轉換2.0 beta 1

註冊後會在win.ini上寫下注冊碼,以用於每次啟動效驗:
[magct]
name=pow
code=109F804632

……………………………………………………………………………………………
用typ3看它用了什麼殼,發現其使用了Aspack加殼,用unAspack脫之~

脫殼後用w32dsm89反編譯,查詢字串,發現又3條表明註冊成功。由於註冊碼錯誤後沒有提示,只好蒙著來啦。一條是“,恭喜你成功註冊!”一條是“我自豪,我已經註冊!”另一條是“以註冊!”從字面上看第一條可能性最大(可惜pow開始沒看到,繞了個大圈子)由於pow的馬虎,所以把其他兩條的功能也給瞭解了~第二條是註冊後顯示在“註冊”視窗上的,第三條是註冊後顯示在“關於”選單上的,可以透過下斷點驗證。

雙擊“,恭喜你成功註冊!”這個字串,顯示如下內容:

:00561245 837DFC00                cmp dword ptr [ebp-04], 00000000    《---判斷是否有使用者明
:00561249 7518                    jne 00561263
:0056124B 6A30                    push 00000030
:0056124D 68B8135600              push 005613B8

* Possible StringData Ref from Code Obj ->"請輸入姓名!"
                                  |
:00561252 68C0135600              push 005613C0
:00561257 6A00                    push 00000000

* Reference To: user32.MessageBoxA, Ord:0000h
                                  |
:00561259 E80269EAFF              Call 00407B60
:0056125E E908010000              jmp 0056136B

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00561249(C)
|
:00561263 8D55F8                  lea edx, dword ptr [ebp-08]
:00561266 8B83E8020000            mov eax, dword ptr [ebx+000002E8]
:0056126C E8FB78EDFF              call 00438B6C
:00561271 8B45F8                  mov eax, dword ptr [ebp-08]
:00561274 50                      push eax    《---假碼!
:00561275 8D55F0                  lea edx, dword ptr [ebp-10]
:00561278 8B83E4020000            mov eax, dword ptr [ebx+000002E4]
:0056127E E8E978EDFF              call 00438B6C
:00561283 8B45F0                  mov eax, dword ptr [ebp-10]
:00561286 8D55F4                  lea edx, dword ptr [ebp-0C]
:00561289 E84E4CFFFF              call 00555EDC
:0056128E 8B55F4                  mov edx, dword ptr [ebp-0C]    《---真碼!
:00561291 58                      pop eax
:00561292 E8052FEAFF              call 0040419C        《---對比真假碼的call,關鍵!
:00561297 0F85CE000000            jne 0056136B        《---一條就死!
:0056129D 8D45EC                  lea eax, dword ptr [ebp-14]
:005612A0 E8EF48FFFF              call 00555B94
:005612A5 8D45EC                  lea eax, dword ptr [ebp-14]

* Possible StringData Ref from Code Obj ->"\win.ini"    《---隱約感到註冊碼會放到win.ini中
                                  |
:005612A8 BAD8135600              mov edx, 005613D8
:005612AD E8E22DEAFF              call 00404094
:005612B2 8B4DEC                  mov ecx, dword ptr [ebp-14]
:005612B5 B201                    mov dl, 01

* Possible StringData Ref from Code Obj ->"<G"
                                  |
:005612B7 A19C344700              mov eax, dword ptr [0047349C]
:005612BC E82B23F1FF              call 004735EC
:005612C1 A3E4675700              mov dword ptr [005767E4], eax
:005612C6 8D55E8                  lea edx, dword ptr [ebp-18]
:005612C9 8B83E4020000            mov eax, dword ptr [ebx+000002E4]
:005612CF E89878EDFF              call 00438B6C
:005612D4 8B45E8                  mov eax, dword ptr [ebp-18]
:005612D7 50                      push eax

* Possible StringData Ref from Code Obj ->"name"
                                  |
:005612D8 B9EC135600              mov ecx, 005613EC

* Possible StringData Ref from Code Obj ->"magct"
                                  |
:005612DD BAFC135600              mov edx, 005613FC
:005612E2 A1E4675700              mov eax, dword ptr [005767E4]
:005612E7 8B30                    mov esi, dword ptr [eax]
:005612E9 FF5604                  call [esi+04]
:005612EC 8D55E4                  lea edx, dword ptr [ebp-1C]
:005612EF 8B83E8020000            mov eax, dword ptr [ebx+000002E8]
:005612F5 E87278EDFF              call 00438B6C
:005612FA 8B45E4                  mov eax, dword ptr [ebp-1C]
:005612FD 50                      push eax

* Possible StringData Ref from Code Obj ->"code"
                                  |
:005612FE B90C145600              mov ecx, 0056140C

* Possible StringData Ref from Code Obj ->"magct"
                                  |
:00561303 BAFC135600              mov edx, 005613FC
:00561308 A1E4675700              mov eax, dword ptr [005767E4]
:0056130D 8B30                    mov esi, dword ptr [eax]
:0056130F FF5604                  call [esi+04]
:00561312 A1E4675700              mov eax, dword ptr [005767E4]
:00561317 E8781DEAFF              call 00403094

* Possible StringData Ref from Code Obj ->"關閉"
                                  |
:0056131C BA1C145600              mov edx, 0056141C
:00561321 8B83F4020000            mov eax, dword ptr [ebx+000002F4]
:00561327 E87078EDFF              call 00438B9C
:0056132C 33D2                    xor edx, edx
:0056132E 8B83F0020000            mov eax, dword ptr [ebx+000002F0]
:00561334 8B08                    mov ecx, dword ptr [eax]
:00561336 FF515C                  call [ecx+5C]
:00561339 6A40                    push 00000040

* Possible StringData Ref from Code Obj ->"魔法轉換"
                                  |
:0056133B 6824145600              push 00561424
:00561340 8D55E0                  lea edx, dword ptr [ebp-20]
:00561343 8B83E4020000            mov eax, dword ptr [ebx+000002E4]
:00561349 E81E78EDFF              call 00438B6C
:0056134E 8D45E0                  lea eax, dword ptr [ebp-20]

* Possible StringData Ref from Code Obj ->",恭喜你成功註冊!"
                                  |
:00561351 BA38145600              mov edx, 00561438    《---雙擊後停在這裡
:00561356 E8392DEAFF              call 00404094
:0056135B 8B45E0                  mov eax, dword ptr [ebp-20]
:0056135E E8ED2EEAFF              call 00404250
:00561363 50                      push eax
:00561364 6A00                    push 00000000

雙擊後看到註冊成功的call,於是向上看,發現:00561297處如果跳轉就會跳過註冊成功視窗,ok問題就在它,在看看上面,非常經典的判斷排列!ok!靜態分析基本結束,開始動手攔截吧!

進入trw2000,下斷點bpx 00561245,為什麼要在這裡下斷點?一是可以驗證關於使用者名稱的猜測,二是可以步步為營,不會落掉什麼重要的啟示。一步一步的執行,到00561249處如果你有興趣可以試試r fl z,你可以看到果然上面這個那個比較是看有無註冊碼的^_^,在往下走,到00561274處下d eax可以看到你輸入的假註冊碼,在往下走,到0056128e就是把真的註冊碼放到edx中了,下d edx即可看到真的註冊碼。到00561291你又可以看到假碼了。00561292這個call是關鍵,下麵條與不條都要看它的,跟進後可以看到真假註冊碼的對比(又一次可以看到真碼),把註冊碼抄下來就可以收工了^_^

可以看到在005612A8上面的那句,pow第一感覺就是它把註冊碼放到win.ini中,然後每次啟動都對比。這個軟體給我的感覺是程式碼效率太低,很慢(166mmx,64m)。雖然我很討厭這樣的做法,但我還是很同情作者,他也真是不容易,做個軟體比破解要難多了……

以上是pow的第一篇像樣的破解記錄(以前也有,不過都是寫給自己看的,估計新手看不懂,老鳥不屑看),今天遇到了這個曾經讓我為難的軟體(不久前噢,也就2個月,pow很菜的^_^),有了“滅其而後快”的意思,但想到我的這點小伎倆都是從這個論壇或各位大哥前輩的教程上學來的,覺得自己也有義務把這個傳統延續下去,於是就有了這篇文章,pow希望能給各位初學者一點幫助,也是對所有有助於我的各位大哥的回報!

相關文章