电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

用bochs调试ntldr

  • 资源ID:40494520       资源大小:32KB        全文页数:8页
  • 资源格式: DOC        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

用bochs调试ntldr

用用 BochsBochs 调试调试 NTLDRNTLDR用 Bochs 调试 NTLDR作者:未知 来源:从互联网收集整理并转载 发布时间:2005-3-9 1:36:50减小字体 增大字体用 Bochs 调试 NTLDR2004-8-6 9:27:14转自中华补天网用 Bochs 调试 NTLDR作 者:于旸邮 件:tombkeeper0x40nsfocus0x2ecomtombkeeper0x40xfocus0x2eorg完成于:2004.7.9关键字:bochs, bochsdbg, ntldr, 调试对一台安装了 Windows NT 系列操作系统的 PC 来说,按下电源开关之后,CPU 中首先开始运行的是 Bios,然后是 MBR,接着是引导扇,然后就是 NTLDR。 ntoskrnl.exe 和 hal.dll 都是 NTLDR来加载的。也就是说,运行 NTLDR 的时候,系统中还没有任何应用程序或者驱动,当然也就没有任何基于软件的调试器可用。当然,无所不能的硬件调试器肯定是可以的,可惜我们没有硬件调试器。幸好有了 Bochs。Bochs 是一个基于 LGPL 的开源 x86 虚拟机软件。Bochs 的 CPU 指令是完全自己模拟出来的,这种方式的缺点是速度比较慢;优点是具有无以伦比的可移植性:有 Gcc 的地方就可以有 Bochs。甚至已经有了跑在 PocketPC 上的 Bochs。现在的 Bochs 已经实现了一定程度的调试功能,虽然在易用性和功能上还无法和 WinDbg、SoftICE 相比,但优势也是很明显的:对跑在 Bochs 里面的代码来说,这就是“硬件调试器” 。对 Windows 版本的 Bochs 来说,安装目录下的 bochsdbg.exe就是 Bochs 的调试版本。用它来运行 Bochs 虚拟机就可以进行“硬件调试” 。Bochs 的调试命令风格是按照 GDB 习惯来设计的,这对于用惯了 WinDbg 的人来说无疑是痛苦的,好在这是个开源软件,看着不顺眼可以考虑自己改改。目前版本的 Bochs(Version 2.1.1)支持的调试命令如下:注意1、Bochs 的文档和帮助信息中的使用说明与真实情况之间存在很大的差错和缺失,下面的命令说明根据源码作了很多补充和修正。2、其中涉及到的 seg(段) 、off(偏移) 、addr(地址) 、val(值)等数字,可以使用十六进制、十进制或者八进制,但必须按照如下形式书写:十六进制 0xCDEF0123八进制 01234567十进制 123456789尤其要注意,Bochs 不能自动识别 16 进制的数字,也不接受12345678h 这种写法。执行控制c|cont 向下执行,相当于 WinDBG 的“g” 。s|step|stepi count 单步执行,相当于 WinDBG 的“t” ,count 默认为 1。p|n|next 单步执行,类似于 WinDBG 的“p” 。q|quit|exit 退出调试,同时关闭虚拟机。Ctrl-C 结束执行状态,返回调试器提示符。Ctrl-D if at empty line on command line, exit(至少在 Windows 版本中我没有发现Ctrl-D 有什么功能)执行断点vb|vbreak seg:off 在虚拟地址上下断点。lb|lbreak addr 在线性地址上下断点,相当于WinDBG 的“bp” 。pb|pbreak|b|break addr 在物理地址上下断点。 (为了兼容GDB 的语法,地址前可以加上一个“*” ) 。blist 显示断点状态,相当于 WinDBG 的“bl” 。bpd|bpe num 禁用/启用断点,WinDBG 的“be”和“bd” 。num 是断点号,可以用 blist 命令查询。d|del|delete num 删除断点,相当于 WinDBG 的“bc” 。mum 是断点号,可以用 blist 命令查询。读写断点watch read addr 设置读断点。watch write addr 设置写断点。unwatch read addr 清除读断点。unwatch write addr 清除写断点。watch 显示当前所有读写断点。unwatch 清除当前所有读写断点。watch stop|continue 开关选项,设置遇到读写断点时中断下来还是显示出来但是继续运行。内存操作x /nuf addr 显示线性地址的内容xp /nuf addr 显示物理地址的内容n 显示的单元数u 每个显示单元的大小,u 可以是下列之一:b BYTEh WORDw DWORDg DWORD64注意: 这种命名法是按照 GDB 习惯的,而并不是按照 inter 的规范。f 显示格式,f 可以是下列之一:x 按照十六进制显示d 十进制显示u 按照无符号十进制显示o 按照八进制显示t 按照二进制显示c 按照字符显示n、 f、u 是可选参数,如果不指定,则 u 默认是 w,f 默认是x。如果前面使用过 x 或者 xp 命令,会按照上一次的 x 或者 xp 命令所使用的值。n 默认为 1。 addr 也是一个可选参数,如果不指定,addr 是 0,如过前面使用过 x 或者 xp 命令,指定了 n=i,则再次执行时 n 默认为 i+1。setpmem addr size val 设置物理内存某地址的内容。需要注意的是,每次最多只能设置一个 DWORD:这样是可以的:setpmem 0x00000000 0x4 0x11223344x /4 0x00000000bochs:0x00000000 : 0x11223344 0x00000000 0x00000000 0x00000000这样也可以:setpmem 0x00000000 0x2 0x11223344x /4 0x00000000bochs:0x00000000 : 0x00003344 0x00000000 0x00000000 0x00000000或者:setpmem 0x00000000 0x1 0x20x /4 0x00000000bochs:0x00000000 : 0x00000020 0x00000000 0x00000000 0x00000000下面的做法都会导致出错:setpmem 0x00000000 0x3 0x112233Error: setpmem: bad length value = 3setpmem 0x00000000 0x8 0x11223344Error: setpmem: bad length value = 8crc start end 显示物理地址 start 到 end 之间数据的CRC。寄存器操作set $reg = val 设置寄存器的值。现在版本可以设置的寄存器包括:eax ecx edx ebx esp ebp esi edi暂时不能设置:eflags cs ss ds es fs gsr|reg|registers reg = val 同上。dump_cpu 显示完整的 CPU 信息。set_cpu 设置 CPU 状态,这里可以设置dump_cpu 所能显示出来所有 CPU 状态。反汇编命令u|disas|disassemble /num start end反汇编物理地址 start 到end 之间的代码,如果不指定参数则反汇编当前 EIP 指向的代码。num 是可选参数,指定处理的代码量。set $disassemble_size = 0|16|32 $disassemble_size 变量指定反汇编使用的段大小。set $auto_disassemble = 0|1 $auto_disassemble 决定每次执行中断下来的时候(例如遇到断点、Ctrl-C 等)是否反汇编当前指令。其他命令trace-on|trace-off Tracing 开关打开后,每执行一条指令都会将反汇编的结果显示出来。ptime 显示 Bochs 自本次运行以来执行的指令条数。sb val 再执行 val 条指令就中断。val 是 64-bit 整数,以 L 结尾,形如“1000L”sba val 执行到 Bochs 自本次运行以来的第 val条指令就中断。val 是 64-bit 整数,以 L 结尾,形如“1000L”modebp 设置切换到 v86 模式时中断。record “filename“ 将输入的调试指令记录到文件中。文件名必须包含引号。playback “filename“ 回放 record 的记录文件。文件名必须包含引号。print-stack num 显示堆栈,num 默认为 16,表示打印的条数。?|calc 和 WinDBG 的“?”命令类似,计算表达式的值。load-symbols global filename offset载入符号文件。如果设定了“global”关键字,则符号针对所有上下文都有效。offset 会默认加到所有的symbol 地址上。symbol 文件的格式为:“%x %s“。info 命令info program 显示程序执行的情况。info registers|reg|r 显示寄存器的信

注意事项

本文(用bochs调试ntldr)为本站会员(kms****20)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.