CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

如何在windows下破解CMOS密码

楼主qifa(DoItNow)2006-01-03 18:22:31 在 C/C++ / C语言 提问

如题  
  我用C写的破解CMOS密码的小工具,为什么在windows下执行无效,在DOS下却可以?  
  有什么解决的办法? 问题点数:50、回复次数:30Top

1 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2006-01-03 19:14:11 得分 0

没有做过~~  
  帮顶一下~~~Top

2 楼qifa(DoItNow)回复于 2006-01-03 20:57:27 得分 0

顶一下Top

3 楼eleek(宿迁人自己的社区(www.sqren.cn))回复于 2006-01-03 21:14:20 得分 0

能看看代码嘛?Top

4 楼libotudou(土豆)回复于 2006-01-03 21:28:52 得分 0

就是,看看源码,学习一下。  
  :)Top

5 楼FindFullMoon(寻找自己)回复于 2006-01-03 21:40:42 得分 5

是不是因为WIN32的保护模式呀  
  DOS程序在WINDOWS   2000以上的机器上应该都是系统用类似虚拟的方式支持的  
  所以支持得也是相当有限的  
  不能运行我想也是可以理解的吧?Top

6 楼yzx1983(捕风捉影)回复于 2006-01-04 09:26:59 得分 5

当然,访问cmos空间需要有访问物理地址的权限。  
  dos下没有任何的内存保护机制,你可以任意访问你想要访问的地址  
  但是windows自95之后就是32位的操作系统,用上了cpu的优先级保护,你的代码访问的地址不过是系统虚拟出来的线性地址,不是真正的物理地址,因此你在dos下有效的程序放到xp里,不但不能达到效果,十有八九还会出一堆访存违例的错误提示。Top

7 楼DiabloWalkOnTheEarth(我想到个绝妙的昵称,只是地方太小,写不下)回复于 2006-01-04 09:42:38 得分 0

用户态就不要想读写70,71端口鸟,   在95/98下应该还可以.   在NT/2K/XP下都是IO敏感指令,   会GP地.   找个端口读写的驱动装上就可以了,   实在找不到就自己写个小驱动搞这种无聊的东西   ...Top

8 楼cyberHunK(→迈克·老猫←)回复于 2006-01-04 10:53:07 得分 0

方法很多!  
   
  最直接简单的是放电,把主板COMS电池卸下来短接一下电池插座的两个弹簧叉!不过这都是以前的方法,现在主板上应该直接给跳线的,看下说明书!  
   
  再就是可以把71、70的端口给冲掉!不过这种方法,我在98之后就没有使用过!现在的操作系统应该带有保护!  
   
  具体实现方法:  
   
  c:\debug  
  -o   70   21  
  -o   71   20  
  -qTop

9 楼cyberHunK(→迈克·老猫←)回复于 2006-01-04 10:55:37 得分 0

我用C写的破解CMOS密码的小工具,为什么在windows下执行无效,在DOS下却可以?  
  /////////////////////////////////////////////////////////////  
  我倒!原来要问的是这个!  
  楼主肯定是冲71、70这个端口了!要是不行,就别想了,现在的操作系统不跟以前了!Top

10 楼fiftymetre(50米深蓝)回复于 2006-01-04 11:16:54 得分 0

当系统自检完毕,准备引导Windows时按下(P8)键,选择“Safe   mode   command   prompt   only”(安全命令模式),在DOS状态下(也可在Windows95的DOS下),键入以下命令:    
        c:>copy   con   cmos.com    
        然后进入编辑状态,一手按住[Alt]键,另一只手在小键盘(按键盘上面那—排数字键是没有作用的)上敲击下列数字串,再同时抬起双手,如此反复:179,55,136,216,   230,112,176,32,230,113,254,195,128,251,64,117,241,195。输入过程中,每松开一次[Alt]键屏幕上都会出现一个乱字符,不必管它。完成后,再按[Ctrl+Z]或[F6]键保存,得到一个新的程序Cmos.com。    
        直接运行Yk.com这个文件,屏幕上应该没有任何提示信息,然后重新启动计算机即可清除CMOS里的密码。当然,CMOS里的其他设置也会同时被清除,这就需要重新设置了。    
        可以用“Type   Corm.com”命令显示文件内容,显示的内容应为ASCII码Top

