• 标 题:一分钟破除PubWin4密码----网吧无阻!
  • 作 者:freemouse
  • 时 间:004-08-01,15:03
  • 链 接:http://bbs.pediy.com

现在的网吧,大部分都安装了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
   最后,希望大家不要利用这种方法在网吧中破坏,或者“免费上网”,如果这样造成的后果自负哦!