WinDbg学习笔记五 - 内存,寄存器

windbg使用教程 阅读详情

WinDbg也提供了一系列命令来访问内存跟寄存器。


以之前调试的程序状态为例,来演示几个常用的命令。



开始之前先介绍命令?,用来查看符号的值。比如?speed,则会显示出speed的值,即它的地址。


左边是10进制的值,右边是16进制。可以看到当前的地址是0133f9b8.


输入db 0133f9b8, 按字节来查看该地址的值。


或者dw 0133f9b8 或者 dd, 按word或者dword来查看。


如果直接用d命令,则会按照上一次的选项来查看。如果不带地址,则是从上一次显示结束的地方继续查看。


e* 系列命令跟d*类似,不同的是e是写入。比如eb 0133f9b8 1 1 1 1, 则会把1 1 1 1一次写入。



dv用于查看局部变量的值,比如dv speed。


或者用dv查看全部的当前作用域下的值,

另外还可以用扩展命令!address来查看指定的内存地址信息。如



寄存器的操作:

r命令可以用来查看或者修改寄存器以及伪寄存器。当然也可以用?来查看。



用r显示如下,



这个时候就可以用dt命令来查看它的结构。



windbg查看GDT表的基址和长度 段描述符查分实验 段选择子拆分实验 1.在windbg中查看GDT表的基址和长度 2.分别使用dd dq指令查看GDT表 3.段描述符查分实验 拆5个 4.段选择子拆分实验 追加练习 使用LES,LDS等指令修改段寄存器 阅读详情

相关推荐

解决WinDbg寄存器窗口无内容的实用技巧

本文针对WinDbg调试时寄存器窗口无内容显示的常见问题,提供了详细的排查与修复指南。核心解决方案包括手动补全缺失的dbgeng.dll文件、通过启动命令参数初始化视图,以及检查符号路径等进阶排查方法。文章旨在帮助开发者快速恢复寄存器窗口功能,确保调试工作顺利进行。

yhn456789的博客 982

WinDbg常用指令

