| 标题 |
作者 |
阅读数 |
发布时间 |
|
|
blue88 |
2192 |
2007-8-29 |
|
[作者] hsly110 或者 猪头三[Email] pliceman_110@163.com PS:本文如果有错漏请来信指出[范围] 逆向工程[目的] 分享逆向技术心德[目标API] 未文档化的RtlInitializeGenericTable[参考文献] Secrets of Reverse Engineering[备注] 欢迎转载该文章,只要保留完整内容即可1 前言:这2天看了Secrets of Reverse Engineering一书,对分析未文档化的API的技术比较有心得,希望各位看了下面的教程,能抛砖引玉灵活的应用在逆向工程和破解技术上,方法是死的,但是人的思维是活,最重要是灵活应用。2 实践:用OllyDbg对NTDLL.DLL进行反汇编,前提你要加入NTDLL.DLL的符号表,这样你才能更好的对未文档化的API进行反汇编,你们到微软官方网站获取相应版本Windows系统的系统符号表。下面是RtlInitializeGenericTable函数的反汇编代码:01 MOV EDI, EDI ; //压入堆栈,保存EBP的数值 02 PUSH EBP ; >> 阅读全文
|
|
blue88 |
1660 |
2007-8-29 |
|
网上搜索一下,到处都是“过来人”的谆谆教导我们不要过分重视技术。技术的确不是创业成功的唯一原因,也的确是不能太把技术的重要性过分强调。假如目前国内是一种技术至上的现状,技术人员的地位虚高,那么这些言论的确有助于业内整体的协调发展。但是现状是,目前国内普遍的认识并没有很抬高技术的地位。恰恰相反,技术被过低的估计了其应有的价值,网上强调技术重要性的文章几乎没有。技术人员的地位已经是低得不能再低,在许多公司内部,已经到处都是对技术人员的轻蔑的眼光。在重要的技术几乎都由国外主导,而目前中国已经几乎丧失了任何技术主导权的今天,还在一直继续强调切不可技术主导,将会给国家的IT产业的自强发展造成严重的影响。比如今天看到的这篇关于创业团队的思考:切不可技术主导,又是一篇典型文章。其实整篇看下来,作者说的有一定道理,只不过他其实考虑的只是有关Web 2.0网站的创业,却又强扣了一顶技术无用论的大帽子。他的文章标题假如是:“关于Web 2.0网站创业的思考:切不可技术主导”的话,倒也较少可辩驳之处。可惜他文章标题的范围说的是整个创业团队,那这篇文章就完全是在误导人了。IT业技术主导创业成功的例子比比皆是,著名的有:Borlan...
>> 阅读全文
|
|
blue88 |
2668 |
2007-8-29 |
|
在微软工作的华人已近千人。在微软TechEd技术教育大会期间,他们中的16位作为讲师回到北京。他们为听众带来微软软件技术的最新进展,而他们自身的软件生涯也是一种财富。记者在大会期间,趁他们讲课 之余,采访了其中的5位讲师。 学得杂一些 “人的成长实际上是个金字塔形的,你的基础越扎实、越广,塔尖才越高。”微软Server管理部门软件设计与测试工程师陈硕就是一个典型的“杂家”。先是在北京大学地球物理系读书,毕业后保送到中科院大气物理所,后又获得普林斯顿大学全额奖学金,读了海洋学方面的硕士,最后又在德州A&M大学拿到商学硕士。当然,她一直没有忘了她的“副业”——计算机,她在北大时就选了相当多的计算机课程; 在普林斯顿大学海洋学实验室使用计算机模拟的方式来研究温室效应、厄尔尼诺等气候问题,当时用的是Cray(大型机)和Unix服务器;在德州A&M大学读书时,找到的兼职工作依旧是维护学校数百人的计算机实验室。 13岁就随父母来到美国的严治庆,本科是在明尼苏达大学电气与计算机工程...
>> 阅读全文
|
|
blue88 |
5400 |
2007-8-29 |
|
26.1 CAUTIONIndividuals maintain all of the web sites listed here. I will strive tomaintain this list current but do not be surprised if the addresses nolonger are current.26.2 ASSEMBLY LANGUAGE RELATED HOME PAGESRandy Hyde’s Assembly Language Page http://webster.ucr.edu/Page_asm Excellent tutorial, Art of Assembly Language ASM Style GuideChristian Ludoff’s 80x86 Sandpile Page http://www.sandpile.org Basic Page http://www.sandpile.org/80x86/overview.shtml The second page is where you should kept you link. Much good >> 阅读全文
|
|
blue88 |
401 |
2007-8-5 |
|
还记得当年学数学、英语都有个窍门,那就是搞个错题集。经常复习一下这个错题集,就可以避免下次犯同样的错误。而几乎所有的程序员都是从犯错误开始的,我们也很有必要总结一下编程新手的常见错误,本文的目的在于此。1.引言 文中所列出的都是笔者在项目开发中接触到的新手真实的言谈,笔者学学文革腔调,姑且称之为“错误语录”。
&;nbsp;2.语录 (1)“我的程序都是对的,可结果不对” 想想你的周围,是不是也有人说这样的话?如果你也曾经说过,那就此打住,不要再说这句话,因为这句话只会显示说话者的无知。既然程序都是对的,那为什么结果不对?
&;nbsp;(2)“程序=算法+数据结构” 如果刚刚学完C语言,我们说这样的话,完全可以理解,而且可以说是正确的。但是如果你是一位即将从事C/C++编程的程序员,那么很遗憾,这个说法只能判错,殊不知,世界上还有另一种说法: 程序 = 对象 + 消息 “程序=算法+数据结构”只对面向过程的语言(C)成立,而对面向对象的语言(C++),则只能表述为“程序=对象+消息”。传统的过程式编程语言以过程为中心以算法为驱动,面向对象的编程语言则以对象为中心以消息为驱动。这里的消息是广义的,对象A...
>> 阅读全文
|
|
blue88 |
218 |
2007-8-5 |
|
第一节 应用工具 一、对程式的认识 写作程式不难,但要写出好程式却不容易。这就好像画图一样,人人都能画,而画出来的图却可能有天壤之别。 想作一个好画家,首先要有观察及分析的能力,面对着杂乱的事物,先整理出头绪,找到主题。再在画布上勾出轮廓,这叫做「布局」。布局完毕,根据实际的环境,决定作图的先后「顺序」。顺序是一种层次观念,景物及色彩都有一定的层次,绝不可随意所之,想到哪里,画到哪里。 观察考虑完毕,即开始准备,先将画笔、调色板等工具放妥,把要表现的主要色彩也调好。最后是选择适当的画笔,蘸上色彩,按照所观察的结果,涂在画布上。 画图颇重风格,有些个人主义的艺术家,技巧并不精通,只因为时代潮流或历史条件,创造了某种独特的风格,就得以成名享利。一般的画家则不然,不论是「工笔」抑或「写意」画,全靠其技巧及素养,始能求生存。至于艺术大师,则首重风格,再加上素养、技巧,方可扬名立万,永垂不朽。 最糟糕的画...
>> 阅读全文
|
|
blue88 |
102 |
2007-8-5 |
|
四、对指令的认识 指令就是「指挥」、「命令」,用以控制电脑,一步一步地实现程式的计划。 组合语言的格式为: ( 下行中凡标“[ ] ”者,表有些指令可省略 ) [前置元] 指令 [目的操作元,源始操作元] 1,「前置元」:以下诸例即为前置元的用法。 11段名:表后面的操作元应属于此临时前置段。如: MOV AX,CS:BUF1 12定义:表示其后缓冲器的临时定义。BYTE PTR表示以一个字元定义的资料; WORD PTR表双字元资料。 不论缓冲器的原定义为何,凡有前置元者,皆以临 >> 阅读全文
|
|
blue88 |
47 |
2007-8-5 |
|
二、程式要条理通顺 1,在比较判断的过程中,邻近值不必连比。 CMP AL,0 JE ABCD0 CMP AL,1 JE ABCD1 CMP AL,2 JE ABCD2 &l...
>> 阅读全文
|
|
blue88 |
373 |
2007-8-5 |
|
第一节 系统 一、系统之选择 只因真正瞭解电脑的人太少,迷信名气的结果,使得 IBM PC/AT占有了市场。为求电脑普及应用,我们唯有因陋就简,针对 IBM PC/AT及其兼容系统,作进一步的分析和说明。 尽管使用 80486 CPU的微电脑已问世,我个人认为以其造价及功能而言,并不符合效率法则。在从事艺术工作的立场,价值的高低,与所采用的材料没有绝对的关系。更何况我们正要证明,利用组合语言的制作技巧,能够使功能不高的微电脑发挥最大的边际效益。故本书仅以8088 CPU指令为研讨对象,至于程式应用在什么机型,就不在本书的考虑范围内了。 二、目录及磁盘 假定读者为有经验的程式师,且电脑为 IBM PC/XT/AT。 则在着手制作程式之初,应该先将系统准备妥当。即所谓「工欲善其事,必先利其器」,如果未能注意到下面所提的细节,仅仅制作一、两个程式尚可应付。待工作量一大,程式渐渐增多,不是某些程式找不到,就是找到了也不能一目瞭然。结果是心烦意躁,马马虎虎,另外再写一个,勉强应付了事。 硬盘空...
>> 阅读全文
|
|
blue88 |
188 |
2007-8-5 |
|
第一节 电脑 一、前言 电脑的到来,被喻为人类文化的第三波革命,由于它具有强大的资讯机能和弹性,正好弥补了人类记忆不足、反应迟钝、厌于重覆和受限于时空的缺点。遂在当今世事繁杂、变化多端的动态社会中,成为人类日常工作中有力的帮手。 它之不同于人类其他的发明,是以机件的「硬体」结构,去执行可以随设计理念而改变的「软体」。这一来,机器便具有了灵活应用的弹性,只要有适合的软体,它就会忠实不渝地去处理各种繁琐的任务。 在初,它的速度及容量很低,但已有足够的魅力,吸引了无数狂热的有心人士,为它尽智竭力,不断地改良更新。仅仅不过十余年,它已脱胎换骨,蔚为龙象。 这是一个崭新的天地,凡是思路广、创意新,能将各种抽象观念整理成为有秩序、有条理的人,都能利用电脑的特种「语言」,发展成为实用而成功的「软件」。随着软件大量的应用,工作绩效显着增进。终于,它的地位奠定了,整个人类社会的变化加速发展,对它...
>> 阅读全文
|
|
blue88 |
236 |
2007-8-5 |
|
程式写完后,还要加工成为可执行的套装软件(Package),一般说来,即使是可以执行的程式,一点错误都没有,离套装软件的程度,却还有一段距离。 当然,程式侦错也是必经过程之一,有时侦错与程式写作可以同时进行。但有经验的程式师,对全面有了充份的认识,往往会等到程式联接后再行侦错。 程式完成后的全面侦错,最好不要依靠写程式的人。因为程式师经常不是使用者,他们仅在自己设计的条件下,依其理念进行侦错。当然这种错误必须更正,但最容易发生的错误,却是使用者不小心在输入时,或运用指令时,违背了程式师的理念。这种错误的发生,是不能原谅的,程式本来就是为使用者设计的,如果令使用者不便,程式就失去了应有的价值。 程式的品管,就在于检测程式是否符合使用者的需求。一般说来,应有专人负责,也有让写作手册的人,兼做品管的工作。这样可以同时对照手册所描述的功能及操作方法,检查两者之间是否一致。 还有一种常见的品管方式,是在产品完成时,交...
>> 阅读全文
|
|
blue88 |
18 |
2007-8-5 |
|
第三节 程式合并 我所见过的各种组合程式虽不算多,但至少有百余个了。毛病最多的当然是缺乏完整的规划,其次则是信马游缰,一份不折不扣的流水帐!明明大门口在东边,程式硬要朝西,直到游完了大观园,天黑了,才出东门! 这种程式我收集了一大叠,可是举来做例子,却心有余而力不足。原因无他,实在不耐烦照抄一遍,一见到就头痛! 电脑最强的功能,便是处理繁杂重复的工作,为什么一般程式师居然存心与电脑争风吃醋呢?不说别的,光把程式输入到电脑中,就要花上几个月宝贵的光阴,真值得这样做吗? 有一份程式,足足有四十多页,我只略作调整,便缩小到十页,处理速度则快了五倍。为什么会差这样远呢?很简单,有些人不喜欢用大脑,久而久之,习惯成自然,大脑就生了铁銹!除了等因奉此,什么都不会想了。 要想做一个优秀的程式师,第一个条件是不能偷懒,第二个条件则要有分析观察的习...
>> 阅读全文
|
|
blue88 |
342 |
2007-8-5 |
|
“ 哎哟,哥们儿,还捣鼓汇编呢?那东西没用,兄弟用VB"钓"一个API就够你忙活个十天半月的,还不一定搞出来。”此君之言倒也不虚,那吾等还有无必要研他一究呢?(废话,当然有啦!要不然你写这篇文章干嘛。)别急,别急,让我把这个中原委慢慢道来:一、所有电脑语言写出的程序运行时在内存中都以机器码方式存储,机器码可以被比较准确的翻译成汇编语言,这是因为汇编语言兼容性最好,故几乎所有跟踪、调试工具(包括WIN95/98下)都是以汇编示人的,如果阁下对CRACK颇感兴趣……;二、汇编直接与硬件打交道,如果你想搞通程序在执行时在电脑中的来龙去脉,也就是搞清电脑每个组成部分究竟在干什么、究竟怎么干?一个真正的硬件发烧友,不懂这些可不行。三、如今玩DOS的多是“高手”,如能像吾一样混入(我不是高手)“高手”内部,不仅可以从“高手”朋友那儿套些黑客级“机密”,还可以自诩“高手”尽情享受强烈的虚荣感--#$%& “醒醒!” 对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不...
>> 阅读全文
|
|
blue88 |
84 |
2007-8-5 |
|
Atmel Corporation日前宣布推出AVR32 Studio。AVR32 Studio将用于AVR32 AP7和UC3系列编码开发的整个工具链结合了起来。AVR32 Studio与AVR32 GNU工具链进行了整合,该工具链中包括用于开发AVR32应用软件的GCC。 AVR32 Studio综合开发环境包括一个带有语法着色功能的源代码编辑器以及对编写和调试独立应用程序和Linux应用程序的支持。它可以完全控制所有的开发工具,如STK1000开发板、EVK1100/1101评估套件、JTAGICE mkII仿真器以及AVR32网关套件。 AVR32 Studio以Eclipse为基础,从而能够添加大量插件进一步扩大功能。像文本控制系统、缺陷跟踪以及动作列表之类的功能可通过第三方插件进行添加,从而帮助开发者跟踪其项目、消除编码中的错误并最终缩短上市时间。 AVR32 Studio的完整发布版可从http://www.atmel.com免费获得。AVR32 Studio可自动检测和下载升级最新版本、新的部件以及工具支持,而无需用户输入。 AVR32的GNU工具链可从http://www.atmel.com获得,并附带一个完整Linux版2.6.18端口。一个既包含AVR32 Studio又包含GNU工具链的单机版Windows安装程序已经推出。 >> 阅读全文
|
|
blue88 |
187 |
2007-8-5 |
|
2007年7月17日,全球电子设计创新领先企业Cadence设计系统公司宣布,Cadence SiP(系统级封装)技术现已同最新版的Cadence Virtuoso 定制设计及Cadence Encounter数字IC设计平台集成,带来了显著的全新设计能力和生产力的提升。通过与Cadence其它平台产品的整合,包括Cadence RF SiP Methodology Kit在内,Cadence提供了领先的SiP设计技术。 该项新的Cadence SiP技术提供了一个针对自动化、集成、可靠性及可重复性进行过程优化的专家级设计流程。通过该先进的SiP技术,Cadence能帮助设计师将不同IC和封装装配技术聚合至高度集成的产品。这使得设计师能够在保持低成本的同时,满足对小型、高性能产品日益增长的需求。 “作为Virtuoso和SiP的用户,拥有最佳集成的整体解决方案和流程是非常重要的。”意法半导体蜂窝通信部门工程技术总监Christian Caillon表示。“这项最新的SiP技术提供了我们所需要的全新水平的集成和设计生产力,帮助我们向客户提供领先的多芯片封装解决方案。”为实现设计生产力和设计质量的提升,当今的IDM和无晶圆芯片公司需要IC设计环境与其SiP实现技术之间的无缝集成。因此,Cadence的SiP技术得到加强,最大限度地提高了生产力...
>> 阅读全文
|
| 标题 |
作者 |
阅读数 |
发布时间 |
|
|
博文视点(北京) |
915 |
2009-6-11 |
|
IDE(Integrated Develope Environment)即集成开发环境,是指在同一个界面中完成从编写源代码到编译,最后到链接的全过程。 Microsoft的Visual Studio中的VC和VB等开发环境就是IDE的典型例子,MASM32 SDK软件包中同样有一个简单的IDE环境Qeditor.exe,这个IDE环境实际上只是一个简单的文本编辑器加上一个用户可以自行设置菜单的Shell,编译链接工作由Qeditor.exe在后台调用Ml.exe和Link.exe等软件完成。 如果要使用这个IDE环境,最大的代价就是不得不使用这个简单的编辑器,而一个好的文本编辑器对工作效率的影响是很大的,一个完善的文本编辑器必须包括语法高亮显示、强大的查找替换、无限次Undo和Redo操作、支持特大型的源文件等功能,MASM32 SDK中简单的Qeditor.exe符合不了这些要求。 >> 阅读全文
|
|
博文视点(北京) |
516 |
2009-6-9 |
|
尊敬的读者: 您好! 与传说中的牛人共饮咖啡,与畅销书作者共话家常,与技术专家共商新趋势……这不是天方夜谭! 6月13日,上岛咖啡,博文视点OpenParty首期亮相,让您梦想成真! 多位技术作家,从幕后走到台前,为您带来图书之外的更多技术观点;亲切随意的技术沙龙,为您创造一个零距离接触高端权威的机会,将带给您全新体验和全面收获。活动形式: 本活动将以分组讨论的方式来进行,每小组由发起主题者任主持人,参与者可随意参加讨论。 &l...
>> 阅读全文
|
|
博文视点(北京) |
2160 |
2009-6-9 |
|
C语言程序的运行总结 在上面几节,主要介绍了C语言运行时内存的使用情况。其关注点是程序中主要的段,事实上,程序可能不仅包括了上述主要段,还可能包括一些头信息。程序实际的运行也分为在操作系统下运行和直接运行等情况。在具有操作系统的情况下,程序由操作系统加载运行,加载的时候可执行程序可以是一个文件,这个文件将包含程序的主要段以及头信息。 对于Linux操作系统,目标程序是可执行的ELF(Executable and linking Format)格式;对于uCLinux操作系统,目标程序是Flat格式;对于需要在系统直接运行的程序,目标程序应该是纯粹的二进制代码,载入系统后,直接转到代码区地址执行。 事实上,无论运行环境如何,C语言程序在运行时所进行的动作都是类似的。程序在准备开始运行的时候,以下几个条件都是必不可少的:1.代码段必须位于可运行的存储区。2.读写数据段必须在可以读写的内存中,而...
>> 阅读全文
|
|
博文视点(北京) |
1951 |
2009-6-8 |
|
Vc中对话框数据交换和验证机制 在VC中,所有的对话框函数都是使用C++代码实现的,它并没有采用特殊的资源或“奇特”的宏,但却可以很好地实现用户与应用程序之间的交互工作,这里的关键就在于对话框应用程序中广泛采用的对话框数据交换和验证机制。 对话框数据交换(Dialog Data Exchange,DDE)用于初始化对话框中的控件并获取用户的数据输入,而对话框数据验证(Dialog Data Validation,DDV)则用于验证对话框中数据输入的有效性。MFC在每个对话框类中提供了一个用于重载的虚函数——DoData Exchange来实现对话框数据交换和验证工作。? 对话框数据交换 如果使用DDE机制,则通常在OnInitDialog程序或对话框构造函数中设置对话框对象成员变量的初始值。在对话框即将显示前,应用程序框架的DDE机制将成员变量的值传递给对话框的控件,当对话框响应DoModal或Create...
>> 阅读全文
|
|
博文视点(北京) |
760 |
2009-6-8 |
|
注意事项 数据库引擎问题 如果你要将现有的数据库转移到MySQL集群中,那么请将数据表的格式由MyISAM或InnoDB改为NDBCLUSTER。转换的方法,请阅读MySQL的官方文档:http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-multi-load-data-queries.html 否则,可能会遇到意想不到的问题,比如要添加MySQL用户,就必须在每个NDB节点上添加,等等。 内存问题 NDB把所有数据存放在内存中,所以你需要为NDB节点配备较大的内存。一般情况下,换算比例为1:1.1,也就是说,如果你有1GB数据库,至少要配备1.1GB内存;如果你的数据库会增长到8GB,就需要至少为服务器配备8.8GB内存。而且每个NDB节点都要做如此配置。 安全问题 该集群的MGM节点,其管理服务运行在1186端口上;NDB节点的...
>> 阅读全文
|
|
博文视点(北京) |
4029 |
2009-6-8 |
|
集群连接状态测试 首先,我们回到管理节点(mysql-mgm.mtest.com)上。在该服务器上,执行下面的命令:$ ndb_mgm 命令执行后,就会进入MGM的客户端界面,并显示mgm提示符:-- NDB Cluster -- Management Client --ndb_mgm> 在该提示符下,输入show命令,来查看当前连接状态:ndb_mgm> show 在正常情况下,应该显示如下内容:Connected to Management Server at: localhost:1186Cluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=2 @192.168.1.13 (Version: 5.0.51, Nodegroup: 0)id=3 @192.168.1.14 (Version: 5.0.51,...
>> 阅读全文
|
|
博文视点(北京) |
429 |
2009-6-5 |
|
安装MySQL 在mysql-data1和mysql-data2两台服务器上,分别安装MySQL服务器: $ sudo apt-get update install mysql-server 安装时,安装程序会要求你设置MySQL的root口令。请设置好,并记住该口令。 程序安装完成后,请先停止MySQL服务: $ sudo /etc/init.d/mysql stop 配置my.cnf 在mysql-data1和mysql-data2两台服务器上,要执行相同的操作。 首先,备份原有的/etc/mysql/my.cnf: >> 阅读全文
|
|
博文视点(北京) |
1139 |
2009-6-5 |
|
本书是第一本全面介绍Ubuntu Linux Server的中文书籍,是作者10多年实战经验的结晶;从构思到出版,花费作者近3年时间。无论您是初学者还是Linux高手,都能从中获益。 在内容上,本书基本上涉猎到了Linux服务器的各方面常见应用。“最佳方案”是本书的特色。对于每一种应用,作者都不是泛泛而谈,而是推荐一个“最佳方案”——从硬件服务器的选型到Linux入门,从LAMP到Tomcat,从代理服务器到邮件服务器,从DHCP到DNS,从Samba到虚拟化,从负载均衡到远程控制,从RAID到LVM再到系统安全——不管您是在校学生还是在职Linux管理员,不管您是小公司还是大企业,都可以直接复制本书内容,在最短的时间内您就可以架设起自己的最佳Linux服务器。 拥有本书,您就拥有了一位具有10年经验的资深Linux管理员和开发者的最佳实战方案,有如专家亲临现场、全程陪护,让您在工作中胸有成竹,...
>> 阅读全文
|
|
博文视点(北京) |
4733 |
2009-6-5 |
|
如何设计方案?”前 言“我们的服务器用的软RAID,现在硬盘不够了,需要添加新硬盘,请问应该怎么做?”“我们发现服务器被入侵了,请问应该怎么做?”“目前Web和数据库在同一台服务器上,可是由于我们的企业发展得太快,现在服务器不够用了,计划增加两台服务器,请问您如何设计方案?”——面试“Linux系统管理员”时可能会被问到的问题近年来,Linux(尤其是Ubuntu)一直保持上升势头,据说目前中国的Linux人才缺口已经达到120万!在2008年开始的全球经济大萧条中,虽然各大公司都在裁员,但是我相信,一个真正优秀的Linux系统管理员,是任何公司都不可能轻易解聘的;不知有多少大大小小的公司,正在如饥似渴地募求Linux人才,却常常慨叹一才难求!我在帮助朋友的公司招聘Linux系统管理员时,发现一个问题:很多人只是对桌面系统很熟悉,却不熟悉Linux服务器;有的人虽然熟悉,却不深入,不精通。本书正是帮助您迅速提高Linux服务器管理技能和经验的绝佳教材。本书的特色您拨打家电服务电话时,可能会听到下面的语音:“普通话请按1,English press 2。”“个人服务请按1,企业客户请按2。”“小家电请按1,电冰箱请按2,空调器请...
>> 阅读全文
|
|
博文视点(北京) |
387 |
2009-6-5 |
|
一年后的今天重读《梦断代码》有感 一年之前的今天我在书店看到了《梦断代码》这本书,这本很早就在网上关注过的图书,当即就买下了,经过几天的挑灯夜读算是完成了第一遍的阅读,在余味未尽之时读了第二遍,对于书中说到的故事,看似说的是一个软件,其实说的大千软件,看似说一事,其实是说百事,作为软件开发行业的人员是深有体会的。 前两天在整理自己的书柜时,又翻到了这本曾经让自己彻夜挑灯夜读的书——《梦断代码》,回忆起当时自己第一次阅读到本书的时候的心情,当时是多么的激动和感慨。 花费了那么多的时间和经历,人力、财力及物力,换到的却是最终的失败,让人甚是惋惜和同情。想想发生在自己身边的事情,何尝不是如此的,虽然不如书中主人翁那样的花费,但是作为个人而言,有些事情的失败就已经可以是致命的了。 在整理书柜的时候,我又把这本书放到我们的书桌上,这几天又花了一点时...
>> 阅读全文
|
|
博文视点(北京) |
1901 |
2009-6-4 |
|
完整的代码3.3.1 完整的分发函数 下面基于前面的描述,我们再尝试编写一个分发函数。这个函数处理所有串口的写请求,所有从串口输出的数据都用DbgPrint打印出来。也就是说,读者打开DbgView.exe,就可以看到串口的输出数据了。这当然不如一些比较专业的串口嗅探软件好,但是读者可以以这个例子为基础开发更专业的工具。NTSTATUS ccpDispatch(PDEVICE_OBJECT device,PIRP irp){ PIO_STACK_LOCATION irpsp = IoGetCurrentIrpStackLocation(irp); NTSTATUS status; ULONG i,j; // 首先要知道发送给了哪个设备。设备最多一共有CCP_MAX_COM_ID // 个,是前面的代码保存好的,都在s_fltobj中 for(i=0;i { if(s_flto...
>> 阅读全文
|
|
博文视点(北京) |
7145 |
2009-6-4 |
|
设备绑定的内核API之一 进行过滤的最主要的方法是对一个设备对象(Device Object)进行绑定。读者可以想象,Windows系统之所以可以运作,是因为Windows中已经存在许多提供了各种功能的设备对象。这些设备对象接收请求,并完成实际硬件的功能。我们可以首先认为:一个真实的设备对应一个设备对象(虽然实际对应关系可能复杂得多)。通过编程可以生成一个虚拟的设备对象,并“绑定”(Attach)在一个真实的设备上。一旦绑定,则本来操作系统发送给真实设备的请求,就会首先发送到这个虚拟设备。 下面结合代码进行讲解。读者可能希望编译执行这些代码,驱动的初学者请先阅读本书第1章,以便学会如何安装开发环境、编译代码和调试程序。 在WDK中,有多个内核API能实现绑定功能。下面是其中一个函数的原型:NTSTATUS IoAttachDevice( >> 阅读全文
|
|
博文视点(北京) |
1426 |
2009-6-3 |
|
无处不在的内核模块 位于高2G空间内的操作系统内核,并非做死的一个巨大程序。因为计算机硬件种类繁多,不可能做出一个能支持所有硬件的巨大内核。 内核是有接口的,微软提供规定的格式,让硬件驱动的编程人员,能按照规定的格式编写“驱动程序”。这些驱动程序能够作为模块加载到内核中,成为内核的一部分,这样内核只要简单地安装驱动程序,就可以适应各种不同的硬件了。 本书中的大部分例子都是编译成内核模块的,实际上也可以称为驱动程序(Driver)。但是它们大部分并不驱动任何硬件,有人称之为“软件驱动”。但是笔者认为这不够贴切,所以本书使用Linux程序员们的叫法,称之为内核模块(Kernel module)。也许这样要更贴切一些,驱动程序可以看成内核模块的一种(少量的应用层驱动程序除外)。 内核模块...
>> 阅读全文
|
|
博文视点(北京) |
594 |
2009-6-3 |
|
编写程序也需要在实战中成长本文摘自青软实训《在实战中成长》丛 书 序 前几天,应青软实训技术研发中心老师的邀请为青软实训《在实战中成长》丛书写序,让我想起了三年前的这个时候。当时,为了更好地解决大学生的动手实践能力与企业需求之间存在差距的问题,在相关政府、高校、软件企业等各方的协助及大力支持下,成立了青软实训。 现在,从青软实训走出的学员遍布了北京、上海、大连、青岛等全国各地的软件企业,我和我的同仁在体会到快乐的同时,也感受到了深深的责任感。我们发现,虽然学员在实训中学习的时间只有短短的几个月,但我们带给学员的技术课程、对学员进行的综合素养的训练、与学员的沟通交流以及指导学员完成的项目等都有会对他们今后的职业发展产生影响。 正是基于这样的责任感,才让我们不断地思考,通过什么样的方式才能让作为初学者的学员学好软件开发技术。青软实训的讲师都是...
>> 阅读全文
|
|
博文视点(北京) |
2160 |
2009-6-2 |
|
帮助中没有的函数 并不是所有可以调用的函数都已经列举在帮助里。比较典型的是C运行时库中的stdlib.h、stdio.h和memory.h三个头文件里有很多函数实际上是可以使用的。但是也并非全部,比如printf、scanf及fopen、fclose、fwrite、fread这些函数就不行。因为在内核里显然没有控制台,而且读/写文件也不是那么轻松,要顾及到很多运行环境相关的问题。但是sprintf、strlen、strcpy、wcslen、wcscpy、memcpy、memset都是可以的,相应的,malloc、free、strdup都是不行的。 基本上可以认为,大家常用的C运行时库中的函数,如果只涉及字符串和内存数据(而不涉及内存管理,比如内存的分配和释放),则是可以在内核程序里调用的。但是MS并不提倡这样做。 如果这些函数涉及内存管理、文件操作、网络操作、线程等,则往往在头文件中虽然有这个函数存在,甚至编译都能通过,但是连接却会...
>> 阅读全文
|