坑啊坑,十一七天却只能有两天时间用来搞程序,苦逼了高三狗。。。

这几天搞的放在 https://github.com/Mighten/Win32-Drivers/tree/master/MSR

主题:获取更加详细的处理器信息

实现:使用NT驱动程序在Ring 0权限上运行“读MSR”(RDMSR)指令。

想法来源: 最初是来自看完张帆写的书的IO控制(DeviceIoControl)那一章节后手痒,想做个东西练练手,后来一个偶然的机会看到邓志大叔x86/x64那本详细介绍处理器架构的书里面有介绍通过读写MSR获取更加详细的处理器信息。

开始日期:               2015年08月28日 下午05时33分

中间的测试版本:    2015年10月02日 下午01时43分

总的来说呢,还是比较不简单的,也有了一些心得,分享一下:

1.  考虑到一个基本的现实问题,人不可能什么不干连续40多小时写程序,还是分模块写好,每一个测试稳定的模块组装在一起就是一个比较稳定的大块头。。。千万别像我这样急于求成最后搞得“吃不了兜着走”

2.  由于RDMSR指令需要的参数放在寄存器里面,所以只能用C/C++内联汇编的语法,而内联汇编最重要的一部分是把寄存器里面的数值通过变量读写保存下来。

MOV   寄存器名, [指针变量]

这种格式很容易误导人,因为看上去是对的,但实际上微软的编译器偏爱于解释为

MOV   寄存器名, 指针变量内部的值

而不是指针变量存储的值所指向的单元。

就是在这段代码,特别是在操作指针变量的时候,,,,走了很多弯路,后来个人弱弱地提出一种较为低级的解决办法: 现用LEA指令吧:

LEA     EAX,  指针变量名称
MOV    ESI,  [EAX]
MOV    EAX, [ESI]

这样就取到了指针变量所指向单元内部的数值且存入了EAX寄存器。

3.  不管做什么,不管希望多么渺茫,只要肯伏下身子去一点点有耐心地去做,最后肯定希望越来越大。

4.  可能影响系统稳定性的指令一定要谨慎,最好先注释掉,模拟其返回值,等待测试稳定后再脱掉注释符。这几天测试很幸运的是,没有因为这个问题让我的机器"蓝屏死机"(术语BSOD)

这个东西虽说完成了测试版,但离着能拿出台面还远呢,

1.    只是模拟了RDMSR的返回值,还没有脱去注释符,

2.    对MSR这一庞大的家伙所知甚少,不敢轻举妄动,还没有正八经地用实际的MSR地址(索引值,可能会更好理解)测试一番,也就是说,这个版本只是个“意淫版”

3.    MSR在具体处理机上实现方式很不一样,要CPUID等指令的辅助才可真枪实弹地干一架,比如AMD与Intel部分实现方式很不一样,而且同一品牌的新旧版本还要判断, 在外部调用时要完成检测工作——这,其实是一个体力活 。

4.   前边我做的一个用DLL封装的对CPUID操作现在可能要用到,但是那个DLL是在我所知甚少的情况下做的,概念性的错误很多,需要重新查阅Intel与AMD两家巨头的开发人员文档增补修改。。

————最后我的目标是,把那个DLL与这个SYS整合成一个比较综合的模块,名称仍为“处理器的功能检测与信息获取”

我不知道以后有什么更大的难题等待我去解决,或许超乎我的想想,也许小菜一碟,但不管怎样,客观上来说,只要我不轻易放弃,那一定是我一个千载难逢的成长与成熟的机会

