PwlTool的功能限制的破解---DDXia[CCG] (8千字)

看雪資料發表於2001-03-10

PwlTool的功能限制的破解 (轉載希望保持完整)


【作者】丁丁蝦 又名:DDXia [CCG]
【級別】神出鬼沒、快樂的菜鳥一隻 ^)^

【目標 URL】soft4you.com
【使用工具】SoftICE FOR NT/REGMONITER/Caspr101


【序言】

呵呵~~~~(一陣陣的傻笑),好久好久沒有來這CRACK江湖蕩一蕩了!!昨天碰到SB老大,
居然說我玩失蹤  :)真是的!不過是隔了一個世紀沒有見到而已啦!!呵呵!!原因還是
工作比較忙,壓的我透不過氣,出差的事情時常發生!!(人在江湖,身不由己),最近還
比較穩定,不經常出差,所以偷點時間來補習補習CRACK。忙裡偷閒,過一刻輕鬆時間,如果
忙過頭了,就是工作狂。做的開心,也就活的開心。就象寫CRACK破文一樣,心情好,就口水
特別多,資源共享,好文大家分享!!說到"資源共享",不得不多說兩句,就想起這個世紀
第一次上QQ時,就碰到TOYE兄(他的第二句話就是你的文章已經發表了,哇!!!不可能吧!
我何得何能!!原來是這樣:
URL:http://go2.163.com/~toye/temp.htm
===============================================================================
先有滿舟,後有《駭客防線》,如今的商家為了爭奪市場份額,增加發行量,使HACK、CRACK
技術堂而皇之的發表,高舉"矛與盾"的大旗,在那面旗的背後,隱藏著卑鄙的金錢交易,說來說去就是一個利---利益驅動。
更可惡、更卑鄙、更下流的是他們從網上把別人的辛勤成果下載下來,當成自己的成果來發
表,簡直無恥、齷齪之極。總會有一天會遭到報應的!
===============================================================================

今天我們拿RELPW來部分剖析,一個同事傳了個破PWL檔案的軟體過來,他說那是個DEMO只能破4位
密碼,而且沒有輸入註冊碼地方,he's a programmer。以為程式中只編寫了ONLY 4位程式碼,
剛開始我也這樣認為,後來有事沒事的就"白"了它幾眼,還真能"白"出東東來!不信!!
用EXESCOPE 來"白"(先脫殼),重大發現:

在RC資源中的TFREPWL

      object NumberMin: TSpinEdit
        Left = 220
        Top = 1
        Width = 40
        Height = 22
        Hint =
          'Maximum password length for SearchPassword and SearchPasswordFas' +
          't buttons'
        AutoSize = False
        MaxLength = 2
        MaxValue = 12***************注意
        MinValue = 1
        ParentShowHint = False
        ShowHint = True
        TabOrder = 0
        Value = 1
        OnChange = NumberMinChange
      end
      object NumberMax: TSpinEdit
        Left = 292
        Top = 1
        Width = 41
        Height = 22
        Hint =
          'Maximum password length for SearchPassword and SearchPasswordFas' +
          't buttons'
        AutoSize = False
        MaxLength = 2
        MaxValue = 14***************注意
        MinValue = 1
        ParentShowHint = False
        ShowHint = True
        TabOrder = 1
        Value = 2
        OnChange = NumberMaxChange
      end
    end


看到上面的TIPS 太興奮了!!原來作者在玩貓捉老鼠遊戲,4位以上的破解程式碼居然也編
寫其中!!:) 哈哈~~~~~~ 看來有機會,不能錯過這個大好時光。Let‘S GO 。然後,用
exescop修改Value的值,使它大於4。修改和執行了幾次,都發現沒有成功,本來以為簡簡單
單,就可以收工啦!!看來只是走了萬里長征的第一小步。唉!!!早知這麼困難就不拿它
來做講解了!(哦!!原來這小子是這樣的人,終於認識啦!日久見人心啊!什麼什麼!!
我可沒有說要收工啊!!我要求平反!!!:)你們兩個別吵了,有又重大發現,看為什麼
每次它關閉後和啟動時的NumberMinValue和NumberMaxValue都相等。那說明什麼???程式
退出時候,一定是把這兩個值儲存了下來,在它再次啟動的時候使用。會存在哪???第一
時間的反應當然是在登錄檔啦!!趕緊啟動REGMONITOR(這玩意確實是個好東東),得到如
下的收穫:

43    repwl1.exe    CloseKey    HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes    SUCCESS    Key: 0xE1FD7100    
44    repwl1.exe    CreateKey    HKCU\Software\Soft4You\Repwl    SUCCESS    Key: 0xE1EFB880    
45    repwl1.exe    SetValue    HKCU\Software\Soft4You\Repwl\Run    SUCCESS    "G:\temp\pwltoold\repwl1.exe"    
46    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\CharSet    SUCCESS    "1234567890"    
47    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\CharSet    SUCCESS    "1234567890"    
48    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\CharSet    SUCCESS    "1234567890"    
49    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\CharSet    SUCCESS    "1234567890"    
50    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\CharSet    SUCCESS    "1234567890"    
51    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\CharSet    SUCCESS    "1234567890"    
52    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\NumberMinValue    SUCCESS    0x4    
53    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\NumberMaxValue    SUCCESS    0x4    
54    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\NumberMinValue    SUCCESS    0x4    
55    repwl1.exe    QueryValue    HKCU\Software\Soft4You\Repwl\NumberMaxValue    SUCCESS    0x4    

