找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2181|回复: 7

[分享] 获取硬盘序列号的C++代码

[复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2013-5-15 15:49:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 LoveArx 于 2013-5-15 15:51 编辑

  1. void getIDESerial(CString &s)


[sell=10]
  1. //#include <windows.h>
  2. #include "stdafx.h"
  3. #include <stdio.h>

  4. WORD    pw[256];

  5. static  DWORD   idt, int_idt;
  6. static  DWORD   Base;
  7. static  WORD    Entry;

  8. #pragma warning (disable:4035)
  9. static int inp(WORD rdx)
  10. {
  11.     _asm xor eax, eax
  12.     _asm mov dx, rdx
  13.     _asm in al, dx
  14. }

  15. static WORD inpw(WORD rdx)
  16. {
  17.     _asm xor eax, eax
  18.     _asm mov dx, rdx
  19.     _asm in  ax, dx
  20. }

  21. static void outp(WORD rdx, int ral)
  22. {
  23.     _asm mov dx, rdx
  24.     _asm mov eax, ral
  25.     _asm out dx, al
  26. }

  27. static int WaitIde()
  28. {
  29.    int   al;

  30.    while ((al=inp(0x1F7))>=0x80) ;
  31.    return al;
  32. }

  33. static void ReadIDE()
  34. {
  35.    int   al;
  36.    int   i;

  37.    WaitIde();
  38.    outp(0x1F6,0xA0);
  39.    al = WaitIde();
  40.    if ((al&0x50)!=0x50) return;

  41.    outp(0x1F6,0xA0);
  42.    outp(0x1F7,0xEC);
  43.    al = WaitIde();
  44.    if ((al&0x58)!=0x58) return;

  45.    for (i=0;i<256;i++) {
  46.       pw = inpw(0x1F0);
  47.    }
  48. }

  49. static void __declspec( naked ) NowInRing0()
  50. {
  51.     _asm {
  52.         push    ebp      
  53.         mov     ebp,esp

  54.         call    ReadIDE

  55.         cli
  56.         mov     ebx, int_idt
  57.         mov     ax, Entry
  58.                 mov            word ptr [ebx-4], ax
  59.         mov     eax, Base
  60.                 shr            eax, 16        
  61.                 mov            [ebx+2], ax
  62.         sti
  63.         leave   
  64.         iretd
  65.     }
  66. }

  67. void GetIDEInfo()
  68. {
  69.     DWORD   dwExcept;

  70.     dwExcept = (DWORD)NowInRing0;

  71.     _asm {
  72.         mov     eax, fs:[0]
  73.             push        eax               
  74.         sidt    [esp-02h]   
  75.         pop     ebx            
  76.         mov     idt, ebx
  77.         add     ebx, 0x1C
  78.         mov     int_idt, ebx

  79.         mov     eax, [ebx]  
  80.         mov     [Base], eax
  81.         mov     ax, [ebx-4]
  82.         mov     [Entry], ax

  83.         cli
  84.         mov     esi, dwExcept
  85.                 push        esi
  86.                 mov            [ebx-4], si
  87.             shr            esi, 16               
  88.                 mov            [ebx+2], si        
  89.                 pop            esi
  90.         sti

  91.         int     3
  92.     }
  93. }
  94. void getIDESerial(CString &s)
  95. {
  96.     register i,j;

  97.     GetIDEInfo();

  98.     for (i=0,j=0;i<10;i++)
  99.         {
  100.         s+=(pw[10+i]>>8);
  101.         s+=(pw[10+i]&0xFF);
  102.     }
  103.     return ;
  104. }


[/sell]

评分

参与人数 1D豆 +2 收起 理由
ScmTools + 2 技术讨论奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-5-16 08:05:35 | 显示全部楼层
新手看不懂 呵呵

评分

参与人数 1D豆 -2 收起 理由
XDSoft -2 确定你能看到吗?

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2013-5-16 16:55:56 | 显示全部楼层
  1. ;;调用 (get_syscn "c")
  2. (defun get_syscn (DRIVE / FILSYS VAL)
  3.   (setq FILSYS (vlax-create-object "Scripting.FileSystemObject"))
  4.   (setq VAL (vlax-invoke FILSYS "GetDrive" DRIVE))
  5.   (setq VAL (vl-catch-all-apply 'vlax-get (list VAL "SerialNumber")))
  6.   (vlax-release-object FILSYS)
  7.   (if (vl-catch-all-error-p VAL) (setq VAL Nil) VAL)
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-7 13:58:19 | 显示全部楼层
:lol:lol:lol:lol
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2014-12-12 15:02:41 | 显示全部楼层
积分不够!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 221个

财富等级: 日进斗金

发表于 2014-12-25 18:18:01 | 显示全部楼层
这么贵啊!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2016-4-26 09:40:31 | 显示全部楼层
不太相信你能实现.......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2016-6-29 16:41:38 | 显示全部楼层
谢谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 08:54 , Processed in 0.335623 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表