2015年十一期间小结相关推荐

  1. 十一期间的加班费怎么算 ?

    如果,你刚好,运气不错,在十一期间,被安排了加班 .别错过 合法的 3倍工资的权益 . 别傻乎乎的,安排1v1后续调休 ... 如下,是发在星球的内容,同步一份给你 . 十一假期,愉快(开心玩耍.开心 ...

  2. 2015年11月小结

    2015年11月最后一天,忙碌的一个月... 这个月加班赶项目,开发平板APP,学习了HBuider开发APP ,更加完善了自己的知识体系. 这个月,利用周末时间跑了三个咕咚线上半马,跑步155公里, ...

  3. [网络应用]十一期间论坛开放注册活动汇总

    开放(注册)篇: 闪电联盟 [打造专业的技术资讯论坛] 10月1日-8日论坛不定时开放注册,每次开放5至30分钟不等. 另外值得一提的是"打工插件"工资调整到30DH(原15DH) ...

  4. “十一”期间支付系统也“休假”

    银行网点.网银暂停跨行转账汇款,银联.第三方支付不受影响 (记者芦瑞)要汇款.要还信用卡的国庆放假前要抓紧办理了.国庆长假期间,各银行业金融机构在央行的组织下,对目前运行的大额实时支付系统.小额批量支 ...

  5. 三星Note8海外销量创纪录 国内销量有望“十一”期间爆发

    9月13日,手机巨头三星发布了下半年旗舰三星Galaxy Note8国行版,这是继8月23日三星在美国纽约举办Galaxy Note8全球发布会之后,又一次专门面向中国市场的诚意之举. 事实也表明,三 ...

  6. 十一期间 极品飞车13:变速 通关了

    特意存的极品飞车13 99%的存档,只要贏了世界巡回赛最后一关,你可以看到通关的画面了. 游戏截图

  7. 电视行业迎来市场“拐点” TCL曲面电视表现最为抢眼

    十一刚过,刚刚经历了硝烟的电视厂商们正迫不及待盘点战果. 奥维云网(AVC)大数据此前预计,2015年十一期间15W39-15W41(9.21-10.11)彩电市场零售量将达487万台,同比下降3.5 ...

  8. 回顾2015年发生的知识产权十大热点案件

    2015年知识产权之争如火如荼:搜狗.百度输入法专利之争刷新我国专利诉讼索赔额纪录,互联网巨头争夺市场"蛋糕"的较量愈来愈烈:国家发改委对美国高通公司开出巨额罚单,为标准必要专利权 ...

  9. 用Python偷偷告诉你十一假期8亿人都去哪儿浪?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 " 祖国 70 周年的华诞一天天临近,各行各业都在为祖国 ...

最新文章

  1. java的static关键字
  2. 深圳杯---垃圾焚烧厂的经济补偿问题
  3. sql insert and update
  4. 深入浅出时序数据库之预处理篇——批处理和流处理,用户可定制,但目前流行influxdb没有做...
  5. springmvc jsp页面提交表单乱码
  6. jointable 能加多个字段吗_Excel函数Countif、Countifs超级实用技巧,你真的都掌握吗?...
  7. Java多线程(六)之Deque与LinkedBlockingDeque深入分析
  8. 实战Cisco路由器交换机各型号密码恢复
  9. QQ春节游园会被拆开11.2亿个福袋 近一半都被00后给拆了
  10. Postfix:邮件系统常见错误代码解释
  11. 如何构建数据指标体系?
  12. 深度学习9-tensorboard
  13. STM(Software Transactional Memory Systems)是什么 怎么用
  14. 小程序源码:最新掌上题库微信小程序源码下载,修复登录接口,支持在线考试,自定义导入考题
  15. C#RSACryptoServiceProvider加密
  16. EDIFACT 标准
  17. 《颠覆我认知的30篇文章 》阅读笔记(一)
  18. 市场调研报告-全球与中国云产品生命周期管理(PLM)软件市场现状及未来发展趋势
  19. 吴裕雄--天生自然 诗经:鹊踏枝·谁道闲情抛弃久
  20. 两个各四只青蛙过河java_Java实现 LeetCode 403 青蛙过河

热门文章

  1. pinpoint原理 APM应用性能管理 性能损失
  2. TN2413: 应用内购(In-App Purchase)常见问题
  3. php curl 大量 502_php 502 bad gateway的解决方案
  4. vs2017下载教程 c语言,Visual Studio 2017安装和使用教程(详细)
  5. 现在的00后,真是不要命了?
  6. Linux的基本学习(十三)——进程管理(上)
  7. hadoop2.x下Yarn详解
  8. 利用工具对百度网盘的群组、好友进行管理,批量分享文件
  9. Kotlin学习之ListView
  10. html视频和音频标签