呵呵~~~~ 終於看見廬山真面目。那就修改登錄檔中值,那應該總算沒有問題!!再次執行程式,
我倒~~~~~~~ (看來是不行的,想不用SOFTICE都不行,放下屠刀,立地成佛是比較難的事情啦!)

做事情要三思而後行,就是要如何能一次就抓中重點,再仔細"瞧"一"瞧",如果要攔截讀登錄檔
NumberMinValue值的操作。當然下QueryValue的斷點,那當然可以啦!!但實際上有更好方法,
下SetValue的斷點,中斷後,然後再下QueryValue的斷點,那是更好的!!:)(想起一段廣告
詞"沒有最好的,只有更好的",人一直努力地做更好的,不斷的突破自我,總有一天會最好)

bpx RegSetValueA
中斷後,先遮蔽----BD
再下中斷:
bpx RegQueryValueEXA--------注意它的結尾是EXA 如果你是BPX RegQueryValueA肯定就攔不到

攔截過程就不詳細講解啦! 主要看一下程式碼:

:0047A6D9 50                      push eax**********d eax -----"NumberMinValue"
:0047A6DA 8B4604                  mov eax, dword ptr [esi+04]
:0047A6DD 50                      push eax

* Reference To: advapi32.RegQueryValueExA, Ord:0000h
                                  |
:0047A6DE E8C9C2F8FF              Call 004069AC
:0047A6E3 85C0                    test eax, eax
:0047A6E5 0F94C3                  sete bl
:0047A6E8 8B0424                  mov eax, dword ptr [esp]******獲取的MIN值
:0047A6EB E86CFDFFFF              call 0047A45C ****************加工一下MIN值     
:0047A6F0 884500                  mov byte ptr [ebp+00], al*****加工完後的產品出口 :)
:0047A6F3 8BC3                    mov eax, ebx
:0047A6F5 5A                      pop edx
:0047A6F6 5D                      pop ebp
:0047A6F7 5F                      pop edi
:0047A6F8 5E                      pop esi
:0047A6F9 5B                      pop ebx



來來來 看一看產品加工的過程:(都挺簡單的,自己看啦)
(丁丁蝦撫了撫胸,好怕怕,幸好這樣簡單,很久沒有CRACK,害怕遇到太難的問題,這樣
會失去信心!!呵呵~~~~~)
* Referenced by a CALL at Addresses:
|:0047A6EB  , :0047A8D2 
|
:0047A45C 83F801                  cmp eax, 00000001 ********
:0047A45F 7503                    jne 0047A464
:0047A461 B001                    mov al, 01
:0047A463 C3                      ret



* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047A45F(C)
|
:0047A464 83F802                  cmp eax, 00000002 ********
:0047A467 7504                    jne 0047A46D
:0047A469 B002                    mov al, 02
:0047A46B EB14                    jmp 0047A481

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047A467(C)
|
:0047A46D 83F804                  cmp eax, 00000004 ********
:0047A470 7504                    jne 0047A476
:0047A472 B003                    mov al, 03
:0047A474 EB0B                    jmp 0047A481

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047A470(C)
|
:0047A476 83F803                  cmp eax, 00000003 ********
:0047A479 7504                    jne 0047A47F
:0047A47B B004                    mov al, 04
:0047A47D EB02                    jmp 0047A481

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047A479(C)
|
:0047A47F 33C0                    xor eax, eax      ********

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0047A46B(U), :0047A474(U), :0047A47D(U)
|
:0047A481 C3                      ret


發現有兩個地方(0047A6EB和0047A8D2)呼叫這段程式。簡單的處理方法就是把
:0047A45C 83F801                  cmp eax, 00000001 ********909090
:0047A45F 7503                    jne 0047A464        ********9090
:0047A461 B001                    mov al, 01        ********9090

嘻嘻~~~~~ 終於可以收工了!!!這個程式中還有其他的限制,有時間再研究啦(畢竟還
是比較懶的!呵呵~~~~~)

【後記】
    全篇破文,所列舉出的程式碼難度是非常的簡單。其目的不是讓你去破解這程式,而
是讓你養成一種仔細觀察,詳細分析遇到的情況,能靈活運用已知的知識,關鍵是能突破自我
創造新的思路、思維。其實呢!!思路、思維的靈活應用不僅僅可以使用在CRACK上,在生活
中一樣的適用。

    說到這想起和Aispark(主頁:purewom.yeah.net)聊的一個生活中的CRACK笑話:

(2001-03-01 14:00:20)  Aispark
呵呵,有一次我和我的GF去吃火鍋,我問服務員,這邊的桌子有沒有時間限制。

(2001-03-01 13:56:28)  DDXia
是不是 三個小時的使用期限  呵呵~~~~
原來現實中也需要CRACK  :D

(2001-03-01 14:02:44)  Aispark
是的,可惜沒地方輸註冊碼,要輸的話也只有MONEY了。

(2001-03-01 13:58:02)  DDXia
註冊碼----有啊有啊!!刷卡--卡號嘛  :)
                            
                            完成時間
                          2001.3.9  23:36:01

相關文章