使用VS2012调试ReactOS源码

目录

  1. 一 下载并安装VS2012
  2. 二 下载并安装WDK80
  3. 三 下载ReactOS0315源码
  4. 四 下载并安装RosBE211
  5. 五 用RosBE命令行编译ReactOS源码
  6. 六 用VS2012编译ntoskrnl模块
  7. 七 制作ReactOS安装盘
  8. 八 用VirtualBox安装ReactOS
  9. 九 建立调试环境
  10. 十 调试ReactOS源码

一. 下载并安装VS2012

我安装的是VS2012_ULT_chs.iso, 网上随便下载

二. 下载并安装WDK8.0

下载地址: http://msdn.microsoft.com/zh-cn/windows/hardware/hh852365

安装完之后打开VS2012, 会发现新建项目中多了一些Driver项目, 菜单栏上也多了一个菜单项DRIVER

三. 下载ReactOS0.3.15源码

下载地址: http://download.reactos.org/reactos/ReactOS/0.3.15/

下载ReactOS-0.3.15-REL-src.zip, 解压缩到D:\ReactOS

四. 下载并安装RosBE2.1.1

下载地址: http://download.reactos.org/reactos/RosBE-Windows/i386/2.1.1/

下载RosBE-2.1.1.exe, 安装完之后记得导入生成的注册表文件, 然后把bin目录添加到环境变量path中

我的安装路径为D:\ProgramFiles\RosBE, 把D:\ProgramFiles\RosBE\Bin添加到环境变量path中

五. 用RosBE命令行编译ReactOS源码

1. 双击ReactOS Build Environment进入编译环境, 因为安装RosBE时选择了ReactOS源码位置, 所以自动进入了D:\ReactOS

2. 输入configure.cmd生成目录output-MinGW-i386

3. 输入cd output-MinGW-i386\host-tools, 进入D:\ReactOS\output-MinGW-i386\host-tools, 输入make 编译生成tools

4. 输入cd ..\reactos, 输入make bootcd, 编译生成bootcd.iso

六. 用VS2012编译ntoskrnl模块

1. 打开VS2012 X86命令行工具, 进入D:\ReactOS, 输入configure.cmd VSSolution生成目录output-VS11-i386

2. 下面这些文件夹或者文件需要修正一下, 否则在编译过程中会因为编码问题出现错误

下载地址: http://download.csdn.net/detail/ayang1986/7731527

. kbdcz
D:\ReactOS\dll\keyboard\kbdcz\kbdcz.c

. kbdhu
D:\ReactOS\dll\keyboard\kbdhu\kbdhu.c

. butterflies
D:\ReactOS\modules\rosapps\applications\screensavers\butterflies\lang

. ctm
D:\ReactOS\modules\rosapps\applications\sysutils\ctm\lang

. cylfrac
D:\ReactOS\modules\rosapps\applications\screensavers\cylfrac\lang

. kernel32
D:\ReactOS\dll\win32\kernel32\winnls\nls

. matrix
D:\ReactOS\modules\rosapps\applications\screensavers\matrix\lang

. mazescr
D:\ReactOS\modules\rosapps\applications\screensavers\mazescr\lang

. ntvdm
D:\ReactOS\subsystems\ntvdm\lang

. starfield
D:\ReactOS\modules\rosapps\applications\screensavers\starfield\lang

. usetup
D:\ReactOS\base\setup\usetup\lang

3. 进入D:\ReactOS\output-VS11-i386\host-tools, 打开工程文件REACTOS.sln, 编译生成ALL_BUILD

4. 进入D:\ReactOS\output-VS11-i386\reactos, 打开工程文件REACTOS.sln, 编译生成ALL_BUILD(漫长的等待...........................................................................................)

因为我们只用到工程ntoskrnl生成的ntoskrnl.exe, 所以也可以只编译生成工程ntoskrnl, 以节约时间 !

5. 现在D:\ReactOS\output-VS11-i386\reactos\ntoskrnl\Debug目录下应该已经生成了ntoskrnl.exe和ntoskrnl.pdb

七. 制作ReactOS安装盘

在第六步中, 其实我们用VS20120编译工程bootcd也可以生成bootcd.iso, 但是不知为何在虚拟机中不能引导安装, 因此我们需要第五步生成的bootcd.iso

1. 用光盘映像编辑工具(UltraISO)打开第五步生成的bootcd.iso

2. 用第六步生成的ntoskrnl.exe和window 2003系统中的kdcom.dll替换bootcd.iso中的同名文件, 保存生成新的bootcd.iso

八. 用VirtualBox安装ReactOS

1. 下载并安装VirtualBox, 我使用的是VirtualBox-4.3.12-93733

