《白手起家Win32SDK应用程序》(完整版+目录)
- 格式:docx
- 大小:57.49 KB
- 文档页数:33
Windows驱动开发模型WDM学习笔记绪言 (4)1.WDM驱动程序开发基础知识 (5)1.1WDM简介:Win32 Driver Model Win32驱动程序模型 (5)1.2 Win32 API (5)1.3 WDM特性 (5)1.4 WDM工作原理 (6)1.5 WDM与其它驱动程序的比较 (6)2.WDM驱动程序开发环境DDK设备驱动程序开发包 (6)2.1■安装DDK (6)2.1.1.Windows 98 DDK的安装 (7)2.1.2.Windows 95 DDK的安装 (7)2.1.3.NT DDK的安装 (8)2.2 ■构造环境:建立WDM驱动程序构造环境的方法 (8)2.2.1. 用SETENV.bat来安装驱动程序构造环境 (9)2.2.2. 手工运行SETENV.bat (9)2.2.3. 构造WDM驱动程序 (9)2.2.4.构造驱动程序 (9)2.2.5.检查Windows 98 DDK的安装 (9)3.WDM驱动程序的设计与开发 (10)3.1■WDM 驱动程序的运作流程 (10)3.2■驱动程序设计 (10)3.3■驱动程序开发 (11)3.3.l.编写驱动程序框架 (11)3.3.2.测试驱动程序 (11)4.WDM驱动程序编译运行:编译和安装设备驱动程序的方法 (12)4.1■编译设备驱动程序的方法 (12)4.1.1.举例分析 (12)4.1.2.编译的基本步骤 (13)4.2■设备驱动程序的安装和启动 (13)4.2.1.添加注册表中的键值 (13)4.2.2.控制驱动程序的装入次序 (14)4.2.3.驱动程序的Start值 (14)4.2.4.修改注册表的方法 (15)4.2.5.启动设备驱动程序 (15)4.2.6.调试工具 (16)5.wdm驱动开发基础-一些需要注意的问题汇总 (16)5.1注册表的角色 (16)5.2.如何命名注册表键 (16)5.3从用户模式中访问设备键 (17)5.4 函数原型“IN”关键字 (17)5.5 注册设备接口 (18)5.6 初始化设备扩展 (18)5.7 注意侧效 (19)5.8 try-finally中的控制流程 (20)5.9 生成异常 (22)5.10 __Leave语句 (23)5.11 简化页大小 (24)5.12 页故障关于分页 (24)5.13 alloc_text的使用 (25)5.14 关于段布置 (26)5.15 服务函数描述 (26)5.16 ExAllocatePoolWithTag (28)5.17 ExAllocatePool的其它形式 (29)5.18 单链表 (30)5.19 lookaside链表的服务函数 (31)5.20 打开注册表键 (31)5.21 删除子键或键值 (32)5.22 枚举子键或键值 (33)5.23 IRQL限定 (35)5.24 IRQL的明确控制 (35)5.25 自旋锁 (36)6. wdm驱动开发基础代码分析解析 (36)绪言在Windows的不同版本上开发的驱动程序“模型”(模型这个词语应该来源于单词“Mode”。
C:\WINDOWS\system32文件夹的详细解说路径C:\WINDOWS\system32...这个 system32 文件夹中包含了大量的用于 Windows 的文件. 这里主要用于存储 DLL 文件, 控制面板小程序(.CpL), 设备驱动 (.drv), 帮助文件(.hlp 和 .cnt), MS-DOS 工具 (.com), 语言支持文件 (.nls), 屏幕保护(.scr), 安装信息文件 (.inf), 以及其它用于支持, 配置, 或操作的文件.-------------------------------------------------------C:\WINDOWS\system32\3com_dmi我把这个文件夹删掉了.C:\WINDOWS\system32\1025, 1028, 1031, 1033, 1037, 1041, 1053, 2052 & 3076我把其中的空文件夹都删掉了. 1033 (英语). 2052 (简体中文).这些以数字命名的文件夹中包含了本地化语言文件. 其中大多数文件夹都可能是空的.据 Microsoft 说: 用于指定语言的本地化 (语言) 文件, 按照数字指派到对应的文件夹中. 除非 Windows 被本地化为特定的语言, 否则其它不对应的文件夹就是空的.-------------------------------------------------------C:\WINDOWS\system32\CatRoot和C:\WINDOWS\system32\CatRoot2CatRoot文件夹中包含了安全编录文件.CatRoot2 文件夹中包含了编录数据库文件.你也许能够删除这两个文件夹以及其中的内容. 这个就取决于你的系统了.当你安装某些第三方程序时, 可能会需要某些特定的 .CAT 文件存在. 这些 .CAT 存在于以下文件夹中:C:\WINDOWS\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE }有些人可以将其删除而不出现任何问题. 而其它人就不行.在我的系统上, 我发现, 使用 Acronis True Image 的浏览磁盘镜像的功能时, 需要某些 .CAT 文件. 如果不存在, 那么就会弹出一个Windows 硬件安装窗口, 它会告诉你 '你为以下硬件所安装的软件: 通用卷没有通过Windows标识测试,(用来验证它与 Windows 的兼容性)...等等.'如果我选择继续, 那么就会弹出对话框, 说 '无法为分区指派盘符.'简而言之, Acronis True Image 的浏览磁盘镜像功能离不开特定的 .CAT 文件.你所安装的某些第三方程序可能会依赖于某些特定的 .CAT文件.我还发现在我的系统上需要以下两个 .CAT 文件存在:'oemO.CAT' 和 '1.CAT'.当 oemO.CAT 和 1.CAT 不存在时, 'dberr.txt' 中就会出现错误记录, 其存在于 C:\WINDOWS\system32\CatRoot2 中.我注意到, 当我打开设备管理器中的设备属性时就会出现这些错误, 并且当我使用 Acronis True Image 的浏览镜像功能时也会出现这些错误.我偶尔也会在 dberr.txt 中看到其它的 .CAT 错误: Fp4.CAT, IMS.CAT, MSMSGS.CAT, msn7.cat, msn9.cat, MSTSWEb.CAT, NTpRINT.CAT, Sp2.CAT, startoc.cat 和 wmerrenu.cat.在我的系统中有这么多的 .CAT 文件, 很难确定哪些 .CAT 文件可被删除.我只是把所有的 Hotfix .CAT 文件 (Kb*.* files) 删掉了. 你可以通过Hotfix 号码将其识别出来.以下是一些你可以做的东西, 只要你愿意...把所有的 .CAT 文件放置到一个别的文件夹中. 周期性地检查C:\WINDOWS\system32\CatRoot2 中的 'dberr.txt'. 查看是否有缺失 .cat 文件的错误信息. 然后把有提示的 .CAT 文件放回到C:\WINDOWS\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} 文件夹中当你把所有所需的 .CAT 文件放回原位之后, 'dberr.txt' 就会停止显示错误了.dberr.txt..........关于编录文件注册情况的日志文件. 包含了未注册编录文件的相关信息, 并且只有当识别出未注册的编录时才会存在.缺失编录文件时也会产生 dberr.txt.关于 CatRoot2 文件夹, 我一般都是用文件清理工具删除其中的某些垃圾文件, 而不是删除整个文件夹. CatRoot2 文件夹中产生的文件都是临时文件. 其扩展名为 *.chk, *. emb, *log, 以及 *.txt.-------------------------------------------------------C:\WINDOWS\system32\Com组件对象模型 (COM) 组件.我把这个文件夹以及其中的内容都删掉了.然后打开“控制面板” -> “管理工具”, 把其中的“组件服务” 快捷方式删.顺便, 我还会把用不到的 '数据源 (ODbC)' 快捷方式删掉.C:\WINDOWS\system32\config包含了用于引导的注册表储备, 还有可通过事件查看器查看的系统, 安全以及应用程序日志文件.我把所有能删的文件都删掉了. 有些文件, Windows 是不会让你删的. 它们是你的注册表实体.其它的文件都可以删掉, 且不会引起任何问题.以下是 13 个重要的文件:AppEvent.Evtdefaultdefault.LOGSAMSAM.LOGSecEvent.EvtSECURITYSECURITY.LOGsoftwaresoftware.LOGSysEvent.Evtsystemsystem.LOGC:\WINDOWS\system32\config\systemprofile我把这个文件夹以及其中的内容都删掉了.这个文件夹中包含了一个用于本地系统的标准配置文件.我发现, 要在安全模式下才能彻底地删掉这个文件夹.systemprofile 文件夹本身, 以及其中的一些空文件夹, 有可能会自动重新出现.这是那些古怪的文件夹中的一个. 有些时候将其删除之后, 就不会重新出现了. 而有时重装系统之后, 将其删除, 它又可能会莫名其妙地重新出现. (真是受打击...)C:\WINDOWS\system32\dhcp我把这个文件夹删掉了.这个文件夹一般是空的, 如果你想让主机作为一台 DHCp 服务器, 那么这个文件夹就会用于保存动态主机配置协议 (DHCp) 数据库文件.C:\WINDOWS\system32\DirectX我把这个文件夹以及其中的内容都删掉了.这个文件夹中包含了用于支持某些游戏设备的文件.C:\WINDOWS\system32\dllcache我把其中的文件都删掉了, 但是我把文件夹保留下来了.这个文件夹包含了受“Windows 文件保护系统” 保护的系统文件副本.我把 dllcache 中的文件备份到另一个分区中了. 但我需要某个初始文件时, 我就可以将其从备份镜像中提取出来了.我没有删除这个文件夹中新生成的那些文件. 进行过在线更新之后, 新版本的系统文件就会被置入这个 dllcache 文件夹中. 这些是我所拥有的新文件的唯一副本.C:\WINDOWS\system32\drivers\etc我把其中的内容都删掉了.一般来说, 现在很少会用到其中的 HOSTS 文件了. 它是 DNS 缓存文件, 优先于 DNS, 一般是没必要用到的.有效的 hosts 文件是没有扩展名的.C:\WINDOWS\system32\export我把这个文件夹删掉了.C:\WINDOWS\system32\ias我把这个文件夹以及其中的内容都删掉了.如果不能连接 Internet 的话, 那么它一般会是一个空文件夹. 它会储存用于Internet Authentication 服务的配置文件. 一般来说, 只能在服务器上见到这个服务. 如果你的电脑上有能够连接到 Internet 上的社别, 那么这个IAS 文件夹就不会为空了. 它可能会包含 2 个文件: DNARY.MDb (IAS 日志文件) 和 IAS.MDb (用于储存远程访问策略).我把这个文件夹以及其中的内容都删掉了.然后我还把存在于 C:\WINDOWS\system32 中的以下文件删掉了:iasacct.dlliasads.dlliashlpr.dlliasnap.dlliaspolcy.dlliasrad.dlliasrecst.dlliassam.dlliassdo.dlliassvcs.dllC:\WINDOWS\system32\icsxml我把这个文件夹以及其中的内容都删掉了.其中包含了用于 Universal plug and play(通用即插即用) 的文件.C:\WINDOWS\system32\IME我把这个文件夹以及其中的内容都删掉了.包含了各类输入法文件. (语言文件)注意: 简体中文版用户要小心了, 这里是跟系统自带的输入法紧密相关的地方. 不要乱删.C:\WINDOWS\system32\inetsrv我把这个文件夹删掉了.其中包含了用于 World Wide Web 服务的文件. 一般为空.C:\WINDOWS\system32\Lang我把这个文件夹以及其中的内容都删掉了.C:\WINDOWS\system32\Macromed我把这个文件夹以及其中的内容都删掉了.注意: 这个是用于在线播放 Flash 的控件, Xp Sp2 中的版本为 6, 当前最新为 7, 删掉也没什么关系, 可以在线更新为最新的.C:\WINDOWS\system32\MsDtc我把这个文件夹以及其中的内容都删掉了.这个文件夹包含了与 Microsoft Distributed TransactionCoordinator(分布式事务协调器) 相关的文件, 分布式事务协调器可用于控制不同程序或进程间的的事务输出和消息传递.C:\WINDOWS\system32\mui我把这个文件夹以及其中的内容都删掉了.其中包含了多国语言用户界面的相关文件.C:\WINDOWS\system32\npp我把这个文件夹以及其中的内容都删掉了.这个文件夹包含了一些用于在网络监视服务器上支持收集网络传输的文件.C:\WINDOWS\system32\oobe我把这个文件夹以及其中的内容都删掉了.其中包含了 'Out of box Experience' 文件, 它能帮助用户完成产品激活和注册, 还可用于创建 Administrator 外的新用户.C:\WINDOWS\system32\ras我把这个文件夹以及其中的内容都删掉了.其中包含了拨号网络要用到的默认脚本.C:\WINDOWS\system32\Reinstallbackups我把其中的内容都删了.当其为空时, 我还会把这个文件夹删掉. 当你更新某些驱动时, 有可能会重新生成这个文件夹.C:\WINDOWS\system32\Restore我把这个文件夹以及其中的内容都删掉了.这个就是系统还原. 如果将其删除, 那么就无法使用系统还原了.我从不用系统还原. 我平时用 Acronis TrueImage. 因此我把这个文件夹删掉了.-------------------------------------------------C:\WINDOWS\system32\Setup这个文件夹包含了用于额外服务的安装文件, 例如, Frontpage 服务器扩展以及 Microsoft 传真服务.你需要其中的大多数文件才能正常访问 Windows '可选' 组件向导 (磁盘清理 -> 更多选项 -> 清理).就我个人而言, 用不到那些额外的服务, 也用不到Windows '可选' 组件向导. 因此我把它删掉了, 还把 C:\WINDOWS\system32 中与其相关的 2 个文件删掉了:loadperf.dll ..加载卸载性能计数器resutils.dll ...用于Richedit 1.0 的包装 Dll(用于访问 Windows '可选' 组件向导.)事实上, 我一向都用不到磁盘清理, 因此我把 C:\WINDOWS\system32 中的以下 2 个文件删掉了:CLEANMGR.EXE ...(磁盘清理). 一个用于移除无用临时文件并重新释放已用空间的工具.compact.exe ....文件压缩工具 (压缩文件系统以节省空间.). 没有磁盘清理的话, 那就用不到它了.dataclen.dll ...磁盘清理库文件sysocmgr.exe ....系统可选组件管理器-------------------------------------------------C:\WINDOWS\system32\ShellExt我把这个文件夹删掉了.默认为空.C:\WINDOWS\system32\SoftwareDistribution我把这个文件夹以及其中的内容都删掉了.注意: 我保留了 C:\WINDOWS 下的SoftwareDistribution.System32 下的SoftwareDistribution 没有用, 因为Windows Update 使用C:\WINDOWS 下的同名文件夹. 什么时候System32 下的SoftwareDistribution 才会有用, 那我就不知道了.C:\WINDOWS\system32\spool我把这个文件夹以及其中的内容都删掉了. 因为我没有打印机.这个文件夹是打印系统用于临时存放打印任务以及相关文件的. 其中的printers 子文件夹用于临时存储缓冲文件的. 其它文件夹大都是跟打印机驱动和配置有关的.C:\WINDOWS\system32\usmt我把这个文件夹以及其中的内容都删掉了.USMT 就是用户状态迁移工具. 这个文件夹中包含了与 USMT 以及文件和设置传输向导相关的文件.C:\WINDOWS\system32\wbem (Windows 管理规范)用于基于网络的企业管理存储它的数据和可执行文件. 利用 WMI, 开发人员可以使用与平台无关的命令控制网络设备.这是 Windows 中最能够引起大家误解的组件.即便是 blackViper(他整理的服务,设置相当好), 我也强烈地怀疑他是否彻底地理解了 Windows 管理规范.前两年, 他告诉我保留并启用 WMI 是如何的重要.然而, 这段时间以来, blackViper 改变了他的想法.最近他说: '在 Service pack 1a 中, 这个服务并不是必须的. 然而, 在安装过 Service pack 2 之后, 安全中心和 Windows 防火墙/Internet 连接共享就需要这个服务了.如果你想在服务配置中查看“依存关系” 选项卡的话, 那么这个服务就是必需的. 我不推荐禁用这个服务, 因为将来会有越来越多的应用程序用到这个服务.'大家已经被禁用 Windows 管理规范的问题困扰了很久了. 部分原因是因为blackViper 对“不要禁用” 说不了.现在应该是OK 了, 因为他就是这么说的. 我想大家更愿意听专家的意见...即便专家的意见是错的.平心而论, 我所见过的大多数专家都建议不要禁用这个服务...而且, 他们都没有解释为什么不能禁用这个服务.我知道, 你一定被告知过, 这个 WMI 组件是系统中的一个非常重要的组件. 但我不这样认为.当我运行 SiSoft Sandra 时, 这个程序建议我最好把这个服务禁用掉.当你深入查看磁盘清理时, Windows 甚至会显示一个卸载 WMI 的选项. 只是, 它不允许你这么做. (奇怪, 那为什么要把它列为一个 '可选组件' 呢?)另外, 你知道吗? 当你将其禁用之后, 能够加速启动并减少内存占用.-------------------------------------------------------重要: 首先, 要把 C:\WINDOWS\system32\wbem 中的'framedyn.dll' 移动到C:\WINDOWS\system32 文件夹中. 它是 wbem 文件夹中仅有的一个重要文件.有时当你运行系统还原时, 会出现错误“由于缺少 framedyn.dll, 无法启动系统还原. 请重新安装这个应用程序以解决这个问题”.没有 'framedyn.dll' 的话, 那么当你右击“我的电脑” 时, 可能会出现一个错误. 把这个文件保留在 System32 文件夹中即能避免这种情况的出现.另外, 你还需要禁用“服务” 中的 WMI.当你禁用服务中的 WMI 时, 还会把 Windows 防火墙/Internet 连接共享(ICS) 禁用掉. Windows 会弹出个对话框询问你是否要禁用WMI.在我禁用Windows 防火墙/Internet 连接共享 (ICS) 之前, 我会先把Windows 防火墙关掉:开始 > 控制面板 > 防火墙 > 选择 '关闭 (不推荐)'以下列出的文件属于Windows 防火墙/Internet 连接共享 (ICS).在 C:\WINDOWS\system32\drivers 中:ip6fw.sys .....Ipv6 Windows 防火墙驱动tcpip6.sys ....Ipv6 驱动在 C:\WINDOWS\system32 中:firewall.cpl ..Windows 防火墙控制面板fwcfg.dll .....Windows 防火墙配置助手IpSEC6.EXE ....(Ipv6 安全配置工具).ipsecsvc.dll ..Windows IpSec SpD 服务器 DLLIpV6.EXE ......(Ipv6 配置工具). 一个用于安装和配置 Ipv6 的工具.然后进入安全模式并删除C:\WINDOWS\system32\wbem 文件夹中的内容.最好在安全模式下删除 wbem 文件夹中的内容, 因为有 3 个文件无法在正常情况下删除.在重启之后, 在 C:\WINDOWS\system32 中删除以下 5 个文件:cmprops.dll ....WMI 插件licwmi.dll .....Windows 产品激活配置 WMI 提供称故mmfutil.dll ....WMI 插件助手servdeps.dll ...(WMI 插件) 在重启之前可能无法删除这个'servdeps.dll' 文件. 反正, 它不大重要.)wmimgmt.msc....你可能还需要删除以下文件夹:C:\program Files\Common Files\Microsoft Shared\MSInfo还有它的快捷方式在这里:C:\Documents and Settings\All Users\Start Menu\programs\Accessories 没有 WMI 的话, 系统信息就无法正常工作了.。
VC6编译驱动的⽅法(含32和64位)VC6只是⼀个IDE,可以⽅便的调⽤编译器,链接器,头⽂件,库⽂件,如果编辑和编译驱动能集成在⼀起,这样可以提⾼开发效率。
对于普通的Win32应⽤程序,VC6已经默认⽀持了,⽽对于驱动程序没有设定好的⼯程向导。
其实驱动程序也就是⼀个sys,是通过c语⾔写成,所以编译它理论上没有问题,只是在实际操作上有点⿇烦。
下⾯就来说明⼀下各种平台编译sys驱动的⽅法(包括64位平台)先看32位版本驱动的编译⽅法,⾸先你得准备⼀些编译必备⼯具:1.要安装VC62.安装DDK(装哪个呢?这个问题其实很简单的,只是很多⼈不明⽩,装DDK当然是越新越好了,越新⽀持的平台越多,像2000DDK你是绝对编译不出来64位sys的,因为它没带64位的库和编译器,所以我们选择现在最⽐较新的,2003DDK(WDK也可以),⽀持的平台很多,AMD64,IA64,2000,XP,2003都⽀持)。
好了,这下我们的系统已经安装了最强的开发⼯具VC6,最新DDK,在VC⾥编译各个平台的驱动都没有问题了!开始,假设我们的DDK装在C:/2003DDK⽬录,那么我会发现⾥⾯有很多驱动的例⼦(安装的时候全选),我们选择C:/2003DDK/src/wdm/usb/bulkusb作为我们的实验范例。
第⼀步:打开VC,建⽴⼀个Win32 Application⼯程,然后选择An empty Project(我⽤英⽂版的VC,建议你也换成英⽂版的),意思就是建⽴⼀个空的Win32⼯程,⼯程名字就叫bulkusb,点Finish.第⼆步:将C:/2003DDK/src/wdm/usb/bulkusb/sys(这⾥是驱动代码,另⼀个exe⾥是⽤户程序,不管它)⾥的所有⽂件拷贝到bulkusb⼯程⽬录下。
然后把.h,.c,.rc 导⼊到VC⾥对应的⽬录⾥⾯去。
第三步:然后就是开始设置⼯程选项,把这些代码编译成sys了。
Win32程序快速入门指南1.程序说明示例程序放在Win32ShapeOrg中1.1_tWinMain_tWinMain是程序入口。
while (GetMessage(&msg, NULL, 0, 0))开始为消息处理循环。
如果程序运行到此处将进入一个消息响应过程,即如果有消息就会进入消息响应函数LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 1.2全局初始化如果要做全局初始化可以在tWinMain函数中while (GetMessage(&msg, NULL, 0, 0))前1.3消息响应机制win32程序是基于消息响应的,最核心的模块是消息响应函数LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)消息是依附在某个窗口的。
其中hWnd是窗口句柄,windows程序里,每一个窗口都有一个HWND类型的句柄用于标识这个窗口。
message是UINT类型的消息,实质上整数,消息的其它信息包含在wParam和lParam中1.4绘制函数WM_PAINT是绘制消息,所有和绘制相关的代码都放在WM_PAINT消息响应部分(具体在hdc = BeginPaint(hWnd, &ps);和EndPaint(hWnd, &ps);之间),win32所有绘制函数都带有一个HDC类型设备上下文句柄的参数。
InvalidateRect(hWnd, NULL, true);语句会发出绘制消息。
如果需要更新绘制画面,就可以调用此语句。
Windows绘制机制的基础是图像设备交互(GDI,Graphics Device Interface)。
Brush是用来填充的刷子,绘制的东西是实心的。
windows 7 32位安卓实验平台搭建(离线安装)注:本教程是讲解在Windows 7下搭建安卓开发环境的。
安装目录:步骤1 安装JDK步骤2 安装Android SDK步骤3 安装Eclipse步骤4 安装 Eclipse的ADT插件版本控制,jdk 是6-30的Android SDK 22.6.2 Eclipse的ADT插件同样是22.6.2Eclipse 是windows 32 luna的1、安装JDK运行安装程序【jdk-6u30-windows-i586-p.exe】,分别点击下一步进行安装。
在安装过程中先后会出现两次选择安装目录的界面,全部改为以下路径:jdk安装目录:C:\Java\jdk1.6.0_30jre安装目录:C:\Java\jre6\安装好之后,配置环境变量:打开环境变量窗口方法:右键【我的电脑】--单击【属性】--单击【高级】--单击【环境变量】。
在上方的用户变量中依次新建如下变量,并分别填入如下路径:变量名:JAVA_HOME变量值:C:\Java\jdkjdk1.6.0_30变量名:PATH变量值:%JAVA_HOME%/bin变量名:CLASSPATH变量值:.;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar配置完成之后,分别点击【开始】--【运行】--输入【cmd】--输入【java -version】--按【回车键】,若看到以下信息,则代表配置成功。
2、安装Android SDK将【android-sdk_22.6.2】解压到c:\Java目录下(Android目录自己新建,以后所有关于Android开发相关软件都会统一放到该目录中),得到一个android-sdk-windows文件夹,该文件夹包含如下文件结构:我们只安装4.0.3就可以了add-ons:该目录下存放额外的附件软件。
刚解压后,该目录为空。
附破解常用工具:所謂工欲善其事,必先歷其器!不過做什麼,工具都是非常重要的.不借助工具,我們將寸步難行!下面我就把破解者最常用的工具介紹一下,希望對初學者有點幫助!當然,我不可能給每個工具給出詳細的使用說明,這裡只是告訴大家有什麼工具可以利用,以及到哪裡可以找到這些工具.具體到各種工具的使用,就要大家自己慢慢摸索了:)1)文件查看拿到一個程序,破解的第一步是什麼?"知己知彼,百戰不殆",首先當然應該了解敵人的一舉一動.對我們破解者來說,利用文件查看工具主要是弄清楚程序使用哪種編譯器編譯,是否加殼,何種加殼軟件加的殼等等.1>FileInfoFileInfo可以检测出常见的各种壳,非常方便。
看雪網站上有說FI是各类查壳工具中性能最强的。
版本:3.01作者:Michael Hering(herinmi@tu-cottbus.de)下載地址:/tools/unpac ... ers/Fileinfo/fi.rar2>peid上面介紹的FileInfo確實很強大,不過是命令行的(其實我越來越喜歡命令行的東東了),對於初學者可能不太友善.所以再推薦這款GUI的工具.版本:0.9官方網站:/~snaker/peid/下載地址:/~snaker/peid/PEid.zip2)脫殼加殼1>ASProtect这个壳在pack界当选老大是毫无异议的,当然这里的老大不仅指它的加密强度,而是在于它开创了壳的新时代,seh和各种流行的anti,bpm断点的清除都出自这里,更为有名的当属rsa的使用,使得demo版无法被crack成完整版本,code_dips也源于这里。
版本:1.23官方網站:/下載地址:/files/asprotect123.zip相應的脫殼工具AsprStripper 2.03可以全自动脱ASProtect1.2x的壳,支持EXE和DLL文件,工作平台Windows 2000/XP官方網站:/syd/下載地址:/syd/stripper_v203_public.rarCASPR v1.10ASProtect与Aspack的克星!仅对ASProtect1.2以前版本有效。
WindowsCE目录解析 4.20篇---------------by nasiry转载请说明出处,并通知我windowsCE的目录结构巨大而庞杂,尽管windowsCE的帮助对这个庞大的目录结构进行了说明仍然有很多目录下对应的代码在windowsCE help没有介绍其具体用途,下面就将windowsCE的目录结构进行简单的介绍。
1.SDK在4.2的根目录下存在PLATFORM,PRIVATE,SDK,OTHERS,PUBLIC五个目录。
SDK 是其中最为简单的一个目录结构SDK\BIN\I386下所存放的就是开发所需要的工具集,编译器等等,在这里我就不再啰嗦了。
The SDK directory contains tools that are used by Platform Builder. However,it does not contain the tools that are used to build the image. The toolscontained by the SDK directory are:.. Processor compilersThis directory contains the cross compilers and assemblers for supportedplatforms... Development toolsThis directory contains the tools such as, Error Lookup, GuidGen, and Linkand Nmake... Miscellaneous utilitesThis directory contains the utilities, such as Zoomin, and Windiff.2.other这个目录下的内容比较杂,有诸如ATL,MFC的头文件,运行库等开发应用程序所需的库文件和其一部分代码。
Windows系统目录下文件夹汇总(文章编号:30015)问题描述Windows系统目录下文件夹汇总总结1.C:\WINDOWS\All Users文件夹所有用户文件夹,里面记录了Windows 98系统缺省登录时的桌机文件和开始菜单的内容。
(请看里面的两个文件夹Desktop和Start Menu)2.C:\WINDOWS\Application Data文件夹它是一个应用程序数据文件夹。
该文件夹中只有Microsoft一个目录。
而WINDOWS\Application Data\Microsoft\Internet Explorer\Quick Launch目录中的文件,其实就是任务栏中的快捷方式。
3. C:\WINDOWS\ Applog文件夹它是一个应用程序逻辑目录。
该文件夹中全部是.lgc文件(逻辑文件),记录的是相关文件运行时要调用的文件、读写地址、输出地址等逻辑信息。
如Winamp运行时要调用DLL 文件、WIN.INI文件、VXD文件、TTF文件等,并在Applog文件夹中生成Winamp.lgc。
LGC文件可以用记事本打开查看。
该文件夹中的文件对系统的运行没什么影响。
4. C:\WINDOWS\Catroot文件夹计算机启动辅助测试目录。
目录中的文件内容大多是关于计算机启动时检测的硬软件信息,如光驱信息,键盘信息等。
5. C:\WINDOWS\COMMAND文件夹它是DOS的所有外部命令的”家”。
对于想升级DOS 6.22朋友来说,只需把Windows 98的系统文件传到C盘上,然后把Command文件夹中的文件拷至DOS目录中就可以了!如果你把这些文件的名字改动的话,那么你在dos环境下的命令名就要相对的改动了,例如,你把里面的改名为,那么在dos环境下你想格式化一张软盘时,就再也不是format a:了,而是forma a:了。
6.C:\WINDOWS\Config文件夹对计算机有点基础的应该知道config是什么意思吧,对了,配置,不难想象,它是一个配置文件夹,不过,该文件并不是记录系统的配置情况,而只保存了MIDI乐器的定义文件。
Windows下Qt应用程序开发环境搭建(Eclipse环境)(xucao@)1软件准备如下所有工具都是开源的免费工具:1.编译器+调试器:MinGW 4 .4/misc/MinGW-gcc440_1.zip2.GUI库:GUI库Qt libraries 4.8.4 for Windows (minGW 4.4)/qt4/source/qt-win-opensource-4.8.4-mingw.exe3.主IDE环境:Eclipse IDE for C/C++ Developers/eclipse/technology/epp/downloads/release/juno/SR1/eclipse-cpp-juno-SR1-win32.zip4.Qt的Eclipse插件:Qt Eclipse integration win32 V1.6.1ftp:///qteclipse/qt-eclipse-integration-win32-1.6.1.exe5.版本管理:Subversion 1.7/project/tortoisesvn/1.7.10/Application/TortoiseSVN-1.7.10.23359-win32-svn-1.7.7.msi6.安装打包工具:NSIS Unicode 2.46.5/files/nsis-2.46.5-Unicode-setup.exe7.JRE:/zh_CN/download/manual_v6.jsp8.Eclipse依赖软件a)SVN插件:用于在Eclipse中直接管理SVNb)NSIS插件:用于在Eclipse中直接管理打包脚本这些都可以直接在Eclipse菜单中安装,但内网服务器上文件包已经包含了这些插件,不用另外安装了。
9.辅助IDE环境:Qt Creator 2.6.0 for Windows/qtcreator/2.6.0/qt-creator-windows-opensource-2.6.0.exe注:必要的调试使用,一般不需要,调试时支持QString类型的直接显示10.辅助IDE环境的Debuger:08_QtDebugHelper.rar/share/link?shareid=329331&uk=3105417731注:从老的QtSDK中抽取的(当前官网已经不再开放开源版本的QtSDK下载了)2Qt+Eclipse开发环境安装过程这里给出一个典型的安装流程和默认的安装路径,读者如没有把握请尽量沿着遵循以避免麻烦。
5.2 环境配置5.2.1 Windows开发环境配置1.Microsoft Visual C++ 6.0 GStreamer环境配置(一次性),这样配置仅对当前工程有效:○1.在C盘新建文件夹 Gstreamer。
将GStreamer-WinBuilds-GPL-x86和GStreamer-WinBuilds-SDK-GPL-x86安装到Gstreamer。
○2.打开Microsoft Visual C++ 6.0,文件》新建》Win32 Console Application,输入工程名gst_test单击“确定”,(基础元件播放视频)选择“一个支持MFC 的程序”单击“完成”。
○3. 打开“工程”》“设置”,选择“C/C++”,分类中选择“预处理器”,在“附加包含路径”中添加C:\Gstreamer\sdk\include,C:\Gstreamer\sdk\include\libxml2,C:\Gstreame r\sdk\include\gstreamer-0.10,C:\Gstreamer\sdk\include\glib-2.0 ○4. 打开“工程”》“设置”,选择“连接”,分类中选择“输入”,在“对象/库模块”中添加gstreamer-0.10.lib gobject-2.0.lib glib-2.0.lib在“附加库路径”中添加C:\Gstreamer\sdk\lib2.Microsoft Visual C++ 6.0 GStreamer环境配置(永久性),这样配置对所有工程有效:○1.在C盘新建文件夹 Gstreamer。
将GStreamer-WinBuilds-GPL-x86和GStreamer-WinBuilds-SDK-GPL-x86安装到Gstreamer。
○2.打开Microsoft Visual C++ 6.0,文件》新建》Win32 Console Application,输入工程名gst_test单击“确定”,(基础元件播放视频)选择“一个支持MFC 的程序”单击“完成”。
《白手起家Win32SDK应用程序》 目 录 《白手起家Win32SDK应用程序》 ........................................................................ 1 第一篇、预备知识 ............................................................................................ 2 第二篇、创建Win32工程和主函数 ................................................................. 6 第三篇、增加一个回调函数 ............................................................................. 8 第四篇、注册一个窗口类............................................................................... 10 第五篇、利用已注册的窗口类来创建一个窗口 ............................................. 15 第六篇、显示你创建的窗口 ........................................................................... 19 第七篇、获取消息及对消息缺省处理 ............................................................ 21 第八篇、关闭窗口的同时退出程序................................................................ 25 第九篇、窗口标题栏上显示自定义图标(手动编辑代码) .......................... 28 第一篇、预备知识
白云小飞 1 说在前面 由于VC6及MFC的特点,我们许多人从标准C++学习到VC6MFC应用程序的编程学习的过度会有一个很大的夸跃,从而感到非常的吃力。 究其原因之一:MFC类库设计虽然精巧,但我们在使用MFC设计程序时,会发现MFC到处是API函数的影子。MFC并没有象Delphi的VCL类库,VB的控件库一样封装得让人几乎完全不用知道还有Win32API函数及其操作原理,所以要想利用VC6的MFC编程,我认为就一定要先学习如何直接用Win32API函数来编程。对API编程中的一些关键的概念和原理要有一定认识,这样才会有一个比较平滑的过渡。以上就是我写这个系列的初衷。
2 我假设你已有的知识: 这里我假设你已经掌握了如下的知识,如果你在如下方面知识有点不太清楚,那要去补一补罗,否则你看到相关的内容时会有麻烦的。 下面说是我对你知识的假设: 2.1 Windows系统的文件、文件夹、路径的概念 2.2 C语言的基本知识(基本以等级考试二级C语言为准,还要有所扩充) 2.2.1 指针的概念。 2.2.2 函数指针概念。 2.2.3 各种自定义类型(最重要的是struct类型)的概念。 2.2.4 要知道函数的各种参数传递形式(值、地址、引用传递)。 2.2.5 typedef及其应用。 2.2.6 #include及其应用。 2.2.7 十进制、二进制、十六进制。 2.2.8 按位与、或、非运算的实质。 2.2.9 宏定义概念、使用及意义。 (每个人总是学完了C或C++语法后才会开始用VC6进行Windows编程学习的。但是你的基础又是如何呢?这是一个关键。因此我对你的C知识做了具体的假设。) 2.3 会安装VC6.0并安装到一台机上 2.4 VC6编译界面的各组成部分及基本操作(至少会用VC6写控制台程序)。 2.5 VC6调试中至少要会设置断点哦。 (呵呵!我的要求不过份吧!)
3 还必须预备的知识: 以上知识是你看本系列的前提,不过我还要给你预备一下我们再这个阶段学习中会遇到的新东西。 3.1 你将会接触到的Win32API函数库: 以前的DOS下或Windows的控制台程序下,你要在显示器上输出文字,要用printf(),或cout的函数对象来完。但如果你要显示一个图形或图象或为你的程序设计一个图形化的操作界面等等的,那可就惨了,一切都要你自已完成。复杂得很了!(唉!谁叫DOS是字符界面的操作系统呢!) 现在好了,在Windows下编程你可就轻松得多了。因为Windows操作系统都为我们准备好了,它提供给我们多达数千个函数(啊!我要昏倒了。这么多的函数要学。),我们通过这些函数来操作Windows系统提供给我们的各种功能。比如我要在桌面上创建并显示一个窗口。就只要调用几个相关的被称为API的函数,让Windows来帮助我们完成这些事。我们是通过这些函数与Windows系统交互的,所以这些函数被称作Win32应用程序接口函数,简称Win32API函数。 请不用害怕哟!其实,这么多的函数我们不必都马上一一学过,只要掌握了不多的具有代表性的函数的使用方法,并知道大体API函数都提供了哪些功能就可以了。以后要用时再去查。 Window拥有现成的各种各样的系统功能,供我们的程序调用。那么又是通过什么方式来调用这些系统功能呢?原来,Window还现成提供一个接口,好让我们的程序来使用这些系统功能,这个结口就是Win32API函数了(注:API是应用程序接口的英文缩写)。Win32API函数是我们的应用程序与Windows系统交互的唯一途径。 我并不打算这时就介绍任何一个具体的API函数。你现在只要知道你又要接触一个函数库了——被称为Win32API的函数库,如同你以前所学的C/C++函数库。 哈哈,这真是太好了,我们不用再象DOS一样,自已来完成程序界面的绘制了。我们现在又增加一个全新的函数库,只要调用几个相关API函数,剩下的一切由Windows来完成就可以啦!(当然还有很多其它功能。)
3.2 “新”的数据类型: 学完C、C++之后,我们就可以开始进入VC6的Windows编程学习了。但是在接下来的学习中我们会发现在Windows编程中有许多“新”的数据类型。看下面: BOOL、BYTE、INT、UINT、WORD、DWORD、FLOAT、CHAR、LPSTR、HINSTANCE、HWND、HMENU、HICON等等。 你看这些大写的数据类型,你以前有见过吗?还有很多哦!我们以后的学习过程中还会见到的。(呵呵!你可要有思想准备了!) 这真是让我们初学者迷惑呀!难道VC6中对C/C++的基本数据类型又有重大的扩充了吗? 其实不用害怕,只是用新瓶装旧酒而已了。在VC6的windef.h头文件中已有这些定义: typedef int BOOL; typedef unsigned char BYTE; typedef int INT; typedef unsigned int UINT; typedef unsigned short WORD; typedef unsigned long DWORD; typedef float FLOAT; 在winnt.h中有 typedef long LONG; typedef char CHAR; typedef CHAR *LPSTR, *PSTR; 你看其中(粗体字)CHAR只不过是char 的别名而已,也就是说它们是等价的。只要你包含了相关的头文件,然后你就可以这样申明一个变量: INT i; //等同于int i; CHAR a; //等同于char a; LPSTR pa; //等同于char *pa; 明白了吗? 我想你一定会问:为什么要这样转义呢?我们直接用int 、unsighed int、char等等不就行了吗?我一句两句也说不清,你只要知道,微软这样做一定是要道理的。 哦!还有这些HINSTANCE、HWND、HMENU、HICON我没说呢!今后你还会见到许多这样以H为开头的数据类型,下面就让我在下一节的“句柄”概念中说给你听。
3.3 “句柄”概念 由windows系统创建出来的或加载的对象(如应用程序进程、线程、窗口、菜单、图标、光标等等的对象),windows系统都会分配给它们一个唯一的标识值,作为这些对象的标志,称之为句柄。我们程序中对这些对象的操作其实就是对其句柄的操作。请记住,句柄就是这些对象的“代号”了。 在编程序中,我们需要用相应的句柄变量来保存这些句柄值,那么用什么类型的句柄变量呢? 就是我们前面提到过的HINSTANCE、HWND。 像其它变量一样(如:int a;)申明句柄变量,如下: HINSTANCE hst; //hst变量可以保存某个应用程序实例(即一个进程)的句柄。 HWND hwFirst; //hwFrist变量可以保存某个窗体句柄。 HMENU hMenu; //hMenu变量可以保存某个菜单句柄。 HICON hIcon; //hIcon变量可以保存某个图标句柄。 具体的使用让我以后再慢慢与你道来啦。 那么这些类型的实质又是什么? 目前,它们都只是一个int类型(小语:我听说微软也许以后会改变它的类型)。不过不管怎样,你现在只要把HINSTANCE、HWND、HMENU、HICON当做是一个独立的数据类型就可以了。
3.4 消息标识 Windows系统是一个基于消息的系统。这样的机制导致我们的程序与以往DOS下的程序流程会有很大的不同。(这可是很考我们的智慧喽!)
从软件使用者角度看一个Win32窗口程序运行的过程: 1) 我们运行一个应用程序,程序创建并显示一个我们想要的程序窗口。 2) 当我们对窗口进行操作时(如单击、双击、右击、按下键盘、最大化、最小化、关闭窗口等等),程序会完成特定的操作,如:单击最大化、最小化按钮时,窗口会最大化、最小化操作;对窗口中菜单项的选取时,会完成该菜单的相应功能。
从程序员的角度看一个Win32窗口程序运行的过程: 1) 我们运行一个应用程序,程序中我们通过Win32API函数创建并显示一个我们想要的程序窗口。(由我们的程序来调用函数实现) 2) 当我们对窗口进行操作时(如单击、双击、右击、按下键盘、最大化、最小化、关闭窗口等等),窗口会自动产生一系列相应的消息(这是由操作系统实现的)。 3) 具体地讲:当我们改变窗口大小时,会产生WM_SIZE消息;单击关闭按钮关闭窗口时,会产生WM_CLOSE消息;选取某一菜单项时,会产生WM_COMMAND消息;按下键盘时,会产生WM_CHAR、WM_KEYDOWN、WM_KEYUP消息;单击鼠标左键时,会产生WM_LBUTTONUP、WM_LBUTTONDOWN消息等等。啊,很多很多,我也不必全部罗列出来了。(我说过了,这些都是由操作系统实现的) 4) windows系统会将这些消息排入我们窗口所在线程的消息队列中(你会明白线程是什