11 楼yzx1983(捕风捉影)回复于 2006-01-04 11:22:37 得分 0

50m   回帖不看贴……Top

12 楼iamcaicainiao(老菜,长征)回复于 2006-01-04 11:25:46 得分 0

进入安全模式,运行你的程序看看。Top

13 楼jsjjms(专心研究嵌入式)回复于 2006-01-04 11:45:29 得分 0

直接放电就可以,dos和windows运行的模式可能不一样.Top

14 楼yzx1983(捕风捉影)回复于 2006-01-04 12:01:39 得分 5

晕了,想起一个问题,楼主你不会是把dos下编好的exe直接在windows下运行了吧?那样是在windows虚拟出来的一个16位系统中跑的,更加不着边际了。Top

15 楼qinxiaolin(绝口不提爱你)回复于 2006-01-05 11:08:35 得分 5

你先用一个软盘做一个dos启动盘,然后拷贝一个masm   里的debug   到这个软盘里面  
  !  
   
  按下面的方法操作:  
  cmos中数据的访问是通过端口70H和71H实现的,70H是一个字节的地址端口,用来设置cmos中数据的地址。  
  71H是用来读写端口70H设置的对应单元的数据的。。  
   
  方法:  
  进入debug  
  直接输入:  
  o   70   10  
  o   70   10  
  或者  
  o   70   16  
  o   71   16  
  或者  
  o   70   10  
  o   71   ff  
  最后用q退出debug  
  重启计算机,按del不用密码进入cmos.    
   
  上面的3个东西你逐个试试看,我以前用过的!好用的!  
  Top

16 楼qifa(DoItNow)回复于 2006-01-05 20:11:46 得分 0

C程序是用TC编译的,在windows下确实可以运行,也确实可以读取出一部分数据,(至少读出来的日期和时间是对的),不过后面的数据似乎就不太正确了,把汇编代码嵌入到VC当中运行就出问题,说是什么权限指令之类的,  
  ====================  
    DiabloWalkOnTheEarth(WorldOfWg(   狗城是个烂代理   ))   (   )   说:找个端口读写的驱动装上,要什么样的端口读写驱动?  
  =========================  
  下面是在TC下的读CMOS数据的代码:  
  for(i=0;i<MAX_CMOS_SIZE;i++)  
  {  
  outportb(0x70,i);  
  buf[i]=inportb(0x71);  
  }Top

17 楼qifa(DoItNow)回复于 2006-01-06 16:52:09 得分 0

顶一下Top

18 楼yzx1983(捕风捉影)回复于 2006-01-06 17:12:30 得分 0

用tc编好的程序只会是16位的,windows为了兼容dos下的应用程序,虚拟出了一个“16位操作系统”,你的程序只是在这个虚拟的系统下运行的,无法操作真正的端口,读出来的cmos数据显然也是window为你准备好的,不是真的cmos数据。Top

19 楼qifa(DoItNow)回复于 2006-01-07 14:27:31 得分 0

看来是不能在windows下读取了,谢谢各位了Top

20 楼yzx1983(捕风捉影)回复于 2006-01-07 15:59:34 得分 0

当然不是完全没有办法,你所需要的仅仅是获取ring0级权限。  
  有兴趣的话可以研究一下臭名昭著的CIH病毒的代码。  
  比较正统的方法是编写驱动。Top

21 楼qifa(DoItNow)回复于 2006-01-07 17:24:16 得分 0

========================  
  当然不是完全没有办法,你所需要的仅仅是获取ring0级权限。  
  有兴趣的话可以研究一下臭名昭著的CIH病毒的代码。  
  比较正统的方法是编写驱动。  
  ========================  
  驱动我不怎么会写啊,你能说说具体的实现过程吗?大概讲述一下即可Top

22 楼JIABAOYU111()回复于 2006-01-07 19:23:17 得分 0

xdncgbm,Top

23 楼qifa(DoItNow)回复于 2006-01-07 23:54:51 得分 0

=============JIABAOYU111()===========  
  xdncgbm,-  
  ===============\  
  什么东东??  
  Top

24 楼mostideal(三甲)回复于 2006-01-08 10:51:59 得分 0

楼上有好多办法应该都可行的.  
  upTop