2. 新建虚拟机, 选择载入第七步生成的bootcd.iso

3. 设置串口参数

4. 启动虚拟机, 安装ReactOS, 建议选择English版本进行安装. 安装过程中会重启一次, 按照步骤来就好了

5. 安装完成后启动进入选择界面, 选择ReactOS (Debug)启动

九. 建立调试环境

1. 打开VS2012(Win7, Win8 要以管理员身份运行), 选择菜单DRIVER -> Test -> Configure Computers, 打开Computer Configuration窗口

2. 点击Add New Computer, 在Computer name:中输入你真实的计算机的名字(不是虚拟机中计算机的名字), 下边三个选项选择最后一项”Manually configure debuggers and do not provision”,手动配置调试

3. 按下图配置调试参数

Connection Type选为Serial (串口)
(波特率)Baud Rate 115200
 (管道)Pipe勾选
(重连接)Reconnect勾选
(管道名)Pipe name  \\.\pipe\com_debug
这几个选项是根据第八步的虚拟机设置来设置的
最后点击下一步, 完成。

4. 在vs2012中选择菜单  工具 -> 附加到进程, 打开附加到进程窗口

传输:Windows Kernel Mode Debugger
限定符:就是我们上面添加的计算机名

选择Kernel进程, 点击附加进入调试状态

5. 在VirtualBox虚拟机中按Tab+K产生中断, VS2012捕获该中断

十. 调试ReactOS源码

1. 在VS2012中打开源码文件 D:\ReactOS\ntoskrnl\ps\process.c, 在函数PspCreateProcess处按F9下断点

2. 按F5恢复虚拟机运行, 然后在虚拟机中随便运行一个程序创建新的进程, 则虚拟机会中断到刚才设置的断点位置, 开始调试吧 !!!

用RosBE2.1 生成Reactos和VC工程

1. 首先下载 源码和RosBE   从网站 https://www.reactos.org

2. 安装好RosBE 并选择好源码目录

3. 进入VS2010的命令行环境, 然后切换到Ros源码目录

4. 如果没有包含RosBE的CMake路径

SET PATH=%PATH%;D:\RosBE\Bin\              (这里假设你将Rosbe安装在D盘的RosBE文件夹)

然后执行 configure.cmd VSSolution

即可生成VS2010的工程 在Ros源码目录的 output-VS10-i386\reactos 目录下

现在我们可以浏览Ros源码了

一:ReactOS简介

ReactOS是一个基于 Windows NT 架构(Windows XP, Windows 7, Windows Server 2012 等均基于 Windows NT 架构)设计原则的开源操作系统。由于所有的代码都经过重新编写,ReactOS 并不是一个基于 Linux 的操作系统,而且不包含任何 UNIX 架构。

ReactOS项目的主要目标是提供一个与 Windows 环境二进制兼容的操作系统。它能让您的 Windows 应用程序和驱动程序如同在 Windows 上一样运行。此外,由于应用了 Windows 操作系统的外观特性,已经熟悉 Windows? 用户界面的用户在使用 ReactOS 时将驾轻就熟。ReactOS 的终极目标是使您能够在感觉不到最终用户体验变化的前提下,使用 ReactOS? 来替代 Windows 。

自由软件倡导者认同自由软件操作系统现状的改善促进了竞争,ReactOS也同样获益匪浅ReactOS是最完整的类 Windows®操作系统的工作平台, 因此,参与开发的程序员需要花费许多精力去学习ReactOS源码 和研究ReactOS开发文档。

ReactOS组件也越来越多,兼容性也越来越好,但 ReactOS 不会有任何束缚。 ReactOS已经并将继续吸收最新版本的Win32 API,跟踪甚至发展最新的操作系统技术 。尽我们所能,使用最新的技术,并不断的融合新的特点到最新版本。简单地说,ReactOS目标就是用您的硬件设备去运行您的应用程序,最后,诞生一个任何人都可以免费使用的 FOSS 操作系统。

二:ReactOS功能概述