1.r :显示寄存器的信息也可用来更改寄存器信息 2.a:使用汇编的格式在内存中写入一条机器指令。 3.p/t指令:执行内存单元中的指令。 p命令执行单个指令或源代码行,并可选地显示所有寄存器和标志的结果值。当子例程调用或中断发生时,它们被视为单个步骤。 用户模式: 1 [~Thread] p[r] [= StartAddress] [Count] ["Command"] 内核模式: 1 p[r] [= StartA

weixin_46465532的博客 2117

WinDbg使用教程:全面讲解寄存器查看技巧

通过实战演示详细解析WinDbg中各类寄存器的查看技巧,帮助调试人员快速定位问题。结合windbg使用教程与调试实践,提升内核分析效率。

weixin_33256096的博客 1113

【WinDbg】常用窗口、内存符号命令、调试命令;常用流程,入口函数下断点。

【WinDbg】常用窗口、内存符号命令、调试命令;常用流程,入口函数下断点。

多丰富下自己呀 750

【windbg】调用栈分析

一些心得和说明 windbg 还不熟,如有错误,请指正。 调用栈鼓捣了好久,一直没整明白。每次都打算弄明白,结果还是...(泪目啊)。今天,不慌不忙的,把windbg的打印信息都copy出来,再把 ebp、esp、eip都挑出来,看它们的地址变化,然后再,整个表格,看他们是怎么跳转的... 再参考下 对于ESP、EBP寄存器的理解,慢慢的就有头绪了,所以,一定要有耐心,心细梳理。 图 01 创建MFC程序 创建MFC程序,使用以下代码。(参考:对于ESP、EBP寄存器的理解) int FunA

xl19900502的专栏 1172

【愚公系列】2023年06月 内存分析之WinDbg(安装和基本介绍)

WinDbg是Windows Debugger的缩写,是一款由微软提供的高级调试工具,主要用于对Windows操作系统及其应用程序进行调试和分析。WinDbg的功能包括:支持对本地和远程计算机进行调试。支持多种调试器命令,包括检查和修改寄存器、内存、线程状态等。支持分析进程的崩溃信息和日志,以及执行调试。支持对Windows内核进行调试,包括内核模式驱动程序、系统服务等。使用WinDbg的基本流程如下:下载和安装WinDbg。打开WinDbg,启动调试器。选择要调试的程序或进程。

愚公智库 4337

windbg与Bochs一些调试命令笔记

Windbg 分为三种命令: 标准命令, 点号(.)开头的元命令以及感叹号(!)开头的拓展命令 dd/dw/db: 以dword/word/byte方式查看内存 da xxx: 显示xxx地址处的ascii表示 df xxx:浮点显示 dv: 查看变量内容 du: 查看内存中UNICODE值 display type(dt): 显式结构体内部 (_eprocess, _KPROCESS, _DISPATCHER_HEADER) u: 查看反汇编, 后面加地址 ub: 查看当前指令之前内容的反汇编 uf:

輚至消亡 1064

WingDbg_v1.0双机调试看不到寄存器_调试_windows_windbg_

解决win10下windbg无法显示寄存器的BUG,老外写了一个补丁的扩展。下载编译好的wingdbg.dll,放windbg相同目录下,执行!wingdbg.regfix,重新打开寄存器窗口就OK了。

windbg修改内存,查找地址

请注意,修改内存中的指令可能会导致程序行为异常,特别是如果你修改的是正在执行的代码。在例子中,将 “hello” 写入到指令指针指向的地址可能会导致程序在尝试执行这些字节时崩溃,因为它们不是有效的指令。这个地址处的内存内容以十六进制形式显示,紧接着的是 ASCII 表示的字符串 “hello”,后面跟着几个。是 32 位架构中的指令指针寄存器的名称,在 64 位架构中,指令指针寄存器的名称是。指向的地址,这通常是你当前正在执行的指令的地址。命令来搜索内存中的字符串。,这是一个故意的断点,通常用于调试目的。

zhuqiyua的博客 1211

SAP MM新手避坑指南:工厂间调拨用301还是303?手把手教你选对移动类型

本文深入解析SAP MM模块中工厂间调拨的301与303移动类型,帮助新手避开常见陷阱。通过对比一步法(301)和两步法(303+305)的核心差异、适用场景及财务影响,提供清晰的决策框架和实战技巧,确保库存调拨的准确性和效率。

weixin_29223603的博客 345

ASPICE1-配置管理

SUP.8配置管理 BP1:开发配置管理策略 BP2:识别配置项 BP3:建立配置项管理系统 BP4:建立分支管理 BP5:控制变更和发布 BP6: 建立基线 BP7:报告配置项状态 BP8:验证配置项信息 BP9:管理配置项和基线的存储 1.配置管理概念 配置管理(Configuration Management,CM)是通过使用技术或行政手段对软件产品进行控制,以实现对软件开发过程和生命周期进行控制、规范的一系列措施。 完整性、一致性、可控性。 2.配置管理的主要活动: 1.

HDZQ2005的专栏 3686

WinDbg学习笔记整理 (zz)

WinDbg学习笔记整理 2010-04-23 //z 2012-08-13 18:15:41 IS2120@csdn.T564578150 [T93,L1440,R37,V861] 去年看WinDbg帮助时随手记下来的一点资料,放上来保存一下,有新内容我会陆续更新上来。 1. 命令行前数字的含义 用户调试模式下,如2:005, 2表示进程ID,005表示线程ID 内核调试模式下,将显

IS2120 1483

瑞昱RTL8735B开发板深度评测:如何用200元板子搞定1080P视频流+AI推理?

本文深度评测瑞昱RTL8735B开发板(AMB82 MINI),解析其如何在200元预算内实现1080P视频流处理与边缘AI推理。该板搭载0.4TOPS NPU算力,支持H.264/H.265编码,适合物联网开发者构建高性价比边缘计算方案,并详细介绍了硬件架构、AI模型优化及实战项目搭建。

weixin_33712987的博客 520

WinDbg修改寄存器和内存

1:修改寄存器命令  r @eax=1 2: 修改内存命令 ed (esp+8) 0xffffffff

0li's Blog 8012

H.264 入门篇 - 09 (帧间预测 - 参考帧列表)

短期和长期的关系和区别:在一个解码器中的 DPB(参考帧缓存)大小总是有限的,所以引入一个问题,什么样的参考帧会被保存到 DPB 中,什么样的参考帧会被移除出去,因此将分为长期和短期参考帧,所谓短期参考帧是这帧不会长期驻留在DPB中,如果参考帧缓存已满或者有其他特定的条件,那么短期参考帧就会被从DPB中移除;与之相对的长期参考帧,只要没有遇到某个指定的条件,遇到某个IDR帧, 遇到了清空整个DPB的指令等等,那么长期参考帧会长期在DPB中,不会因为有新的参考帧而被冲刷掉;(P帧是按照编码顺序)

StephenZhou 5101

【GEOS-Chem模拟教程第二期上】生物质燃烧排放 GFED4 数据配置

生物质燃烧排放 GFED4 数据配置

WW、forever的博客 1296

常用windbg命令

刚刚接触windbg,目前使用比较浅,在使用中总结了一些常用的命令,在此记下,今后不断丰富  WINDBG常用命令 1、kd> dt nt!_EPROCESS 2、!heap 扩展显示堆使用信息,控制堆管理器中的断点,检测泄露的堆块,搜索堆块或者显示页堆(page hea

kun2005wang3410323的专栏 838

麒麟操作系统安装教程(保姆级)

本文介绍了如何在VM中安装麒麟操作系统,文章详细的介绍了麒麟操作系统按钻过步骤。

啊渊的专栏 1万+

windbg命令

三类调试命令:.hh打开使用文档。

AnTiforsec的博客 2303

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

qq_45806640的博客 452

【OCPP】ocpp1.6J协议框架说明

本文档的目的是为读者提供创建正确的可互操作 OCPP JSON 实现 (OCPP-J) 所需的信息。我们将根据我们自己的经验,尝试解释什么是强制性的、什么是良好做法以及什么是不应该做的。毫无疑问,误解或歧义仍然存在,但我们旨在通过本文件尽可能地防止它们。IANA:互联网数字分配机构(OCPP-J:使用JSON通过WebSocket进行OCPP通信。特定的OCPP版本应使用J扩展进行指示。OCPP1.5J表示我们正在讨论1.5版本的JSON/WebSocket实现。

qq_53871375的博客 1238

Windbg工具指令有哪些,分别有什么功能

WinDbg 指令分类指南摘要 WinDbg 调试工具提供全面的指令集,主要分为四大类: 核心调试控制:包含程序执行控制(g/p/t等)和断点管理(bp/bu/ba等)指令,支持条件断点和硬件断点设置。 内存操作:提供内存显示(db/dd/dq等)、搜索(s)、编辑(e)和比较(c)功能,支持多种数据格式查看。 寄存器管理:包括寄存器显示修改(r)、标志操作(rf)和伪寄存器系统,支持复杂表达式计算。 堆栈分析:包含调用堆栈查看(k/kb/kp等)、帧操作(.frame)和堆栈数据读取(dps esp)指令

学无止尽,谨言慎行! 1153

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

windbg常用命令详解

登录 | 注册 收藏成功 确定 收藏失败,请重新收藏 确定 *标题 标题不能为空 网址 标签 位置 个人主页 - 我的知识 同时保存至: 选择知识图谱 敏捷MFCC++ 新建?

a3125504x的博客 900

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Windbg调试

visual studio上虽然也能调试内核,但太麻烦了。很臃肿,本身就是内嵌了一个Windbg Windbg F1 按下F1就会跳出一个帮助手册,是学习Windbg非常好的参考手册 这个里面就有 Windbg的命令 有使用方法,使用例子 三类命令 元命令,扩展命令和命令 Commands 命令 Mera Commands里的是以. 开头的 叫元命令 Extension Commands 是以!开头的 是扩展命令 因为Windbg既可以调试应用层程序 也可以调试...

m0_55875295的博客 986

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

WinDbg命令

【代码】WinDbg 中使用!process 命令。

史D芬周 633
上一篇: Dependency Walker使用说明
下一篇: COM 参数有in, out ,retval
imJaron
博客等级 码龄11年 121粉丝 286原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值