sudami对初学者的一点建议

1. 若对Windows底层开发没有兴趣,不建议继续深究, 若有些兴趣可以继续。

2. 先广泛打基础,比如C/ASM/C++/MFC,再学习Windows核心编程,对R3上的一些开发有所熟悉,再系统的学习《操作系统》等书籍,理解整个系统的原理,构架,实现。

3. 有了以上基础,可以开始阅读一些驱动入门书籍,如《Windows内核情景分析》, 多上Google搜索资料,下一份WRK/ReactOS,没事翻一翻,搭好驱动编译环境后,可以尝试写些小驱动,在蓝屏中摸索总结,从而积累初级的经验。

4. 等成了驱动开发初级工后,可开始学习Windbg,IDA的使用,多看源码多F1看帮助文档。

5. 等熟练以上工具后,开始Windbg动态调试,IDA静态逆向其他驱动(包括微软自己的)。 在这一过程中,你又会接触到脚本语言,汇编知识点,Intel手册,加密解密,Vmware等一堆的东西,同样你需要熟悉它们。

6. 等你熟悉以上东西后,可以给自己提些需求,并实现该需求,比如写个小型ARK,在这个过程中,你可以切实感受到开发一个程序是一个系统的东西,你又需要回到R3写界面,重温MFC,WTL等设计与使用。当然又要写驱动程序,保证兼容性等问题,这个过程是漫长的,期间你会发现写一小部分功能,你可以扩展收获很多知识点。

7. 等你熟悉以上东西后,已经可以自己独立解决问题了,基本不需要到网上求助。

遇到问题,会利用WRK/Windbg/IDA/Google等方式自行搞定,如网上有现成的解决方法,借用之,取其精华,唾其糟粕。 若网上没有现成的,则需要你IDA系统文件,Load pdb;Windbg动态调试内核等手段自行挖掘,若网上只有类似的程序,你可以逆向其关键部分参考之,而后变成自己的东西。

8 .等你经历了以上7个阶段,你可以开始系统的了解Windows的构架,站在产品的角度思考问题,分析问题,解决问题,对自己多提需求,进而再去实现之,这阶段是积累经验的阶段。

9. 基本能够胜任大多数公司的项目需求了。

achillis的一点建议

一、充分熟悉Ring3的常用API,熟练系统编程(包括各种HOOK技巧等),各种进线程操作、文件操作、内存操作、同步操作等,都可以熟练完成,《Windows系统编程》、《Windows核心编程》是这个时期的最好参考书籍。

二、跟踪Ring3 API的调用过程,熟悉Ring3 API到Native API的过程,最佳参考资料是ReactOS源码,或直接用IDA反汇编系统DLL(大部分常用API在Kenel32.dll里),或者直接用调试器跟踪API调用。

三、熟悉Native API,使用Native API编写一定量的程序,熟悉系统调用机制和系统基本架构(所谓的架构简单理解就是调用层次,这个完全可以通过调试跟踪来熟悉),熟悉内核中API的基本调用方法,这是转向驱动编程的一个非常好的过渡,参考资料Windows2000/NT Native API大全。

四、可以开始编写最简单的驱动程序了。楚狂人的驱动入门教程非常适合这时候看。张帆的《Windows驱动程序开发技术详解》,《Rootkits–Windows内核安全防护》也是这个时期的最佳参考书籍。

五、对驱动编程有了一定的熟悉,可以继续分块(进线程比较容易上手,然后再继续文件、内存、注册表等的学习)进一步熟悉系统机制,熟练程序要达到第一阶段熟悉Ring3 API的那个程度,这个阶段可能需要相当长的时间。可参考《Windows Internals》、《Windows内核情景分析》等等。

六、对大部分系统机制比较熟悉,可以开始编写一些功能性的驱动程序。可参考《寒江独钓》。

七、这个时候,你对驱动程序的编写已经随心所欲,所完成的功能仅仅受限于你的想法。