到了 2005年,ReactOS 内核已经十分稳定,大多数给上层程序开发使用的API均制作完成,并且拥有了一个基本的GUI窗口界面。ReactOS 已经具有一个与 Windows浏览器类似的 ReactOS Explorer 作为系统操作界面。

  • ReactOS 0.2 版可以运行相当多数的 Win32 应用程序,并拥有自己的 Notepad(记事本,基本的文本编辑器)、Regedit(系统注册表编辑器),Cmd(命令行提示符)和几个其他的大型应用(比如 AbiWord 文字编辑器)以及一些游戏(Quake 和 Quake II,Wine 的扫雷克隆)。
  • 0.2.5 版主要工作在于声卡、网卡的驱动支持。Lynx文本网页浏览器抓取网页的萤幕撷取图展示了,不过这个功能尚待进一步改进。这个版本更加入了Ext2文件系统和 GRUB boot loader 的支援,让 ReactOS 与 Linux分区 共存。
  • 自0.2.6版起,Dillo、mIRC 和网页浏览器Mozilla Firefox的DCOM元件可于ReactOS内运行。部份游戏如 Unreal Tournament 和 Deus Ex 则已知能以软件渲染的方式运作。使用 nVidia-Driver 或者 Mesa 3D 的软模式,OpenGL 的运行只剩下一些小问题。第一个网络服务器Tiny Web Server和 The UltraVNC Client宣布运行成功。从右图可见,OpenOffice(1.x版)也有部份可以执行了。
  • 自版本0.2.8,TCP/IP的部份元素开始运作,还有更多的应用程序例如 Notepad、AbiWord、OpenOffice、Deus Ex 和 Unreal Tournament。声音及USB支援尚在制作中(SB16半工作、USB OHCI 和 UHCI 则仍须劳力) USB功能“借”自 Cromwell。Plug and Play的开发工作、与及WDM的支持亦已展开。除了字符网页浏览器Lynx,ReactOS 更可以以 Mozilla 的 DCOM元件以图像方式浏览网页。
  • ReactOS 0.2.8 能侦测自己是否在 VMWare 中运行,继而到 VMWare Tools ISO 安装SVGA驱动以提供更佳的GUI表现。CSRSS 经已完全重写, 一个“重头写起”的 Ws2_32 也预计即将完工。在Trunk里面有些运作上还可以的ddraw,dplay和dplayx元素。

三:ReactOS开源官网

ReactOS开源网站的网址:https://www.reactos.org/ ,官网截图如下所示:

三:ReactOS开源代码的架构

用一张ReactOS源代码的架构图片,来说明更有价值些,如下所示:

我这里下载的是ReactOS-0.3.15,最新版本的是React-0.3.16,我们下载最新版本的,我只是想研究和了解下WINDOWS NT的内核架构,所以代码的版本并不是很重要!

源码的下载网址为:http://sourceforge.net/projects/reactos/files/

有空慢慢分析ReactOS的设计思想,当然也会借鉴WINCE的OS的思想,两者结合起来分析吧……

1:    首先从https://www.reactos.org/wiki/ReactOS_Build_Environment下载Reactos BE 工具,安装时会让指定ReactOS的源代码文件夹路径,安装完成后桌面会自动生成一个注册表文件,将这个注册表文件导入

2:    打开VS2012命令行工具,切换到ReactOS源码文件夹,键入命令 configure.cmd VSSolution ,之后会在源码目录生成VS的工程.over

ReactOS 是一个基于 Windows NT 架构设计原则的开源操作系统。ReactOS 项目的主要目标是提供一个与 Windows 环境二进制兼容的操作系统。它能让您的 Windows 应用程序和驱动程序如同在 Windows 上一样运行。此外,由于应用了 Windows 操作系统的外观特性,已经熟悉 Windows 用户界面的用户在使用 ReactOS 时将驾轻就熟。ReactOS 的终极目标是使您能够在感觉不到最终用户体验变化的前提下,使用 ReactOS 来替代 Windows。

工具/原料

  • VMware workstation 虚拟机
  • React OS系统镜像

配置虚拟机

  1. 1打开VMware workstation,点击创建新的虚拟机

  2. 2安装来源选择你事先下载好的react os 镜像

  3. 3选择客户机操作系统。由于VMware虚拟机不提供react os操作系统简易安装,又因为ReactOS 是一个基于 Windows NT 架构设计原则的开源操作系统,因此选择windows NT作为客户机操作系统。

  4. 4更改虚拟机名称,安装位置等。。。磁盘大小根据个人需要合理选择。

  5. 5查看虚拟机配置,完成设置,开启虚拟机。

React OS系统基础安装

  1. 1开启虚拟机后,出现安装画面。语言最好还是选择英语,如果你选择简体中文【Chinese(PRC)】,最坏的情况就是在以后的安装界面中,中文无法显示,界面里全是方框(有密集恐惧症的千万别试TAT)。

  2. 2你看得懂英文也好,看不懂也罢,反正后面的使劲按Enter键就行了(如果你不打算分区的话)。大致意思是欢迎安装React OS,它还处于早期发展阶段,不能完美支持所有的基础应用,以及安装配置。

  3. 3(如果你打算分区,出现下面界面时,按上下键选择系统安装分区;按Enter在高亮显示的分区中安装系统;按c创建分区;按d删除已有分区)

  4. 4格式化分区。提供fat和ext2两种文件系统格式,其中fat多用于windows系统,而ext2多用于linux系统。(这两种文件系统格式都算得上是老古董了。。。)

  5. 5选择安装根目录

  6. 6按Enter开始安装

  7. 7在硬盘上安装引导程序(MBR和UBR)即第一项。没事你选最后一项干啥。。。

  8. 8React OS基础部分就安装完了,按Enter重启。

