PicaView 1.32破解實戰 (3千字)

看雪資料發表於2000-03-03

用過ACDSee的朋友,可能也知道同一公司出品的Picaview. 今天從ACD公司的主頁下載了Picaview 1.32,是個60天試用版本. 下面是破解過程,用時大約30分鐘.

1. Picaview.dll是用aspack1.084壓過的,所以先用unaspack脫殼(我用版本的是1.0.5.0),OK! 感謝畢衛國先生. :)
2. 用W32dasm反彙編picaview.dll.
3. 在Picaview選單上大家可以見到"Purchase PicaView..."的字樣,尋找它.
4. 見到下面的程式碼

* Reference To: USER32.InsertMenuA, Ord:0174h
                                  |
:10001160 8B3DD8C40910            mov edi, dword ptr [1009C4D8]
:10001166 55                      push ebp
:10001167 8BAC2418020000          mov ebp, dword ptr [esp+00000218]
:1000116E 8D4E01                  lea ecx, dword ptr [esi+01]
:10001171 6A00                    push 00000000
:10001173 8BC3                    mov eax, ebx
:10001175 51                      push ecx
:10001176 68000C0000              push 00000C00
:1000117B 50                      push eax
:1000117C 55                      push ebp
:1000117D 43                      inc ebx
:1000117E FFD7                    call edi
:10001180 B908A10B10              mov ecx, 100BA108
:10001185 E8B6870100              call 10019940 <- ???
:1000118A 85C0                    test eax, eax
:1000118C 752B                    jne 100011B9 <- 如果eax不等於0, hehe
:1000118E 8B0D5CA20B10            mov ecx, dword ptr [100BA25C]
:10001194 8D442454                lea eax, dword ptr [esp+54]
:10001198 6A64                    push 00000064
:1000119A 50                      push eax

* Possible Reference to String Resource ID=00040: "Purchase PicaView..."
                                  |
:1000119B 6A28                    push 00000028 <- 我們在這
:1000119D 51                      push ecx

5. 仔細看看那個可疑的CALL,呼叫的地方有多處

* Referenced by a CALL at Addresses:
|:10001108  , :10001185  , :10002135  , :100022A8  , :100076FB 
|:100385EE 
|
:10019940 33C0                    xor eax, eax
:10019942 C3                      ret

6. 挨個看一看,都是哪些地方呼叫這個CALL,又會發現下面這段程式碼

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10002291(C)
|
:100022A3 B908A10B10              mov ecx, 100BA108
:100022A8 E893760100              call 10019940 <-這裡
:100022AD 85C0                    test eax, eax <-若eax不為0
:100022AF 0F85BD000000            jne 10002372 <-跳過過期檢查
:100022B5 55                      push ebp
:100022B6 B908A10B10              mov ecx, 100BA108
:100022BB E8D02C0800              call 10084F90

* Reference To: USER32.GetDlgItemTextA, Ord:0104h
                                  |
:100022C0 8B2D70C40910            mov ebp, dword ptr [1009C470]
:100022C6 8BF8                    mov edi, eax
:100022C8 85FF                    test edi, edi
:100022CA 7F21                    jg 100022ED <-未過期,跳走
:100022CC 8B155CA20B10            mov edx, dword ptr [100BA25C]<-否則
:100022D2 8D8C2498000000          lea ecx, dword ptr [esp+00000098]
:100022D9 6896000000              push 00000096
:100022DE 51                      push ecx

* Possible Reference to String Resource ID=00209: "Your evaluation period is over.
Please register this softwar"
                                  |
:100022DF 68D1000000              push 000000D1
:100022E4 52                      push edx

7. 打補丁,將xor eax, eax改成mov al,01.
8. 再試試看,高興了吧. :)
9. 程式的時間標誌在登錄檔HKLM\software\acd systems\picaview項.你要程式顯示你的大名,也請自己動手吧.

相關文章