sudami和achillis对初学者的建议相关推荐

  1. 专访Keras之父:关于深度学习、Keras的诞生和给初学者的建议

    https://mp.weixin.qq.com/s/ETHK6aakAy0uHqJGdJiSHw   新智元报道   作者:Sanyam Bhutani 编辑:肖琴 [新智元导读]本文是对Keras ...

  2. 一个牛人给Java初学者的建议(必看篇)

    给初学者之一:浅谈Java及应用学java 从不知java为何物到现在一个小小的j2ee项目经理虽说不上此道高手,大概也算有点斤两了吧每次上网,泡bbs逛论坛,没少去java相关的版 面总体感觉初学者 ...

  3. 一个牛人给java初学者的建议(很有意义,转载的)

    一个牛人给java初学者的建议(很有意义,转载的) 给初学者之一:浅谈java及应用 学java不知不觉也已经三年了 从不知java为何物到现在一个小小的j2ee项目经理 虽说不上此道高手,大概也算有 ...

  4. 一个牛人给JAVA初学者的建议。虽然岁月漫长,但仍值得等待

    给初学者之一:浅谈java及应用 学java不知不觉也已经三年了 从不知java为何物到现在一个小小的j2ee项目经理 虽说不上此道高手,大概也算有点斤两了吧 每次上网,泡bbs逛论坛,没少去java ...

  5. 正泰eplan_【万泉河】给EPLAN初学者的建议:不用宏

    首先声明,我不是EPLAN的高手,对画电气图的熟悉程度,远远不如我对PLC和WinCC的来的得心应手. 但在这里,把我个人一点点经验推荐给大家.以避免新手在初学EPLAN的时候遭遇过多的挫折,从而一次 ...

  6. 给JAVA初学者的建议(转载治phphot的一个牛人给java初学者的建议)

    给初学者之一:浅谈java及应用 学java不知不觉也已经三年了 从不知java为何物到现在一个小小的j2ee项目经理 虽说不上此道高手,大概也算有点斤两了吧 每次上网,泡bbs逛论坛,没少去java ...

  7. Java101___一个牛人给JAVA初学者的建议

    转: https://blog.csdn.net/yaya_free/article/details/79086603 给初学者之一:浅谈java及应用 学java不知不觉也已经三年了 从不知java ...

  8. 一个牛人给JAVA初学者的建议(很受用)

    给初学者之一:浅谈java及应用 学java不知不觉也已经三年了 从不知java为何物到现在一个小小的j2ee项目经理 虽说不上此道高手,大概也算有点斤两了吧 每次上网,泡bbs逛论坛,没少去java ...

  9. JAVA鸡汤------一个牛人给java初学者的建议

    给初学者之一:浅谈java及应用 学java不知不觉也已经三年了 从不知java为何物到现在一个小小的j2ee项目经理 虽说不上此道高手,大概也算有点斤两了吧 每次上网,泡bbs逛论坛,没少去java ...

最新文章

  1. 字符设备驱动程序 2
  2. 德鲁克《新企业》学习收获
  3. 昆明理工大学复试计算机试题,2012年昆明理工大学计算机考研复试试题(.PDF
  4. 独家 | 2019届互联网校招本科薪酬清单|湾区人工智能
  5. C++ 时间操作(获取毫秒级)【转】
  6. 领导公开对你有成见,关键在于是否影响公司决策
  7. Machine Learning for Communication Networks
  8. C语言知识点总结(完美版)
  9. pdf-xchange pro注册码
  10. vue:antV G2在vue中的使用(阿里图表,类似echarts)
  11. csdn博客文章头部自动生成目录
  12. 使用jib发布代码流程
  13. 【Android 教程系列第 23 篇】 java 方法之间怎么添加分割线
  14. SLAM学习 | 小觅相机的图像与IMU时间戳对齐分析
  15. Python黑客帝国代码雨
  16. fairygui绑定android,FairyGUI在Cocos2d-x下的多平台接入和lua绑定
  17. 佳能 digital photo professional直接安装方法
  18. cockroachDB学习总结
  19. android 新浪微博签名工具,Android 集成新浪微博分享及授权 (上)
  20. 95后字节八年测开晒出工资单:狠补了这个,真香···

热门文章

  1. CVE-2010-3333
  2. datatable 前台和后台数据格式
  3. [LeetCode] Remove Element
  4. VNX证书过期解决方案(2018-11-02)
  5. tableView的plain样式的headerView的上拉过程中悬停解决方法
  6. 移动端滚动穿透问题完美解决方案
  7. iscroll动态加载数据完美解决方案
  8. TextView设置文字包含中英文时自动换行问题的终极解决方案
  9. 测试类异常Manual close is not allowed over a Spring managed SqlSession
  10. Linux 中ifconfig和ip addr命令查看不到ip解决方法