React OS 驱动安装及系统基础设置

  1. 1每次开启都有这个引导界面,默认第一项就行。

  2. 2欢迎界面及GPL许可证查看界面

  3. 3更改系统设置和键盘布局设置,填写用户名称及密码,设置时区和时间

  4. 4安装VMware tools时,一定要注意先在虚拟机目录中点安装VMware Tools,再点next。(按Ctrl+Alt键释放鼠标)【不懂原因看英文】

  5. 5完成安装。重启开始探索React OS吧

注意事项

  • React OS仍在 alpha 试验阶段,建议不要在React OS环境下进行比较重要的工作。
  • React OS能兼容的硬件和软件比较有限,但稳定性比较好,并且开源免费。
  • 安装中或安装完后遇到问题的可以多逛一下React OS官网或论坛。
时间: 2024-10-14 11:43:06

使用VS2012调试ReactOS源码的相关文章

查看和调试Qt源码(动态编译的QT也可进入源码)good

简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进入.有人说需要静态编译 Qt 才可以,其实不然,只需要简单的几个配置就可以搞定. 简述 Qt 版本及安装 配置 Qt Creator 源码调试 更多参考 版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820 Qt 版本及安装 Qt 针对 Win

设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的1

最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u92-windows-x64),JDK安装路径里有个"src.zip"就是JDK的源码文件压缩包: 设置好环境变量的JAVA_HOME变量和PATH变量(JAVA_HOME变量值也是D:\Java\jdk-8u92-windows-x64). 然后打开Eclipse设置可以Debug模式调试

js调试系列: 源码定位与调试[基础篇]

js调试系列目录: - 如果看了1, 2两篇,你对控制台应该有一个初步了解了,今天我们来个简单的调试.昨天留的三个课后练习,差不多就是今天要讲的内容.我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码其实非常简单,点放大镜选中那个推荐即可.这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置.其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看.我在控制台输入 voteP

Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)

一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为了安全或者效率问题,会把一些重要的功能放到native层,那么这样一来,我们前篇说到的Eclipse调试smali源码就显得很无力了,因为核心的都在native层,Android中一般native层使用的是so库文件,所以我们这篇就来介绍如何调试so文件的内容,从而让我们破解成功率达到更高的一层.

VS2010下调试.NET源码

微软走向开源,是时候用vs去单步调试进入源码了.参考地址:http://blog.csdn.net/waxgourd0/article/details/6600182 可供参考的文章:https://msdn.microsoft.com/en-us/library/Cc667410.aspx 1.工具- 选型 – 调试 - 常规,按照下图修改我框起来的地方: 2.工具- 选项 – 调试 - 符号,按照下图进行配置: 这里注意你只需要在位置里添加http://referencesource.mic

Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)

一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk  主要采用的是静态方式,步骤也很简单,首先使用apktool来反编译apk,得到smail源码,然后分析smail代码,采用代码注入技术来跟踪代码,然后找到关键方法进行修改,进而破解,同时还可以使用一些开源的hook框架,比如:Xposed和Cydia Substrate,来进行关键方法的hook.所以这里我们可以看到我们破解的第一步是使用ap

使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引擎之前,我们可以不那么方便地在我们创建的工程里调试Cocos2d-x的代码,当我们使用了整合后的Cocos引擎,调试Cocos2d-x的代码就变得更加,非常不方便了! 使用Cocos2d-x创建的项目,在最先的版本必须是在Cocos2d-x引擎的目录下,放到其他的位置需要进行各种麻烦的设置,诸如头文

netbeans工具使用xdebug断点调试php源码

对有有经验的程序员,使用echo.print_r().print_f().var_dump()等函数足以调试php代码,如果需要在IDE工具中使用断点调试,xdebug就是一个非常好的php调试工具.对于不熟悉的代码,可以用Xdebug一步一步的查看请求过程和代码执行过程. 准备工作本地部署的server环境,推荐用phpStudy(内置xdebug),开启php扩展就可以了,不用单独下载xdebug.(下载与php版本对应的xdebug:http://www.xdebug.org) 配置以下三

设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的值

最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u92-windows-x64),JDK安装路径里有个"src.zip"就是JDK的源码文件压缩包: 设置好环境变量的JAVA_HOME变量和PATH变量(JAVA_HOME变量值也是D:\Java\jdk-8u92-windows-x64). 然后打开Eclipse设置可以Debug模式调试