欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

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

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

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哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪
~~~~~~~~~~~~~~~~~~~~~~~~~~转载请保持完整性~~~~~~~~~~~~~~~~~~~~~~
         
主页:http://www.bleuarc.net

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功