123456

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

2012年6月14日

使用WinDbg和VMware调试NDIS中间层驱动程序 (转)

摘要: 使用WinDbg和VMware调试NDIS中间层驱动程序 我这里将一步一步的介绍,是从新手的角度来讲的,所以对高手来说,可能有些啰嗦。如果你看完这篇文章还不知道如何设置,那么原因可能有两个:1. 我没讲好;2. 你需要稍微认真看下并实践下,并实现对相关基本概念要有所了解。本文参考了以下的blog及文章,在此对作者的辛勤劳动表示感谢!1. http://hi.baidu.com/1ian9yu2. http://www.cppblog.com/fwxjj/archive/2008/01/17/41349.html一、环境的搭建 首先介绍如何使用WinDbg和VMware来搭建调试内核驱动的环境。 阅读全文

posted @ 2012-06-14 15:29 hgy413 阅读(277) 评论(0) 推荐(0) 编辑

2012年6月13日

SOCKET API简介三(

摘要: );inet_addr返回的是32位的网络字节序的二进制值, 这个函数存在这样的问题,所有2^32可能的二进制都是有效的IP地址(0.0.0.0到255.255.255.255) 但当出错时返回一个常值INADDR_NONE(#define INADDR_NONE 0xffffffff),这意味着255.255.255.255不能由此函数处理,可以这样使用:m_szServerAddr = "255.255.0.1"; ULONG inaddr = inet_addr(m_szServerAddr); if (inaddr == INADDR_NONE) {inaddr返回 阅读全文

posted @ 2012-06-13 17:17 hgy413 阅读(231) 评论(0) 推荐(0) 编辑

tcp keepalive

摘要: 部分信息可以看UNIX网络编程第157页,摘录过来:在一个正常的TCP连接上,当我们用无限等待的方式调用下面的Recv或Send的时候: ret=recv(s,&buf[idx],nLeft,flags); 或 ret=send(s,&buf[idx],nLeft,flags); 如果TCP连接被对方正常关闭,也就是说,对方是正确地调用了closesocket(s)或者shutdown(s)的话,那么上面的Recv或Send调用就能马上返回,并且报错。这是由于closesocket(s)或者shutdown(s)有个正常的关闭过程,会告诉对方“TCP连接已经关闭,你不需要再发送 阅读全文

posted @ 2012-06-13 17:03 hgy413 阅读(336) 评论(0) 推荐(0) 编辑

2012年6月4日

Windbg学习20(!htrace) .

摘要: 1.!htrace!htrace(Handle Trace) 扩展用于显示一个或多个句柄的堆栈回溯信息。直接用!htrace -?可以看到简单使用说明:0:000> !htrace -?!htrace [handle [max_traces]]!htrace -enable [max_traces]!htrace -disable!htrace -snapshot!htrace -diffHandle 指定要显示堆栈回溯的句柄。如果Handle 为0 或者省略,则显示进程中所有句柄的堆栈回溯。 Process (仅内核模式) 指定要显示句柄的进程。如果Process 为0或者省略,则使用 阅读全文

posted @ 2012-06-04 16:28 hgy413 阅读(313) 评论(0) 推荐(0) 编辑

创建和解析桌面快捷方式和

摘要: RT:创建:void CreateShortcut(LPCTSTR lpszExe, LPCTSTR lpszLnk){ ::CoInitialize(NULL); IShellLink *psl = NULL; IPersistFile *ppf = NULL; HRESULT hr = ::CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl); if (!SUCCEEDED(hr)) { return; } psl->SetPath(lpszE 阅读全文

posted @ 2012-06-04 10:15 hgy413 阅读(202) 评论(0) 推荐(0) 编辑

2012年6月1日

6月学习计划

摘要: 主要计划,复习window图形编程,最近一直在研究windbg,以致最熟悉的图形知识竟然淡忘了!这个月好好复习下.6.4学习了COM,对windbg继续进行了总结,最近身体状态太差,需多锻炼6.5对windbg继续进行了总结,window高级调试学习中6.6准备了一天的API拦截培训,用windbg来实现内存中的PE状态,不错,相对自己也熟悉了不少.6.19继续搭建IM通讯工具的服务器部分,发现window可以使用IOCP来实现,而不是select之类的,当然原理有点相近,明天好好研究下,没弄懂心里感觉会怪怪的6.28熟悉了DOS下的常用命令,以前一直是一知半解状态. 阅读全文

posted @ 2012-06-01 09:41 hgy413 阅读(108) 评论(0) 推荐(0) 编辑

2012年5月31日

Windbg学习19(!heap)

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

posted @ 2012-05-31 17:14 hgy413 阅读(1201) 评论(0) 推荐(0) 编辑

windbg学习实例2:堆的手工分析(AWDDBG学习笔记)

摘要: 大多数(并不是所有)高层的内存管理器都使用了Windows堆管理器,而堆管理器又会使用虚拟内存管理器:下图给出了在Windows中支持的内存管理器以及它们之间的关系:当进程启动时,堆管理器将自动创建一个新堆,叫做默认的进程堆,但是new/delete运算符以及malloc/free等API仍使用CRT堆来满足它们的内存需求,有些进程还会创建一些额外的堆(通过HeapCreate)以将进程中不同的组件独立开来可以把Windows堆管理器做进一步的划分,如下图:前端分配器前端分配器(Front End Allocator是对后端分配器(Back End Allocator)的一个抽象优化层,在Wi 阅读全文

posted @ 2012-05-31 11:56 hgy413 阅读(499) 评论(0) 推荐(0) 编辑

2012年5月25日

windbg学习实例1:内存破坏

摘要: 以下实例来自AWD代码:/*++Copyright (c) Advanced Windows Debugging (ISBN 0321374460) from Addison-Wesley Professional. All rights reserved. THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF 阅读全文

posted @ 2012-05-25 15:00 hgy413 阅读(437) 评论(0) 推荐(0) 编辑

2012年5月24日

Windbg学习18(sx和ld)

摘要: 1.sxsx* 命令用来控制被调试的程序发生某个异常或特定事件时,调试器要采取的动作sx 命令显示当前进程的异常列表和所有非异常的事件列表,并且显示调试器遇到每个异常和事件时的行为。sxr 命令将所有异常和事件过滤器的状态重设为默认值。命令被清除、中断和继续选项被重设为默认值,等等。sx这个命令的输出信息可以分为三个部分:第一部分是事件处理与相应处理模式的交互,第二部分是标准的异常交互和处理行为,最后一部分是用户自定义的异常交互和处理行为以下面为例,我们先输入sxr再输入sx看下默认的处理行为都是怎么样的:0:000> sxrsx state reset to defaults0:000 阅读全文

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

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

导航