一分鐘破除PubWin4密碼----網咖無阻!

看雪資料發表於2004-08-01

現在的網咖,大部分都安裝了pubwin4,用起來有很多限制,總之很不爽啊!!
   雖然,網上有很多工具來破掉Punwin,但是大多版本過時或者有諸多限制
有的甚至暗藏木馬,所以在下就在這裡介紹一種方法,破解網咖的限制,使得
上網更加自由,即使你是初學破解的人,或者從來沒有接觸過軟體破解知識也可以完成,只要你一步步跟著做就可以了。當然,高手對在下的方法自然不屑一看,還望不要見笑。
   好了,現在就開始。
   首先,瞭解一下背景,大家有可能知道Pubwin的一些版本是採用明碼比較的方式處理密碼,所以在網上下載一個winhex就可以搞定,具體方法可以上網找一下,不過,現在的版本可不是簡單的明碼比較了。
   筆者的測試環境是(win98+Pubwin4.3.0.1),這個版本把密碼進行加密並存放在記憶體的某個地方,所以用上面的方法就不靈了。筆者透過跟蹤,發現這個版本的pubwin的處理方式只是把使用者輸入的密碼進行加密,並且呼叫MSVCRT_mbscmp函式對加密後的字串和記憶體中的正確的密碼加密字串相比較,如果相同就繼續執行,否則,就跳出一個訊息框,提示使用者輸入的密碼錯誤。
   好了,知道了以上的知識,就可以進行破解了
   1。從網上下載TRW2000
    http://www.pediy.com/tools/Debugger....2X/trw1.23.zip  

      按Browse,選擇Pubwin4.exe,然後load,裝載pubwin4。
      
   2。設定斷點:
      輸入,bpx messageboxa,回車。
   3。按Ctrl+N,返回windows,開啟“管理工具”--》“系統設定”隨意在輸 
      入密碼欄內輸入幾個數字,並點“確定”。
   4。TRW2000攔截斷點,形如下:
      0167:BFC041B7 C20400           RET      04
      USER32!MessageBoxA
      0167:BFC041BA 55               PUSH     EBP
      0167:BFC041BB 8BEC             MOV      EBP,ESP
      0167:BFC041BD 6A00             PUSH     BYTE +00
      0167:BFC041BF FF7514           PUSH     DWORD [EBP+14]
      0167:BFC041C2 FF7510           PUSH     DWORD [EBP+10]
      0167:BFC041C5 FF750C           PUSH     DWORD [EBP+0C]
      0167:BFC041C8 FF7508           PUSH     DWORD [EBP+08]
      0167:BFC041CB E84CECFFFF       CALL     `USER32!MessageBoxExA`
      0167:BFC041D0 5D               POP      EBP
     此時,按F12鍵,發現返回Windows介面,點“確定”後,又返回TRW2000
     再按一次F12和F10鍵,來到如下地址:
     0167:0040F479 52               PUSH     EDX
     0167:0040F47A 6850154300       PUSH     DWORD 00431550
     0167:0040F47F FF1508594200     CALL     `MSVCRT!_mbscmp`
     0167:0040F485 83C408           ADD      ESP,BYTE +08
     0167:0040F488 85C0             TEST     EAX,EAX
     0167:0040F48A 7509             JNZ      0040F495
     0167:0040F48C 8BCE             MOV      ECX,ESI
     0167:0040F48E E8730C0100       CALL     `MFC42!ord_000012F5`
     0167:0040F493 EB4E             JMP      SHORT 0040F4E3
     0167:0040F495 6A30             PUSH     BYTE +30
     0167:0040F497 6810FE4200       PUSH     DWORD 0042FE10
     0167:0040F49C 68F8FD4200       PUSH     DWORD 0042FDF8
     0167:0040F4A1 8BCE             MOV      ECX,ESI
     0167:0040F4A3 E8520C0100       CALL     `MFC42!ord_00001080`
     發現地址形如:XXXX:0040XXXX,回到程式領空,點程式碼視窗,並向上
     翻屏,果然發現`MSVCRT!_mbscmp`函式,於是,在此處設定記憶體斷點,
    在命令視窗輸入:
    bpm 40F485 X do "r eax 00000000"
    (40F485這個地址要視,不同情況而定,即只要在MSVCRT!_mbscmp的下一句

設定斷點即可)
    分析一下,程式在CALL MSVCRT!_mbscmp這一行對加密的密碼字串和使用者輸入的密碼比較,如果相同返回0,否則返回-1(FFFFFFFF),返回值放入eax中

所以只要把放在eax中的值改為0,那不就萬事OK了。
    在設定了以上斷點後,按Ctrl+N ,返回windows,開啟“管理工具”--》“系統設定”隨意在輸入密碼欄內輸入幾個數字,並點“確定”。返回了
TRW2000介面,按F5鍵,看看,是不是出現了系統設定介面?
   至此,整個破解過程就完成了,如果你是高手當然不會放過上面的密碼加密
過程了,仔細分析以下,不難得出真正的密碼,在下的這個方法只不過是“爆破法”,目的是讓初學者從例項中瞭解破解的過程,又不乏實用性。
   在下這是第一次寫軟體的破解過程,選的例子也很簡單,還望不要見笑,如果你對一些東西還不瞭解,建議你看看“看雪學院”的教程:
   http://www.pediy.com/tutorial/Catalog.htm
   最後,希望大家不要利用這種方法在網咖中破壞,或者“免費上網”,如果這樣造成的後果自負哦!

相關文章