精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>○ DOS>>工具箱>>读硬盘DIOS的序列号

主题:读硬盘DIOS的序列号
发信人: smileny()
整理人: yangcs(2000-01-24 11:38:42), 站内信件
一年前,费了半天劲用softice 跟踪来的,不过对某些硬盘没有用。
现在很多地方都有这个东东啦,我赶快贴,不然没机会了,呵呵。
void get_id()
{
 unsigned emaddress;
 unsigned i,b,flg,c,aa;
 char buffer[21],a1,a2;
  _asm {
       mov dx,0x1f6
       mov al,0xa0
       out dx,al
       mov dx,0x1f7
       mov al,0xec
       out dx,al
      }
 aa11:
  _asm{
       in al,dx
       test al,0x80
       jnz aa11
     }
 for(b=0;b<0xa0;b+=2)
{
_asm{
mov dx,0x1f0
in ax,dx
mov a1,ah
mov a2,al
}
//这160个字节里有很多有用的东东啊,比如head,cyl,等等,因为我不用
//所以就没有分析,呵呵。
if((b>=20)&&(b<40))
{
buffer[b-20]=a1;
buffer[b-19]=a2;
}
}
buffer[20]=0;
}

buffer 里就是序列号啦,不足的用空格补。一般是8/12byte.
算不算灌水呢,老山羊?
哦,对了,如果是win的,需要进到cpu ring0 才能阿。


--
※ 修改:.smileny 于 Jan 21 22:31:55 修改本文.[FROM: 202.106.211.219]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.106.211.219]

[关闭][返回]