華表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分鐘。
不僅是解了這個軟體,更重要的是一種新的思路。