我想写个简单的反病毒软件(异想天开?!),得跑在ring0特权级上,可是我对驱动一窍不通,想向高手请教我该学WDM驱动还是KDM驱动?
目前我会的语言就只有C/C++,DOS汇编/win32汇编,该用C/C++写驱动好呢,还是WIN32汇编好呢?
推荐些书吧,请高手指点我一个学习的方向,该怎么一步一步学好驱动编程?
我在http://zhidao.baidu.com/question/76879201.html和
http://zhidao.baidu.com/question/76930895.html上有提问
最佳答案我把这几百分都给你吧
你既然有写反病毒软件的能力,就不会提这样的问题了,ring0级需要KDM吧,个人感觉用汇编太累,c比较好!
KDM和WDM不是问题的重点,都只是一个模型而已,你遵照这个规范编程实现,这个没有太大的问题;
除非必要,不要用汇编,太费劲和时间,而且容易转移你学习驱动的视线,其实只要熟悉了模型,哪种语言都一样;
驱动编程的话,建议看看网上那本著名的《Programming the window driver model》,有中译本,网上搜一下吧
另外最近国内有本还不错的书,适合入门,也可一看, 《Windows驱动开发技术详解》, 张帆,史彩成等编著
你尽力了吗
自己都觉得这里的水平底的一塌糊涂,当然也包括我自己了,所以我经常也要
跑到whnet去问问题,有时候都恨自己怎么这么菜啊。
scz(四哥)说:BBS是不能真正学到东西的,
不过这里能开阔人的视野,能得到对大方向的指引,能够了 。
是的,真的是足够了,要不是scz的指引,我不会走这条路的,当时在gznet的BBS
上,我也问了好多关于unix network programming的问题,得到好多人的帮助。
后来转而学习linux kernel,来到了whnet,主要就是得到scz的帮助,我很感谢他。
我想他在教育网内是很成功的,可能带起了一群人。
自己的成长其实就是生产问题,解决问题的过程。
问题就是在自己不断的学习中产生的,你学习了吗?你努力了吗?你有问题要问吗?
自己付出了多少,就会有多大的收获,这点我有很大很大的体会。
转了这么多的技术文章,不是为了增加版面,增加人气,
完全是给有心人看的,自己要想学,想看才能学进去,看进去。
希望他们能在这里得到进阶。
转了这么多的技术文章,只是希望川大的“黑客”(暂且以黑客称之)不要误入
歧途,不要只做被人们称为的脚本小子,要做就做一个白帽(white-hat).
没人敢说自己是黑客,除非他自己知道他在说什么。所以我也没有用黑客这个词.
我做这里的斑竹的目的不是来一个人撑起一个版的,只是为了上面的几点。
今天又去了linuxforum,颇有感触,如果你也在linux kernel hack(也许你会对hack
这词误会),如果你看过linux的源代码就不会觉得奇怪了)话,
去http://www.linuxforum.net/cgi-bin/perl/postlist.pl?Cat=&Board=linuxK
感受感受真正做学问的气氛吧。
有必要大家来重温一下四哥那篇《你尽力了吗》。
看看真正高手的那份淡然吧
发信人: cloudsky (小四), 信区: Security
标 题: 你尽力了吗
发信站: 武汉白云黄鹤站 (Mon Apr 17 19:52:54 2000), 站内信件
很多人问如何入门如何入门,我却不知道要问的是入什么门。很少把某些好文章耐心
从头看完,我这次就深有体会。比如袁哥的sniffer原理,一直以为自己对sniffer原
理很清楚的,所以也就不曾仔细看过袁哥的这篇。后来有天晚上和袁哥讨论,如何通
过端口读写直接获取mac地址,为什么antisniff可以获得真正的mac地址,而不受更
改mac地址技术的影响,如何在linux下获得真正的mac地址。我一直对linux下的端口
读写心存疑虑,总觉得在保护模式下的端口都做了内存映象等等。结果袁哥问了我一
句,你仔细看我写的文章没有,我楞,最近因为要印刷月刊,我整理以前的很多文档,
被迫认真过滤它们,才发现袁哥的文章让我又有新认识。再后来整理到tt的几篇缓冲
区溢出的,尤其是上面的关于Solaris可装载内核模块,那就更觉得惭愧了。以前说
书非借不能读,现在是文章留在硬盘上却不读。其实本版已经很多经典文章了,也推
荐了不少经典书籍了,有几个好好看过呢。W.Richard.Stevens的UNP我算是认真看过
加了不少旁注,APUE就没有那么认真了,而卷II的一半认真看过,写过读书笔记,卷
III就没有看一页。道格拉斯的卷I、卷III是认真看过几遍,卷II就只断续看过。而
很多技术文章,如果搞到手了就懒得再看,却不知道这浪费了多少资源,忽略了多少
资源。BBS是真正能学到东西的地方吗?rain说不是的,我说也不是的。不过这里能开
阔人的视野,能得到对大方向的指引,足够了。我一直都希望大家从这里学到的不是
技术本身,而是学习方法和一种不再狂热的淡然。很多技术,明天就会过时,如果你
掌握的是学习方法,那你还有下一个机会,如果你掌握的仅仅是这个技术本身,你就
没有机会了。其实我对系统安全是真不懂,因为我一直都喜欢看程序写程序却不喜欢
也没有能力攻击谁谁的主机/站点。我所能在这里做的是,为大家提供一个方向,一种
让你的狂热归于淡然的说教。如果你连、< win9x系统编
程>都没有看过,却要写个什么隐藏自己的木马,搞笑。如果你看都不看汇编语
言,偏要问exploit code的原理,那我无法回答也不想回答你。总有人责问,要讨个
说法纭纭,说什么提问却没有回答。不回答已经是正确的处理方式了,至少没有回你
一句,看书去,对不对,至少没有扰乱版面让你生闷气。Unix的man手册你要都看完了,
想不会Unix都不行了。微软的MSDN、Platform SDK DOC你要看完了,你想把Win编程想
象得稍微困难点都找不到理由。还是那句话,一个程序员做到W.Richard.Stevens那个
份上,做到逝世后还能叫全世界的顶级hacker们专门著文怀念,但生前却不曾著文攻
击,想想看,那是一种什么样的境界,那是一份什么样的淡然。我们可以大肆讨论技
术问题,可以就技术问题进行激烈的卓有成效的讨论,却无意进行基础知识、资源信
息的版面重复。我刚在前面贴了一堆isbase的文章,开头就是主页标识,却在后面立
刻问什么主页在哪里?前面刚刚讨论过如何修改mac地址,后面马上又来一个,前后
相差不过3篇文章。选择沉默已经是很多朋友忍耐力的优异表现了。
很多东西都是可以举一反三的。vertex的lids,被packetstorm天天追踪更新,你要是
看了THC的那三篇,觉得理解一个就理解了一堆,都是内核模块上的手脚。你不看你怎
么知道。我不想在这里陷入具体技术问题的讨论中去,你要是觉得该做点什么了,就
自己去看自己去找。没有什么人摆什么架子,也没有什么人生来就是干这个的。你自
己问自己,尽力了吗?
有人这样学习┅
2000.09.08
自从开放《深入浅出 MFC》2/e 电子档之後,我收到很多相应来函。由於工作忙碌,鲜少针对个人回信,顶多是收集同类型的询问在侯捷网站上做总体回应。但是这封信我一定要回,仔细地回,特加鼓励地回。
> -----原始邮件-----
> 寄件者: bluefive
> 日期: 2000年8月26日 PM 01:12
>
> 候老师您好!
>
> 姓名: bluefive
> 现职: 家具雕刻
> 毕业学校科系: 没有
> 年龄: 26
> 性别: 男
> 居住省份: 马来西亚
> 对侯捷的建议:希望您选择的出版商是我这里的书店有代理的^_^
>
> 在您的 站下载了您的大作(深入浅出MFC第二版),真是令我太感动了!
> 我不是一个身在资讯界的人,本身的职业也与电脑没有接 ,可是我对程
> 式设计却很喜爱!当我第一次接触电脑时,看见那些美丽的视窗画面,心里
> 就想非常非常的好奇,这些是如何产生的?在听说这些是用(写的)!我好奇
> 心就更大了,也从此就与电脑难解难分.
>
> 可是在学习的过程中,却面对一大堆的难题!第一个难题就是我不懂英文!
> 在我学程式设计之前,我连 where, do, be, the 这些字也不会!可是我知道
> 学程式设计一定要懂英文! 所以自从我学习程式设计一年半以来,我就
> 一直很努力的自学英文,现在以能看懂 MSDN 的 Windows API 说明文件的其中
> 40到50%,希望有一天我能完全看懂.我的学历也非常低,我只读到小学而已!
> 想想在学习程式设计之前,连什 是整数,坐标也不懂!真后悔没有好好读书!
> 可是学一 语文不是一两年就能完全掌握的!因此在这段期间,只能向中文书
> 籍求救!这也汇生出第二个难题?就是缺乏中文书籍!
>
> 我是一个孤独的程式设计自学者,没有朋友可以请教,没有老师可以解答
> ,没有任何人可以帮我,唯一的老师就是书籍与 络上一些热心的 友.前者
> 对我有95%的帮助,后者有5%帮助.在我住在地方,很幸运的有一间书店有代理
> 台湾书,要买到台湾书只有那间书店而已.可是它所代理的台湾出版社也只有四
> 五家而已,程式设计的书籍也不多,C++的书籍更是难找!我真得很 慕台湾人,
> 可以有很多选择!又其当上 看见松岗,Gotop,旗标,傅硕书籍目录时,只能流口
> 水,却不能马上买到!像我这 就如您所说的,把买书排在第一位,把买衣服与及
> 其它等等的排在后面的人来说,真是太痛苦了!所以要买的话,也只有先向那间
> 书店订货,然后痴痴等!因为那间书店一年只进两次货,每次相隔大约半年以上!
> 在这半年我就只能痴痴的等!因此您的广阔心胸,开放下载《深入浅出MFC第二
> 版》,对我来说更是深具义意!不知要如何感谢您!
>
> 虽然我还没有看完,但!我觉得单是第一和第二章就已经物超所值了!把那最
> 重要的基础说清楚,又其看到那篇「一个具体而微的Win32 程式」,使我大约知道
> 一个window是如果产生的,还有那篇「虚拟函式与多型 (Polymorphism)」更是
> 把我压在一年多来的许多大问号给完全粉碎!真是太妙了!!!不像我买过的有关
> 物件导件的书籍,总是好像刻意要避开谈论,或是草草了事,有说就跟没说一样!
>
> 一图胜过千言万语!这也我非常佩服的!您的书总是会在我看到有些头晕的时
> 候─不说您的书写的让我看的头晕,而是一时间难以完全消化,就像一个饿了一
> 星期的人,一下子吃了一大堆美味的食物─这时来一张图画,这张图画就好像一片
> 消化丸一样,吃了之后就把之前的食物完全消化!真是太妙了!真是太感谢您了!!!
>
> 我现在有一个问题想请教您?我订购了以下三本书籍:
>
> C++ PRIMER 3RD EDITION 中文版
> WINDOWS 95 程式设计指南
> 多型与虚拟-物件导件的精髓
>
> 这些书好像出版相当久了,不知还能买到吗?谢谢!
* * * * * * * * * * * * * * * * * * * * * *
这封信是我前些日在上海授课期间唯一一次上网收到的 100 封信之一。
就在我走过上海十里洋场,走到腿累得快不行的那个星期假日,回到旅馆
後恰巧看了一部电视上转映的电影,描述苏俄侵略阿富汗。由於从中看起,
没注意片名。片中一位阿富汗人,因为不肯透露反抗军的消息(或是因为对
俄军的不礼貌),被残酷的侵略者下令绑置於坦克履带前方,辗过。
坦克驾驶兵饶有人性,但无法反抗坦克车长的命令。在一次停车休息时,他
和阿富汗籍的另一名坦克袍泽(在中国就是所谓的汉奸)有些精采的对话┅
驾驶兵:为什麽那个人有那麽大的勇气,无视於生死?
阿富汗人 : 因为他有坚定的信仰。
驾驶兵:我羡慕他,但愿像他一样。
* * * * * * * * * * * * * * * * * * * * * *
也许我的譬喻不是很好,也许我的联想有点牵强,但是看了 bluefive 的信後,
我硬是联想到驾驶兵说的话:『我羡慕他,但愿像他一样。』
bluefive,你是幸运的,在生活中有坚定的信仰,坚定不移的兴趣。
不管这信仰是什麽,这兴趣是什麽,我相信在这普遍没有信仰、找不到兴趣
的时代里,有许多许多人会羡慕你。你的环境艰难,学习困顿,但我相信
许多月入新台币 100,000 以上,每年发几百万股票的人,快乐不如你。
对喜欢学习的人而言,学习的本身就是莫大的快乐。
你可能不曾想过要以 programming 做为你的职业,用它来养家活口。
在最单纯(纯粹因为兴趣)的动机下,你的学习有最快乐的过程。
如果你可以退掉你的订书单,请把它们都退了,给我你的地址,
我立刻寄赠以下书籍给你,应该够你快乐一整年:
(1)《C++ PRIMER 3/e 中文版》
(2)《多型与虚拟-物件导件的精髓》
(3)《深入浅出 MFC 2/e》
(4)《Effective C++ 2/e 中文版》
(5)《More Effective C++ 中文版》
p.s.《WINDOWS 95 程式设计指南》已经绝版,我手上亦无馀书。
-- the end
WDM驱动一般是和具体的硬件对应的,NT式驱动一般没有对应的硬件,反病毒一般都用NT式驱动。
另外反病毒你不懂汇编你去反什么,病毒会有源码给你看吗,而且进入内核编程都会用到汇编。即汇编和高级语言混合编程的。
推荐两本入门书《天书夜读-从汇编语言到windows内核编程》,《windwos驱动技术详解》这本主要讲wdm驱动,原理都差不多的。