自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hgy413的专栏

﹎゛Never Give Up Your Dream ..ヽ..

  • 博客(29)
  • 资源 (38)
  • 收藏
  • 关注

原创 29.windbg-!heap(堆状态)

以下以windbg启动calc为调试结果:!heap!heap 扩展显示堆使用信息,控制堆管理器中的断点,检测泄露的堆块,搜索堆块或者显示页堆(page heap)信息。!heap -h列出当前进程的所有堆:0:000> !heap -hIndex Address Name Debugging options enabled 1: 000a0000

2012-05-31 17:14:15 15122

原创 28.windbg-堆的手工分析

大多数(并不是所有)高层的内存管理器都使用了Windows堆管理器,而堆管理器又会使用虚拟内存管理器:下图给出了在Windows中支持的内存管理器以及它们之间的关系: 当进程启动时,堆管理器将自动创建一个新堆,叫做默认的进程堆,但是new/delete运算符以及malloc/free等API仍使用CRT堆来满足它们的内存需求,有些进程还会创建一些额外的堆(通过HeapCreate)以将

2012-05-31 11:56:05 4888

原创 27.windbg-内存破坏实例分析

以下实例来自AWD代码:/*++Copyright (c) Advanced Windows Debugging (ISBN 0321374460) from Addison-Wesley Professional. All rights reserved. THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRA

2012-05-25 15:00:44 4526

原创 26.windbg-sx、ld(设置异常处理、设置模块加载时断下)

1.sxsx* 命令用来控制被调试的程序发生某个异常或特定事件时,调试器要采取的动作sx 命令显示当前进程的异常列表和所有非异常的事件列表,并且显示调试器遇到每个异常和事件时的行为。sxr 命令将所有异常和事件过滤器的状态重设为默认值。命令被清除、中断和继续选项被重设为默认值,等等。sx这个命令的输出信息可以分为三个部分:第一部分是事件处理与相应处理模式的交互,第二部分是标准的...

2012-05-24 15:01:12 7132

原创 25.windbg-!gle、g(错误码、g系列)

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

2012-05-23 17:10:41 3011

原创 24.windbg-bp、 bm、 bu、 bl、 bc、 ba(断点、硬件断点)

以下以skinhgy为例,windbg附加运行1.bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)Wi

2012-05-23 14:59:46 14369

原创 23.windbg-dv(显示局部变量)

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

2012-05-23 11:50:36 8688

原创 22.windbg-ln、伪寄存器(Pseudo-Register Syntax)、自定义伪寄存器

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

2012-05-22 16:41:22 3222

原创 21.windbg-.lastevent、!analyze(dump分析、异常错误码查询)

以下不经说明都以calc强制附加windbg1.lastevent.lastevent 命令显示最近一次发生的异常或事件。1.lastevent.lastevent 命令显示最近一次发生的异常或事件。0:000> .lasteventLast event: 1534.f4c: Break instruction exception - code 80000003 (first ch

2012-05-22 12:03:52 14017

原创 20.windbg-.dump(转储文件)

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

2012-05-21 15:24:20 11577

原创 19.windbg-.symfix、.srcPath、.srcnoisy、log文件(符号文件、源文件、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

2012-05-20 12:30:08 5167

原创 3.asm-汇编的补码和负数互换

经常用到JMP指令,如何算一个负数的补码呢,研究了下calc,直接输入负数,再转换成16进制或二进制,它们显示的就是补码了:比如:-100,转成16进制就成了9C(当然要选字节类型),那从9C再转回十进制就成了156了,那怎么么把9C转成-100呢,用负数的补码定义的逆运算吧,9C先转为二进制:10011100,再减1,为10011011,再NOT取反:1100100,再换成10进制就是1

2012-05-18 12:07:55 1540

原创 4.ring0-API拦截方法一:PE简介

自己的知识分享文章,整理到博客上 ---------hgy notes.一.PE简介PE全名Portable Executable File Format(可移植的执行体),是目前window主流可执行文件格式, 是一种通用于所有window平台和所有CPU上的文件格式二.PE文件的定义PE文件的类型定义集中在WinNT.h这个类中,打开WinNT.h,再搜索Image Forma

2012-05-17 17:23:11 3437 1

原创 18.windbg-临界区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 Th

2012-05-16 14:44:05 2563 1

原创 17.windbg-!cs、~~[TID](经典死锁)

经典死锁

2012-05-16 13:15:14 17206 2

原创 16.windbg-.cxr、.frame、dt(查找设置设备上下文、切换局部上下文、查找结构体)

这里使用一个debug程序:.frame.frame命令指定使用哪个局部上下文(作用域)来解析局部变量,或者显示当前的局部上下文帧序号(frame number)是堆栈帧在堆栈回溯中的位置。可以使用k (Display Stack Backtrace)命令或者Calls 窗口查看堆栈回溯。第一行 (当前帧) 的帧序号是0。后面的行分别是1、2、3等等。0:000> kn # Ch

2012-05-15 14:27:13 9009

原创 15.windbg-dds、dps、dqs、PE文件解析

以下默认windbg加载calc程序1.d*sdds、dps和dqs命令显示给定范围内存的内容,它们是把内存区域转储出来,并把内存中每个元素都视为一个符号对其进行解析,dds是四字节视为一个符号,dqs是每8字节视为一个符号,dps是根据当前处理器架构来选择最合适的长度比如要看看当前stack 中保存了哪些函数地址,就可以检查ebp  指向的内存0:000> dds ebp000

2012-05-14 17:33:27 7542

原创 14.windbg-k、u、x(堆栈查看、汇编查看、函数查找)

kk*命令显示给定线程的调用堆栈,以及其他相关信息~0 k表示打印0号线程的调用堆栈,直接用k表示打印当前线程的调用堆栈0:002> ~0kChildEBP RetAddr 0007fddc 77d191be ntdll!KiFastSystemCallRet0007fdfc 010021b0 USER32!NtUserGetMessage+0xc0007ff1c 010125e9...

2012-05-14 16:15:06 25035 1

原创 13.windbg-!runaway、~、|(控制进程、线程切换)

!runaway!runaway命令显示每个线程消费的时间Bit 0 (0x1) 让调试器显示每个线程消耗的用户模式时间(user time),默认不加就是0x1Bit 1 (0x2) 显示每个线程消耗的内核时间(kernel time)。 Bit 2 (0x4) 显示每个线程从创建开始经历了多少时间。 就是三者的组合:1 2 3 4 5 6 70:002> !runaway Us

2012-05-14 13:44:26 8225

原创 12.windbg-!address、!vadump、!vprot(读取内存状态)

!address!address 扩展显示目标进程或目标机使用的内存信息这个学习起来比较简单:我们直接使用!address -?就可以找到它的使用说明:0:000> !address -?!address - prints information on the entire address space!address -?

2012-05-14 11:13:15 12102 2

原创 11.windbg-d、e 读写内存

以下所有例子都以CALC程序为示例----hgy413 notes.1 dd*命令显示给定范围内存的内容。d, da, db, dc, dd, dD, df, dp, dq, du, dw, dW, dyb, dyd (Display Memory)如果省略掉Range ,命令将会从上一条内存查看命令结束的位置开始。这使得可以连续的进行内存查看。d这种显示的格式和最近一次d*命

2012-05-13 17:33:22 7881

原创 10.windbg-r

以下的所有示例都是加载calc程序1 lmflmf可以列出当前进程中加载的所有DLL文件和对应的路径给个例子:0:001> lmfstart end module name01000000 0101f000 calc C:\WINDOWS\system32\calc.exe10000000 100b0000 safemon C:\P

2012-05-13 16:35:06 2501

原创 3.ring0-__STDCALL inline HOOK 和 __declspec(naked) inline HOOK区别

两者差别1.__STDCALL inline HOOK是针对整个函数的hook,好处是变量清楚,坏处时肯定只能在函数头hookNTSTATUS __stdcallNewNtQueryDirectoryFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, ....... )

2012-05-13 15:58:07 4509

原创 9.windbg-!sym、.reload、!chksym

以下示例以windbg加载calc.exe为例:1.!sym!sym扩展控制显示详细的符号加载和符号提示。.!sym :不带参数表示显示当前的详细符号加载和符号提示的设置状态给个示例:0:001> !sym!sym - noisy mode - symbol prompts on其实细心点可以看出sym的四种状态了,noisy/quiet -prompts/promp

2012-05-12 22:17:28 9229

原创 2.OD-C++的虚函数表遍历

结合OD学习下虚函数表,加深印象对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了 这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候

2012-05-11 19:25:10 2579

原创 0.c++-static_cast、reinterpret_cast、dynamic_cast、等转换

static_cast:可以实现C++中内置基本数据类型之间的相互转换。如果涉及到类的话,static_cast只能在有相互联系的类型中进行相互转换,不一定包含虚函数class A{};class B:public A{};class C{};int main(){ A* a=new A; B* b; C* c; b=static_cast(a); // 编译不会报错,

2012-05-10 19:36:16 1578

原创 0.c++-显式打印、改变lib库加载顺序(/verbose:lib)

今天编译了下代码:提示以下错误,因为nafxcw.lib是MFC的,所以必须首先被编译1>正在链接…1>nafxcw.lib(afxmem.obj) : error LNK2005: “void * __cdecl operator new(unsigned int)” (??2@YAPAXI@Z) 已经在 LIBCMT.lib(new.obj) 中定义测试下,在Link–>cmd中加

2012-05-10 19:35:09 1552 1

原创 8.windbg-vertarget、lm

1.g可以让目标程序继续执行,ctrl+break可以挂起正在运行的目标程序回到调试模式 2.vertargetvertarget 命令显示目标机的Microsoft Windows操作系统版本给个示例:0:011> vertargetWindows XP Version 2600 (Service Pack 3) MP (4 procs) Free x86 compati

2012-05-09 21:42:28 16374 1

原创 5月学习计划

1.学习COM,掌握基础2.继续巩固汇编,对win32汇编了解进一步加深3.平均每天抽一小时学习cocoa,4.主要目标是能把windbg掌握。 5.7:看完COM深入内幕前四章,代码重新写过,5.8看完COM深入内幕5-7章,代码重新写过,5.9看完COM深入内幕8-9章,代码重新写过,开始windbg命令小结,继续X86汇编温习.5.10重写了COM的聚合,继续

2012-05-06 18:46:05 1325

klogtest1.zip

抽象类so调用示例

2019-08-08

klogtest.7z

抽象类so调用示例

2019-08-08

multprocess.zip

multprocess.zip,IPC通讯demo

2019-07-14

keyboard-shortcuts.ipynb

keyboard-shortcuts

2019-05-18

working-with-code-cells.7z

working-with-code-cells.ipynbworking-with-code-cells.ipynb

2019-05-18

测试代码demo

测试代码demo

2019-01-05

ScreenCapture

ScreenCapture

2019-01-02

FragmentDemo源码

FragmentDemo源码

2018-11-14

ViewPagerDemo

ViewPagerDemo

2018-11-07

RecycleViewDemo

RecycleViewDemo

2018-11-04

DataBindingDemo

DataBindingDemo示例源码

2018-11-04

MDL_Driver

MDL_Driver

2017-08-16

ddkwizard-vs2008

ddkwizard-vs2008

2017-08-12

dbgengine2

dbgengine2  WindbgEngine 

2015-09-01

dbg-engine

WindbgEngine

2015-09-01

debug.exe在win7-64下模拟

1.安装dosbox,运行,debug.exe放在d盘 2.输入命令mount c d:\ 当出现Drive C is mounted as local directory d:\的时候,成功 "c"是作为虚拟c盘的意思,"d:\"是虚拟文件夹的位置(debug.exe) 3.输入c: 4.输入debug

2015-08-25

查询线程入口地址源码

查询线程入口地址源码

2013-01-13

lpk.dll

lpk.dll,Windows系统文件。

2012-07-29

RebPE.rar

RebPE.rar,脱壳技术

2012-07-10

TraceMe.exe

TraceMe.exe 动态分析技术

2012-07-02

等待loading状态图标gif动画大全

等待loading状态图标gif动画大全

2012-05-10

vs2008搭建asm模板

vs2008搭建asm模板

2012-04-20

ProcessExplorer

ProcessExplorer

2012-04-04

局域网共享的小工具

局域网共享的小工具

2012-02-18

单例代码

单例代码

2011-12-08

SetStretchBltMode测试

SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试SetStretchBltMode测试

2011-09-17

自绘对话框基类示例代码

自绘对话框基类示例代码自绘对话框基类示例代码自绘对话框基类示例代码自绘对话框基类示例代码

2010-12-26

无边框/有边框菜单自绘Demo

无边框/有边框菜单自绘Demo无边框/有边框菜单自绘Demo无边框/有边框菜单自绘Demo无边框/有边框菜单自绘Demo

2010-12-13

MFC实现透明位图透明背景

MFC实现透明位图透明背景Demo,随手写的,笔记之

2010-12-08

DbgView.exe和使用类

DbgView.exe和使用类,方便以后备用

2010-12-01

透明背景的Static的Demo

透明背景的Static的Demo,随手写的,笔记之,以备后用

2010-11-24

结束已知应用程序名的进程Demo

结束已知应用程序名的进程Demo,笔记,以备以后查用

2010-11-24

一个简单的拖拽实例备份

转自好友的,一个拖拽实例,嘿嘿,自己也备个份,转的当然不要分。

2010-11-24

MFC中文类成员函数大全

中文版的,里面有很详细的每个MFC的类的成员函数的中文详解,对开发的很有帮助,

2010-07-04

华为IPD培训完整资料

华为IP培训的完整资料,很详细,很值得深入研读,强力推荐,强力推荐

2010-03-11

软件开发技术基础(C++描写数据结构)

我看过很多用C++写数据结构的书,没有一本像这里写的简单,一目了然,不会有迷惑感,强力推荐

2009-10-29

C++程序员面试宝典

非常经典的书,很多C++易犯的误区都能在这找到

2009-10-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除