
调试
文章平均质量分 60
swanabin
这个作者很懒,什么都没留下…
展开
-
使用Windbg调试内核
Windbg是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。1.从http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx下载Install Debugging Tools for Windows 32-bit Version 2.从http:转载 2013-08-17 11:45:49 · 994 阅读 · 0 评论 -
在WinDBG中查看函数的反汇编代码的命令
命令==========u .u $ip上面的两个命令是效果是一样的, 反汇编当前$ip地址上的8条命令. uf .uf $ip上面两个命令的效果是一样的, 反汇编当前$ip地址上的整个函数. ub .ub $ip反汇编$ip之前的8条指令. ub $ip L2a反汇编$ip转载 2014-03-31 11:57:21 · 3103 阅读 · 0 评论 -
Win7下使用DbgPrint
在Win7下默认DbgPrint输出信息后,使用DbgView看不到内容。新建一个reg文件,双击导出就行了。 Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]转载 2014-03-21 18:11:19 · 1665 阅读 · 0 评论 -
WinDbg中Check for invalid symbols or bad syntax(断点设置)解决办法
基础知识bp 程序运行过程中下断点bu 程序未加载之前下断点bl 列出所有断点bc 清除断点今天在调试驱动的时候 发现下好断点后 无法调试WinDbg显示kd> gBreakpoint 11's offset expression evaluation failed.Check for invalid symbols or bad转载 2014-11-13 15:25:30 · 987 阅读 · 0 评论 -
Win7下使用DbgPrint
在Win7下默认DbgPrint输出信息后,使用DbgView看不到内容。新建一个reg文件,双击导出就行了。 Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter] "DEFAULT"转载 2014-11-03 11:48:45 · 663 阅读 · 0 评论 -
VS2010+VMWare 远程调试exe程序的配置总结
1、我的VM客户机是XP的,Deepin 的最后一版,先用它自带的“XP优化模式设置”把共享相关的东西,什么网络啊账户的,都开了!2、VM客户机要开NAT的,我的主机是Win7 X64,相应的共享也要搞定,简单的说,你必须能在主机下用网上邻居看到局域网的计算机和你的VM!3、VM客户机设置:管理工具-本地安全策略-本地策略-安全选项,在里面找到“网络访问:本地账户的共享和安全模式”转载 2015-04-11 14:53:28 · 735 阅读 · 0 评论 -
WinDbg+WMware+OS_Win7 配置
一、安装环境主机:Windows 7 SP1 x64虚拟机:VMware 9VMOS: Windows7 SP1 x64Windbg: Windows Driver Kit 8.1 自带二、虚拟机配置打开VMware 虚拟机上的 “Virtaul Machine Settings“为了省事,这里将Printer 删除,为了让新配置的Serial Port 为1(如果不删转载 2016-01-12 18:54:27 · 1423 阅读 · 0 评论 -
使用Windbg解析dump文件
第一章 常用的Windbg指令①!analyze -v ②kP 可以看函数的入参③!for_each_frame dv /t 可以看函数中的局部变量④dc , db转载 2017-03-08 17:53:35 · 4273 阅读 · 0 评论 -
Windbg inline HOOK 实战
使用PCHunter64的进程钩子扫描到某个进程被HOOK了,可以使用Windbg分析:搜索内存(search memory)s –[type] range pattern其中type, b表示byte, w表示word, d 表示dword, a表示ASCII string,u表示unicde stringRange 表示地址范围,可以用2种表示:一是原创 2017-04-01 11:53:09 · 1258 阅读 · 0 评论 -
WinDbg解决BHO不加载
昨天zhengwei同学说他机器上的一个BHO不能正常加载,我把BHO的代码拿过来,在我的两台机器上都验证了一下,一台是Win7+IE8的环境,一台是XP+IE7的环境,都能正常加载。zhengwei的机器是IE6+XP的环境,不能正常加载,升级到IE7后,还是不能加载。排除了是操作系统,以及IE版本的原因。会不会是IE安全设置的原因呢?没有听说过IE安全设置会影响到BHO加载的,还是试了试,同时转载 2014-10-08 16:36:31 · 3408 阅读 · 0 评论 -
WinDBG技巧:在加载/卸载一个DLL 的时候下断点
加载某个DLL 的时候下断点的WinDBG 命令:sxe ld:[dll name]卸载某个DLL 的时候下断点的WinDBG命令:sxe ud:[dll name]比如:sxe ld:wininet (在wininet.dll 被装载的时候断点)还可以通过直接在DllMain下断点来达到相同目的:bu wini转载 2017-09-11 16:25:25 · 1612 阅读 · 0 评论 -
在WinDBG中查看内存的命令
当我们在调试器中分析问题时, 经常需要查看不同内存块的内容以分析产生的原因, 并且在随后验证所做出的假设是否正确. 由于各个对象的状态都是保存在内存中的, 因此内存的内容也就相当于对象的状态. d命令最常见的格式就是根据指定的类型信息来显示存储在某地址中的数据. 调试器并不会去猜测这个地址上存储的是什么数据, 因为在大多数情况下猜测都是错误的. 所以需要用户显式地制定按照何种格式来转载 2014-03-04 11:23:36 · 961 阅读 · 0 评论 -
Windbg 查看SSDT表
SSDT HOOK 的原理其实非常简单,我们先实际看看KeServiceDescriptorTable是什么样的。 lkd> dd KeServiceDescriptorTable 8055ab80 804e3d20 00000000 0000011c 804d9f48 8055ab90 00000000 00000000 00000000 0000000原创 2013-12-21 11:25:24 · 3567 阅读 · 0 评论 -
使用Windbg调试系统弹出的内存不可读错误
步骤:1. 使用Windbg挂钩到崩溃的进程上面2. 使用~*k列出所有线程3. 搜索UnhandledExceptionFilter所在的线程4. 使用~ns切换到上面崩溃所在的线程,n为线程前面的序号5.使用kv显示线程调用堆栈6,可以看到02af7740 7c83ab50 02af7768 7c839b39 02af7770 kernel32!UnhandledE原创 2013-09-17 12:12:51 · 1809 阅读 · 0 评论 -
好用的抓取dump的工具-ProcDump
Procdump是一个轻量级的Sysinternal团队开发的命令行工具, 它的主要目的是监控应用程序的CPU异常动向, 并在此异常时生成crash dump文件, 供研发人员和管理员确定问题发生的原因. 你还可以把它作为生成dump的工具使用在其他的脚本中. 有了它, 就完全不需要在同一台服务器上使用诸如32位系统上的Debug Diag 1.1或是64位系统上的ADPlus了.转载 2013-09-18 16:10:24 · 1841 阅读 · 0 评论 -
Windbg 调试CPU占用过高
1.!runaway!runaway命令显示每个线程消费的时间Bit 0 (0x1) 让调试器显示每个线程消耗的用户模式时间(user time),默认不加就是0x1Bit 1 (0x2) 显示每个线程消耗的内核时间(kernel time)。Bit 2 (0x4) 显示每个线程从创建开始经历了多少时间。就是三者的组合:1 2 3 4 5 6 7[cpp] vi转载 2013-09-18 17:28:47 · 845 阅读 · 0 评论 -
驱动蓝屏
在驱动中操作注册表的时候在函数前面加了如下#pragma INITCODEvoid ZwTestNum(){ULONG dwNum = 0; ....................................}结果出现蓝屏,蓝屏代码出现在这个函数中,去掉就不蓝屏了,暂时也不是太明白原因,下面是一些相关资料可以看下:资料1:原创 2013-10-12 17:14:26 · 2685 阅读 · 0 评论 -
Windbg Step 2 分析程序堆栈实战
#include "stdafx.h"#include tchar.h>#ifdef _UNICODE#define _ttol _wtol#else#define _ttol atol#endif void Usage(){#ifdef _UNICODE wprintf(L"[Usage]: nativedebug.exe \n");转载 2013-09-28 16:33:40 · 1339 阅读 · 0 评论 -
对XP上的KiFastSystemCall进行浅析
Windows API的系统调用过程通过KiFastSystemCall或int 2e进入内核,本文仅对XP上的KiFastSystemCall进行浅析。 以ntdll!ZwCreateProcessEx为例: Eax中保存系统调用号,此处ZwCreateProcessEx的为30h;Edx是SharedUserData!SystemCallStub的地址,里面保存着KiFastS转载 2013-11-19 17:01:26 · 6667 阅读 · 0 评论 -
Windows的SEH机理简要介绍
1.异常分类一般来说,我们把Exception分为2类,一类是CPU产生的异常,我们称之为CPU异常(或者硬件异常)。另一类为是通过调用RaiseException API产生的软件异常,我们称之为软件异常。Windows使用同一的方式(KiDispatchException)来描述和分发这两类异常。但是,在处理各自异常时,会略有区别。 一般来说,异常处理过程可以分转载 2013-11-19 15:46:52 · 2779 阅读 · 0 评论 -
Windbg 问题集锦记录
问题1:问: 0 Id: 15f4.e60 Suspend: 1 Teb: 7ffdf000 Unfrozen # ChildEBP RetAddr Args to Child 00 0012fe80 77d693f3 00456cd8 0012feec 00456cf3 ntdll!KiFastSystemCallRet*** WARNI原创 2013-11-19 16:18:40 · 1295 阅读 · 0 评论 -
RasieException
RasieException是SEH API,SEH != 进内核,RasieException并不必然导致用户态内核态切换。事实上这个API被调用以后会首 先尝试在用户态进行处理,如果没有任何处理者可用,则直接调用ExitProcess退出进程,这个调用倒是要进内核。 Raising an exception causes the exception dispatcher to原创 2013-11-19 16:32:04 · 1065 阅读 · 0 评论 -
利用bu命令下延迟断点
bu可以针对符号下断点.这里是用bu下延迟断点的意义在于即使目标驱动没有被加载,windbg也允许我们针对符号设置断点.当新加载驱动程序后,windbg就会检查驱动程序中是否包含了设置了延迟断点的函数.如果找到了,就把断点替换为地址形式,然后再设置断点kd> bu Sys!DriverEntry原创 2013-12-21 15:45:43 · 1021 阅读 · 0 评论 -
WinDBG常用断点命令
WinDBG提供了多种设断点的命令:bp 命令是在某个地址 下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)WinDBG 不会把bp断点原创 2013-12-21 16:01:38 · 915 阅读 · 0 评论