简单调试器的实现(三)完善调试器

Dll加载:

case LOAD_DLL_DEBUG_EVENT:
// Read the debugging information included in the newly
// loaded DLL. Be sure to close the handle to the loaded DLL
// with CloseHandle.

//Dll加载时会进行这个事件

dwContinueStatus = OnLoadDllDebugEvent(DebugEvent);
break;

DWORD OnLoadDllDebugEvent(const LPDEBUG_EVENT DebugEvent)
{
//我们可以通过DebugEvent->u.LoadDll.hFile获得Dll的句柄

//但是,没有直接从HANDLE->Path的API,需要代码进行转化

//具体方法很容易查找到,这里就不介绍了。

  GetFileNameFromHandle(DebugEvent->u.LoadDll.hFile);

  return DBG_CONTINUE;
}

读取内存:

读取内存的API我们已经介绍过了ReadProcessMemory。

部分代码:

//Addr  读取的地址

//Size = sizeof(BYTE)

void *lpBuff;

lpBuff = malloc(Size);

SIZE_T bytesRead;

for (i = 0; i < 32; i++)
{
  if ((i % 8) == 0)      //输出4行 8列
    printf("\n%x ", Addr);
  if (FALSE == ReadProcessMemory(G_Process, Addr, lpBuff, Size, &bytesRead))
  {
    printf("?? ");      //读取失败就输出" ??"
  }
  else
  {
    printf("%.2x ", *(BYTE*)lpBuff);
  }
  Addr = Addr + Size;
}

free(lpBuff);

 效果:

这章就讲这么多了。。。下一章节将详细的讲解软断点。

时间: 2024-10-03 22:25:03

简单调试器的实现(三)完善调试器的相关文章

LoadRunner+Android模所器实现抓包并调试本地服务端

步骤就是 1:新建LR脚本.协议选择Mobile Application - HTTP/HTML 2:在record里选择第三个:Record Emulator........ 3:  选择下一步后,在emulator to record选择模拟器tools目录下的emulator.exe                     command line 里输入avd虚拟机的名称:用@连接  如@test      working directory 随便选个路径就行了 4:然后运行,就会自动启

监听按钮点击事件的三种方式实现及调试信息输出的三种方式实现

监听按钮点击事件的三种方式实现: 1.匿名内部类 2.外部独立类 3.接口实现 package com.example.button; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View;

(简单)华为荣耀4A SCL-TL00的usb调试模式在哪里打开的方法

当我们使用Pc通过数据线连接上安卓手机的时候,如果手机没有开启USB开发者调试模式,Pc则没法成功检测到我们的手机,在一些情况下,我们使用的一些功能较好的应用软件比如之前我们使用的一个应用软件引号精灵,老版本就需要开启USB开发者调试模式下使用,现当新版本不需要了,这时候我们需要找解决方法将手机的USB开发者调试模式开启,这里我们介绍华为荣耀4A SCL-TL00如何开启USB开发者调试模式的步骤. 首先,在华为荣耀4A SCL-TL00应用程序界面点击设置ICON,进入华为荣耀4A SCL-T

(简单)华为荣耀5X KIW-AL10的usb调试模式在哪里开启的方法

经常我们使用电脑连接安卓手机的时候,如果手机没有开启USB开发者调试模式,电脑则没能够成功读到我们的手机,有时我们使用的一些功能较强的工具如以前我们使用的一个工具引号精灵,老版本就需要打开USB开发者调试模式下使用,现经常新版本不需要了,如果遇到此情况我们需要想办法将手机的USB开发者调试模式打开,这里我们介绍华为荣耀5X KIW-AL10如何开启USB开发者调试模式的步骤.第一步,在华为荣耀5X KIW-AL10应用程序界面打开设置icon,进入华为荣耀5X KIW-AL10系统设置界面.第二

js调试系列: 源码定位与调试[基础篇]

js调试系列目录: - 如果看了1, 2两篇,你对控制台应该有一个初步了解了,今天我们来个简单的调试.昨天留的三个课后练习,差不多就是今天要讲的内容.我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码其实非常简单,点放大镜选中那个推荐即可.这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置.其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看.我在控制台输入 voteP

ssh 配置文件讲解大全 ssh调试模式 sftp scp strace进行调试

ssh 配置文件讲解大全  ssh调试模式  sftp scp strace进行调试 http://blog.chinaunix.net/uid-16728139-id-3265394.html 最近在研究openssh的源代码,不得不折服它代码的精炼和彪悍,即便搞清楚了其架构和思路之后,愣是到头来愣是发现,其实这个小东西还是有很多不为人知却又是研究代码不得不了解的知识,偶然发现如此强悍的介绍, 利索当然地笑纳一下. 一)客户端与服务端的通讯认证流程: 第一阶段: 双方协商SSH版本号和协议,协

js调试系列:断点和动态调试[基础篇]

js调试系列: 断点与动态调试[基础篇] js调试系列目录: - js调试系列: 初识控制台 js调试系列: 控制台命令行API js调试系列: 源码定位与调试[基础篇] js调试系列: 断点与动态调试[基础篇] js调试系列: 调试基础与技巧 额,我说的不是张敬轩的 断点 这首歌,是调试用到的断点,进入正题吧. 昨天留的课后练习 1. 分析 votePost 函数是如何实现 推荐 的.其实我们已经看到了源码,只要读下源码即可知道他是怎么实现的了. 文本 function votePost(n,

【OPENGL】第三章 着色器基础(一)

在这一章,我们会学习什么是着色器(Shader),什么是着色器语言(OpenGL Shading Language-GLSL),以及着色器怎么和OpenGL程序交互. 首先我们先来看看什么叫着色器. Shader(着色器)是用来实现图像渲染的,用来替代固定渲染管线的可编程程序. 着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计算,由于其可编程性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线限制.这极大的提高了图像的画质. 在上一篇文章( http://www.cnblog

【Java】使用Eclipse进行远程调试,Windows下开启远程调试

原博链接:http://blog.csdn.net/sunyujia/article/details/2614614 今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言也说不明白,从以前我发表的一篇文章可以看得出来,http://blog.csdn.net/sunyujia/archive/2008/03/23/2211109.aspx 我的朋友们普通反应看完后觉得不知所云,可能是我写的太简单,下面步入正题. 什么是远程调试,就是在A机器上利用Eclipse单