123456

 
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 39 下一页

2012年5月23日

Windbg命令学习16(!gle和g和p)

摘要: 1.!gle!gle 扩展显示当前线程的最后一个错误码。这个太好记了,getlasterror取首字母:0:002> !gleLastErrorValue: (Win32) 0 (0) - LastStatusValue: (NTSTATUS) 0 - STATUS_WAIT_0-all 显示目标系统中每个用户模式线程的最终错误。如果在用户模式下省略该参数,调试器显示当前线程的最终错误。如果内核模式下省略该参数,调试器显示当前的寄存器上下文指定的线程的最终错误。0:002> !gleLastErrorValue: (Win32) 0 (0) - LastStatusValue: ( 阅读全文

posted @ 2012-05-23 17:10 hgy413 阅读(355) 评论(0) 推荐(0) 编辑

Windbg命令学习15(bp bm bu bl bc ba断点)

摘要: 以下以skinhgy为例,windbg附加运行1.bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效;2)WinDBG 不会把bp断点保存工作空间中 bp Address或bp 伪寄存器或bp符号名称:0:000> x Simple1Demo!CSimple1DemoApp::InitInstance00640080 Simpl 阅读全文

posted @ 2012-05-23 14:59 hgy413 阅读(362) 评论(0) 推荐(0) 编辑

Windbg命令学习14(dv)

摘要: 以下以自己的控件库skinhgy为例,windbg启动1.dv(display Local variable)dv 命令显示当前作用域的所有局部变量的名字和值。0:000> x Simple1Demo!CSimple1DemoApp::InitInstance00640080 Simple1Demo!CSimple1DemoApp::InitInstance (void)0:000> bp 00640080 0:000> bl 0 e 00640080 0001 (0001) 0:**** Simple1Demo!CSimple1DemoApp::InitInstance0: 阅读全文

posted @ 2012-05-23 11:50 hgy413 阅读(379) 评论(0) 推荐(0) 编辑

2012年5月22日

Windbg命令学习13(ln和伪寄存器)

摘要: 1.lnln 命令显示给定地址处的或者最近的符号。ln表示list near,ln命令将尽可能地给出与特定地址相关的符号,如果没有符号能够精确地与这个地址匹配,那么调试器将通过指针算法对靠近这地址的符号进行运逄,并返回运算结果符号0:000> ln 01012475(01012475) calc!WinMainCRTStartup | (0101263c) calc!__CxxFrameHandlerExact matches: calc!WinMainCRTStartup = 0:000> ln 01012475+1(01012475) calc!WinMainCRT... 阅读全文

posted @ 2012-05-22 16:41 hgy413 阅读(306) 评论(0) 推荐(0) 编辑

Windbg命令学习12(.lastevent和!analyze)

摘要: 以下不经说明都以calc强制附加windbg1.lastevent.lastevent 命令显示最近一次发生的异常或事件。1.lastevent.lastevent 命令显示最近一次发生的异常或事件。0:000> .lasteventLast event: 1534.f4c: Break instruction exception - code 80000003 (first chance) debugger time: Tue May 22 10:47:26.962 2012 (GMT+8)0:000> ~. 0 Id: 1534.e8c Suspend: 1 Teb: 7ffd 阅读全文

posted @ 2012-05-22 12:03 hgy413 阅读(1108) 评论(0) 推荐(0) 编辑

2012年5月21日

Windbg命令学习11(.dump)

摘要: 1.dump.dump 命令创建一个用户模式或内核模式崩溃转储文件。程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:1) 打开WinDBG并将之Attach 到crash的程序进程2) 输入产生dump 文件的命令直接用.dump -?可以看到它的简单说明:0:000> .dump -?Usage: .dump [options] filenameOptions are: /a - Create dumps for all processes (requires -u) /b[a] 阅读全文

posted @ 2012-05-21 15:24 hgy413 阅读(528) 评论(0) 推荐(0) 编辑

2012年5月20日

Windbg命令学习0 (.symfix和.cls和设置Log文件)

摘要: 1.symfix.symfix命令自动将符号路径设置来指向Microsoft 符号存储。比如,我原来设置的symbol file path为:那么使用了.symfix之后:0:000> .symfixNo downstream store given, using C:\Program Files\Debugging Tools for Windows (x86)\sym这时symbol file path为:我们发现,系统强制把Microsoft 符号存储的路径覆盖了原有的路径,那么,要使用追加,请使用.symfix+,把原有的路径设回去再保存,再调用.symfix+0:000> 阅读全文

posted @ 2012-05-20 12:30 hgy413 阅读(556) 评论(0) 推荐(0) 编辑

2012年5月18日

负数的补码

摘要: 经常用到JMP指令,如何算一个负数的补码呢,研究了下calc,直接输入负数,再转换成16进制或二进制,它们显示的就是补码了:比如:-100,转成16进制就成了9C(当然要选字节类型),那从9C再转回十进制就成了156了,那怎么么把9C转成-100呢,用负数的补码定义的逆运算吧,9C先转为二进制:10011100,再减1,为10011011,再NOT取反:1100100,再换成10进制就是100了,再自己加个负号吧具体过程就是转二进制,减一,NOT,得到的就是负数的绝对值了,很简单,但很方便. 阅读全文

posted @ 2012-05-18 12:07 hgy413 阅读(511) 评论(0) 推荐(0) 编辑

2012年5月17日

API拦截方法一:PE简介

摘要: 自己的知识分享文章,整理到博客上 ---------hgy notes.一.PE简介PE全名Portable Executable File Format(可移植的执行体),是目前window主流可执行文件格式, 是一种通用于所有window平台和所有CPU上的文件格式二.PE文件的定义PE文件的类型定义集中在WinNT.h这个类中,打开WinNT.h,再搜索Image Format(搜到的在9560行),为什么叫Image Format,估计意思就是镜像文件,在这一节点后给出了DOS MZ格式和window3.1的NE格式文件,之后就是PE文件,那么在这个文件里我们几乎可以找到所有关于PE文 阅读全文

posted @ 2012-05-17 17:23 hgy413 阅读(417) 评论(0) 推荐(0) 编辑

2012年5月16日

Windbg命令学习10 CriticalSection leak问题

摘要: 示例代码:#include "windows.h"#include #include CRITICAL_SECTION g_cs;DWORD WINAPI ThreadProc1(LPVOID lpParameter){ EnterCriticalSection(&g_cs); printf("thread1\n"); return 0;}DWORD WINAPI ThreadProc2(LPVOID lpParameter){ EnterCriticalSection(&g_cs); printf("thread2\n&quo 阅读全文

posted @ 2012-05-16 14:44 hgy413 阅读(613) 评论(0) 推荐(0) 编辑

上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 39 下一页

导航