VB黑客程式的暴破(修改)一例 (9千字)

看雪資料發表於2003-02-06

VB黑客程式的暴破(修改)一例



      好久沒有製造垃圾了,昨晚和網友拼火,無意中找到個有趣的東東名曰:獨裁者 Autocrat DDos client  版本:v1.26.59。為了讓它更有趣,就產生了這篇破破文。。。
軟體名稱:獨裁者 Autocrat DDos client
軟體版本:v1.26.59
執行平臺:windows98/2000/xp
軟體作用:差點忘了說,看名字就知道了,這是在網路上進行DDos攻擊用的,真的很有趣。。。呵呵。。。
破解目的:軟體的主機列表框中,最多隻允許新增十臺主機(威力不夠),老大大一個文字框,多浪費,所以目的是解除最多隻能新增十臺主機的限制。
宣告:本文的目的只是想說明正確設斷對暴破VB程式的重要性,如果哪裡說錯了,請各位指出。
下載地址:ftp://eyy.vicp.net/bluearc/Client.rar
哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪BEGIN哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪
      1、用peid 0.8開啟程式檔案:Client.exe      顯視:VB6.0  說明沒加殼。。。暗喜。。。
      2、用w32dasmgold 反彙編。
      3、在w32dasmgold 的介面使用串式參考檢視,唉,真失望。果然是亂七八糟的一片。。。亂碼迷人眼。。。面對茫茫碼海,字串參考又看不出什麼名堂。。。到哪找我要的東東呀。。。殭屍。。。哦不,是僵局。
      4、經過了一番思索,初步列出了破解思路:在程式中新增主機時,如果超過十臺,則程式會彈出“已經超過主機上限,禁止新增!”的訊息框。所以應該道先從彈出訊息框的地方著手。。。想到這裡。。。我立即用CTRL+D撥出等候多時的Softice。。。。
      5、設斷:bpx messageboxa .....開啟主程式--新增主機---直到彈出訊息框。。。可是卻什麼也攔不到。。。隨後我又試了有關攔截訊息框和對話方塊的幾個常用斷點,包括messageboxexa、messageboxindirecta、dialogbox等。。。都是一無所獲。。。正在納悶時,我突然想起:這不是VB程式嗎?VB程式不是有幾個專用斷點的嘛。。。想到這裡,我立即撥出Softice,設斷:bpx  msvbvm60!rtcmsgbox按下“新增”,沒有攔住,但是當我再次按下“新增”時。。。程式被擋,bc*  ...當我企圖按F12回到程式的領空時,“當!”。。。“已經超過主機上限,禁止新增!”。。。。不過別急,此時你按下對話方塊上的確定鍵後又自動回到了Softice的控制之中。。。按CTRL+向上箭頭。。。回到了下面的地方:
。。。。。。。
0167:004109E9  LEA      EAX,[EBP-4C]                                       
0167:004109EC  PUSH      EDX                                                 
0167:004109ED  PUSH      EAX                                                   
0167:004109EE  LEA      ECX,[EBP-3C]                                         
0167:004109F1  PUSH      30                                                   
0167:004109F3  PUSH      ECX                                                   
0167:004109F4  CALL      [MSVBVM60!rtcMsgBox]                  注意這裡!  “已經超過主機上限,
0167:004109FA  LEA      EDX,[EBP-6C]                                                                  禁止新增!”                     
  0167:004109FD  LEA      EAX,[EBP-5C]                                       
0167:00410A00  PUSH      EDX                                               
。。。。。。。
呵呵,真是天助。這裡正是我想找的地方。。。 0167:004109F4  CALL      [MSVBVM60!rtcMsgBox] 這裡就是彈出限制提示的地方,現在要做的就是找到呼叫這段子程式的地方,然後。。。呵呵。。。
        6、用w32dasmgold開啟程式檔案,使用轉到程式碼位置功能,來到004109F4的地方。
。。。。。。。。。。。。
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00410470(C)                                                                        <------------------看看是誰呼叫了我???
|

* Reference To: MSVBVM60.__vbaVarDup, Ord:0000h
                                  |
:00410988 8B3558114000            mov esi, dword ptr [00401158]
:0041098E B904000280              mov ecx, 80020004
:00410993 894D9C                  mov dword ptr [ebp-64], ecx
:00410996 B80A000000              mov eax, 0000000A
:0041099B 894DAC                  mov dword ptr [ebp-54], ecx
:0041099E 8D9544FFFFFF            lea edx, dword ptr [ebp+FFFFFF44]
:004109A4 8D4DB4                  lea ecx, dword ptr [ebp-4C]
:004109A7 894594                  mov dword ptr [ebp-6C], eax
:004109AA 8945A4                  mov dword ptr [ebp-5C], eax

。。。。。。。。。。。。
* Reference To: MSVBVM60.rtcMsgBox, Ord:0253h
                                  |
:004109F4 FF1574104000            Call dword ptr [00401074]-------------------就這裡了,nop掉不會彈出。
:004109FA 8D5594                  lea edx, dword ptr [ebp-6C]                              但解決不了問題。
:004109FD 8D45A4                  lea eax, dword ptr [ebp-5C]
:00410A00 52                      push edx
:00410A01 8D4DB4                  lea ecx, dword ptr [ebp-4C]
:00410A04 50                      push eax
:00410A05 8D55C4                  lea edx, dword ptr [ebp-3C]
:00410A08 51                      push ecx
:00410A09 52                      push edx
:00410A0A 6A04                    push 00000004
。。。。。。。。。。。。。。
跳到004109F4後,再使用查詢文字功能,向上查詢00410470,就來到了呼叫這段子程式的地方:
。。。。。。。。
* Reference To: MSVBVM60.__vbaFreeObj, Ord:0000h
                                  |