25 楼soft_2008(冬天到了,春天还远吗?)回复于 2006-01-08 12:33:22 得分 0

hehe...................  
  用C调用DEBUG,传入  
  c:\debug  
  -o   70   21  
  -o   71   20  
  -q  
  或者索性写成ASM  
   
  Top

26 楼Kenmark(fenix)回复于 2006-01-08 17:03:49 得分 5

 
  #include   <stdio.h>    
  #include   <dos.h>    
  #include   <conio.h>    
   
  main()    
  {    
  int   i;    
  char   result;    
  char   temp=0;  
  printf("The   award   bios   password   is:");    
  outportb(0x70,0x1d);    
  result=inportb(0x71);    
   
  for(i=6;i>=0;i-=2)    
  {    
  temp=result;    
  temp>>=i;    
  temp=temp&0x03;    
  printf("%d",temp);    
  }    
  outportb(0x70,0x1c);    
  result=inportb(0x71);    
   
  for(i=6;i>=0;i-=2)    
  {    
  temp=result;    
  temp>>=i;    
  temp=temp&0x03;    
  printf("%d",temp);    
  }    
  return   0;    
  }    
  屏幕输出的就是密码Top

27 楼darwin001(天下无钱)回复于 2006-01-08 18:25:30 得分 0

楼上的程序,通不过。  
  --------------------Configuration:   1   -   Win32   Debug--------------------  
  Compiling...  
  1.cpp  
  E:\Works\1.cpp(25)   :   error   C2065:   'outportb'   :   undeclared   identifier  
  E:\Works\1.cpp(26)   :   error   C2065:   'inportb'   :   undeclared   identifier  
  Error   executing   cl.exe.  
   
  1.obj   -   2   error(s),   0   warning(s)  
  Top

28 楼qifa(DoItNow)回复于 2006-01-09 16:48:15 得分 0

=====================  
  晕~~,这些都是在DOS下用的,我都会了  
  我要的是能在windows下的实现啊  
  =====================  
  ==   darwin001(天下无钱)==  
  outportb()和inportb()是TC的库函数  
  在VC下是_outp()和_inp()【conio.h】,注:只是为了兼容windows95的而保留的,  
  在NT系统运行会出错!  
  /////////////////////////////////  
    DiabloWalkOnTheEarth(WorldOfWg)说要用驱动实现,不知道是怎么弄的?Top

29 楼DiabloWalkOnTheEarth(我想到个绝妙的昵称,只是地方太小,写不下)回复于 2006-01-09 17:20:11 得分 25

WIN   下的驱动都一个模子印出来的,   你随便找个驱动改改就是,   RW   例程就不用了,   就写个   IOCTL   例程,   实现两个IOCTL   ,   一个   READ_PORT   ,   一个   WRITE_PORT   .   在驱动里,如果你   RP   比较好就调   READ_PORT_UCHAR   ,   WRITE_PORT_UCHAR   ,   如果觉得不爽就直接嵌汇编   in   ,   out   就是.  
        然后写一个   ring3   的程序,   CreateFile   打开你的驱动,   就调   DeviceIoControl   读写端口就是.Top

30 楼qifa(DoItNow)回复于 2006-01-24 18:02:40 得分 0

多谢:  
  DiabloWalkOnTheEarth(WorldOfWg(   狗城是个烂代理   ))   (   )    
  呵呵,搞定了Top

相关问题

  • 如何破解cmos密码
  • CMOS密码破解全攻略
  • 关于破解和清除CMOS密码,WINDOS密码
  • 如何破解windows's *.pwl密码??
  • 如何破解Windows 2000 Advanced Server 密码?
  • 破解Windows nt4 超级用户密码
  • 破解密码!!
  • 密码破解?
  • 所有主板的cmos密码都可以用asm破解吗?
  • 2000下怎么消除cmos密码,或者破解

关键词

  • win32
  • windows
  • 端口
  • 驱动
  • 密码
  • 破解
  • 代码
  • 数据
  • 操作系统
  • 虚拟

得分解答快速导航

  • 帖主:qifa
  • FindFullMoon
  • yzx1983
  • yzx1983
  • qinxiaolin
  • Kenmark
  • DiabloWalkOnTheEarth

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo