• 标 题:华表3.34专业版解密过程及思考 (3千字)
  • 作 者:ywc2000
  • 时 间:2001-8-22 8:52:35
  • 链 接:http://bbs.pediy.com

华表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分钟。
不仅是解了这个软件,更重要的是一种新的思路。