:00410467 FF1594114000            Call dword ptr [00401194]
:0041046D 663BF3                  cmp si, bx        <-----------------程式文字框內資訊的行數是否等於10
:00410470 0F8412050000            je 00410988 <-----------------等於則彈出限制提示。
看來這裡就是關鍵之處了,馬上用hiew開啟程式檔案,改00410470 0F8412050000  je  00410988
為00410470 0F8012050000  j0  00410988 (為什麼要將上面的00410470 0F8412050000改為00410470 0F8012050000而不是00410470 0F8512050000或是nop掉呢?這裡有幾個小問題,1、如果改為00410470 0F8512050000,即文字行數不等於10則跳轉到彈出限制的地方,那麼如果程式文字框的IPf地址的行數只要小於或不等於10行都要報錯。2、如果改為nop,那麼要好多90,並且這樣改的話肯定出錯,為什麼出錯我也不知道,請高手指點。3、改為00410470 0F8012050000呢?即溢位轉移。也許朋友們會問了,這不是風馬牛不相關嗎?是啊,笨人想笨辦法嘛。。。這裡就是要讓它不相關,讓它永遠都不可能轉到004109F4 FF1574104000  Call dword ptr [00401074]的地方去),按F9存檔。開啟程式試執行,按下新增主機按鈕,已經不會彈出“已經超過主機上限,禁止新增!”的提示了,不過先別高興的太早,當你往彈出的輸入框裡隨便輸入IP地址按確定時,你會發現,雖然程式沒有報錯,但文字框中的IP地址行數還是10行,仍然不能新增。此程式的破解工作一度陷入殭屍,哦不,僵局。
        7、又經過了一番思索,想到了一此東西:程式檢驗行數是否已經達到十行,如果到了你還要新增的話則先彈出錯誤提示框,然後不進行操作。想到這裡,立即對可能的情況作了一些模擬,其中最有可能的情況VB簡單模擬應該是:
Dim      b
b=文字框中使用者實際新增的文字行數
Private Sub 新增按鈕_Click()
if  b=10 then  ' 判斷是否達到上限10
msgbox" 已經超過主機上限,禁止新增!"
exit sub  '什麼也不做
else
b=b+1'這裡是代替一下,意思是允許向文字框繼續寫入IP地址,具體實現與本案無關
end  if
End Sub
分析:假如真是這樣的話,那麼在程式作出判斷時是一定會產生記憶體拷貝動作的。。。
          8、開啟主程式,點選新增按鈕,輸入任意IP,然後按CTRL+D撥出Softice,下萬能斷點 bpx  hmemcpy-----F5-------單擊確定。程式馬上被攔,我不知耐心地按了多少次F12後來到了下面的地方(即程式領空):
。。。。。。。。。。。。。。。
0167:00410507  PUSH      EDX                                                 
0167:00410508  LEA      ECX,[EBP-3C]                                       
0167:0041050B  PUSH      EAX                                                   
0167:0041050C  PUSH      ECX                                                   
0167:0041050D  CALL      [MSVBVM60!rtcInputBox]                               
0167:00410513  MOV      ESI,[MSVBVM60!__vbaStrMove]                           
0167:00410519  MOV      EDX,EAX                                               
0167:0041051B  LEA      ECX,[EBP-18]                                         
0167:0041051E  CALL      ESI                                                 
。。。。。。。。。。。。。。
          9、一路F10一路看。。。不知不覺走了下來,突然我眼前一亮,不就是這裡嗎?
。。。。。。。。。。。。。
  0167:004105BD  LEA      ECX,[EBP-28]                                          ^
0167:004105C0  MOV      [EBP-011C],AX                                        ^
0167:004105C7  CALL      [MSVBVM60!__vbaFreeObj]                               
0167:004105CD  CMP      WORD PTR [EBP-011C],00                               
0167:004105D5    JE          004108B0                                <----------注意這裡,和我剛才的模擬剛好一樣。
  0167:004105DB  LEA      EDX,[EBP-00AC]                                       
0167:004105E1  LEA      ECX,[EBP-3C]                                         
0167:004105E4  MOV      DWORD PTR [EBP-00A4],00407FC4                         
0167:004105EE  MOV      DWORD PTR [EBP-00AC],00000008                        v
0167:004105F8  CALL      EBX   
。。。。。。。。。。。。。。           
不用多說了吧。。。馬上用hiew開啟程式檔案,改  0167:004105D5    JO    004108B0  這裡也是和前面一樣,只能將等於轉移改為溢位轉移即將0F84D5020000 改為0F80D5020000 。
看來這個推斷來八九不離十。。。呵呵。。。
          10、整個世界清靜了。。。不信你試試。
          11、總結:經過此次破解經過,得出了以下結論:只要解得其法,VB程式就一點也不可怕 :)
          12、謝謝觀看
哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪THE  END哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪
~~~~~~~~~~~~~~~~~~~~~~~~~~轉載請保持完整性~~~~~~~~~~~~~~~~~~~~~~
作者:飛龍狗狗          email:bluearc_arc@hotmail.com            QQ:40116000
主頁:http://www.bleuarc.net

相關文章