華表3.34專業版解密過程及思考 (3千字)

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

華表3.34專業版解密過程
華表軟體不愧是中國人的自豪,功能較強但體積很小。已經有許多朋友對它進行過破解。近日天氣酷熱,待在家裡沒事,將它拿出來試用一下,是一個未註冊版,先解密吧。
使用工具:w32dasm、hiew
破解難度:低
先是按照提示字元:註冊碼不正確,請仔細檢查!找到44FD5,原來是由444F92跳過來的:
:00444F8A E8718A0900              call 004DDA00 有問題,進去看看!
:00444F8F 6685C0                  test ax, ax  只要ax=0,就跳出註冊失敗提示。
:00444F92 7E3D                    jle 00444FD1 跳到失敗處。
如果你立即很簡單地將jle改為nop,你會發現是不行的。
但只要不使ax=0即可使之不出現錯誤提示,關鍵在上面的call中,進入call 004DDA00看看:
:004DDA00 6AFF                    push FFFFFFFF
:004DDA02 68A8625300              push 005362A8
:004DDA07 64A100000000            mov eax, dword ptr fs:[00000000]
...以下一段略過...
:004DDA43 746E                    je 004DDAB3  通向結束之路!
:004DDA45 8A0E                    mov cl, byte ptr [esi]
:004DDA47 80F941                  cmp cl, 41
:004DDA4A 0F8D9A000000            jnl 004DDAEA 通向成功之路!
:004DDA50 660FBE6C16FE            movsx bp, byte ptr [esi+edx-02]
:004DDA56 83ED30                  sub ebp, 00000030
:004DDA59 C744242401000000        mov [esp+24], 00000001
:004DDA61 663BE8                  cmp bp, ax
:004DDA64 7C4D                    jl 004DDAB3 通向結束之路!
以下你會看到je 004DDAB3是一條既短又快的結束之路,註冊失敗!而jnl 004DDAEA則是一條又長又複雜的成功之路。選擇誰,似乎是不言而喻的。但你會發現選擇長征之路的成功希望極小,此時你才會想起毛澤東的偉大,他來的話,可能會成功。於是我別無選擇了通向結束之路。
將:004DDA43 746E  je 004DDAB3改為:004DDA43 EB6E jmp 004DDAB3:
:004DDAB3 8D4C2410                lea ecx, dword ptr [esp+10]
:004DDAB7 C644245C00              mov [esp+5C], 00
:004DDABC E8D2D50200              call 0050B093
:004DDAC1 8D4C2414                lea ecx, dword ptr [esp+14]
:004DDAC5 C744245CFFFFFFFF        mov [esp+5C], FFFFFFFF
:004DDACD E8C1D50200              call 0050B093
:004DDAD2 6633C0                  xor ax, ax  它是註冊失敗之源!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004DDE0D(U)
|
:004DDAD5 8B4C2454                mov ecx, dword ptr [esp+54]
:004DDAD9 5F                      pop edi
:004DDADA 5E                      pop esi
:004DDADB 5D                      pop ebp
:004DDADC 5B                      pop ebx
:004DDADD 64890D00000000          mov dword ptr fs:[00000000], ecx
:004DDAE4 83C450                  add esp, 00000050
:004DDAE7 C20400                  ret 0004

第一反應是將:004DDAD2 6633C0  xor ax, ax 改為mov ax,01或or ax,1,但你會發現改過後位元組比原來的長,導致程式出錯。靜下心來想一下,它為什麼要xor  ax,ax呢,ax中的值在此之前肯定不為0,所以為了註冊失敗必須將它改為0,我要的正是ax為不0,於是只要將xor ax,ax改為nop即可,很簡單!用hiew進行上述修改原程式後,程式不再出現討厭的要你註冊的提示了,已經是一個註冊版了,到註冊的地方隨便填入什麼,也沒關係了,當然,不填也沒關係。填上自己的大名,按“註冊”,出現註冊成功的提示,在“關於”中,你會滿意地發現該軟體合法使用人為你!
破解時間:30分鐘。
不僅是解了這個軟體,更重要的是一種新的思路。

相關文章