IDA+gdb配合VMware调试windows已经不是什么新鲜事了,但是之所以要发这篇帖子是因为我按照之前的帖子还有网上其他的教程设置调试环境,结果遇到了各种问题,所以仅仅是更新一下,各位轻拍。

环境:IDA6.9 + VMware12 + win10_host + win7x64_guest

一、更改VMX配置文件,开启VMware内的gdb stub

(1)在你的虚拟机对应的 *.vmx文件末尾加上如下三行并保存,:

debugStub.listen.guest64 = "TRUE"

debugStub.hideBreakpoints= "TRUE"

debugStub.listen.guest64.remote = "TRUE"

如果你的VM是32 bit的,将64换成32即可。

(2)然后启动虚拟机,如果虚拟机的日志文件中有如下字样,则说明gdb stub开启成功

二、配置IDA

(1)启动IDA64,选择Debugger -> Attach -> Remote GDB Debugger

(2)选择Debug options -> set specific option,将处理器改成与自己调试目标相匹配的处理器

(3)然后一路OK ,会出现如下图所示对话框,选择PID为0的进程attach,就会出现attach success的提示,此时会出现IDA的调试窗口。

(3)设置内存范围,选择Debugger -> Mannul Memory Regions,然后在空白处右键点击Insert,设置内存范围为0 - -2,如图

(4)设置完成后我们run (F9),然后suspend,可以发现IDA已经断下,但是仅仅这样还不够我们还需要添加符号信息,这样才能更方便的调试

三、添加符号信息

IDA可以手动添加符号文件,但是我们需要知道内核加载模块的基址,才能将符号信息加载到指定的位置,比较通用的方法是通过idtr,获取idt表的地址,然后根据中断处理函数的地址信息搜索内存,然后特征码匹配MZ头,从而定位nt基址

(1)在gdb command 窗口内输入 r idtr,可以得到idt表的地址,我们取idt表的第一个函数地址作为搜索起始,配合IDA python脚本(脚本会给出链接),可以得到如下结果:

(2)然后从虚拟机中拷贝出nt文件,选择file -> load file -> PDB file,填入基址,等待一段时间后,符号信息即加载成功。

四、其他模块信息

nt符号信息加载成功后,我们可以通过PsLoadedModuleList继续得到其他模块基址信息,过程类似,脚本链接:https://github.com/Cr4sh/IDA-VMware-GDB/blob/master/IDA-VMware-GDB.py,如果时间太长的话,建议把符号自动加载部分去掉,根据自己需要手动加载也未尝不可,有了符号信息后就可以比较方便的调试VMM了。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

最后贴上一个我之前发的问题的链接,还请诸位大神可以指点小菜一二https://bbs.pediy.com/thread-221825.htm   つ﹏⊂

jpg改rar

IDA + VMware 调试win7 x64的更多相关文章

  1. win7 x64和win10 x64 windbg 本地调试记录

    今天看CSDN和某文档看了win7 64位 和win10 64位 的windbg本地调试内核的办法 win7 x64 Step1:kdbgctrl –db Step2:kdbgctrl –e Step ...

  2. win7 X64可用的单文件IE6

    由于日常调试需要用到老版本的ie,没有办法!用ietest老师感觉不好使,动不动就死了.就找到了ie的单文件版,有博主 小明爱切糕制作,IE6.7.8单文件版本 http://www.cnblogs. ...

  3. [补] 如何在windows下用IDA优雅调试ELF

    在windows下如何用IDA优雅调试ELF brief: 构建一个IDA-linux_server-docker镜像,优雅地IDA远程调试 使用传统虚拟机来运行一个linux程序就得跑一个完整的li ...

  4. 如何在windows下用IDA优雅调试ELF

    在windows下如何用IDA优雅调试ELF brief: 构建一个IDA-linux_server-docker镜像,优雅地IDA远程调试 使用传统虚拟机来运行一个linux程序就得跑一个完整的li ...

  5. [转载] 关于Win7 x64下过TP保护的一些思路,内核层过保护,驱动过保护

    首先特别感谢梦老大,本人一直没搞懂异常处理机制,看了他的教程之后终于明白了.在他的教程里我学到了不少东西.第一次在论坛发帖,就说说Win7 x64位下怎么过TP保护.如果有讲错的地方,还望指出.说不定 ...

  6. [求助] win7 x64 封装 出现 Administrator.xxxxx 的问题

    [求助] win7 x64 封装 出现 Administrator.xxxxx 的问题 jacky_qu 发表于 2014-9-3 23:34:37 https://www.itsk.com/thre ...

  7. MSI Error 1603 installing AppFabric 1.1 / Win7 x64

    MSI Error 1603 installing AppFabric 1.1 / Win7 x64  Archived Forums A-B > AppFabric Caching   先说解 ...

  8. 配置新系统(Win7 x64)

    新装了一个Win7 x64系统.总结了一些系统配置需要注意的地方. 1. C盘空间 发现C盘被用去了50G的空间,在什么软件都没装的情况下,被用去这么多,感到不可思议. 打开控制面板->文件夹选 ...

  9. WIN7 X64 如何运行debug

    WIN7 X64 如何运行debug 下载debug.exe 安装dosbox 安装完成后将debug.exe放入某个盘的根目录下(以c盘为例) 然后运行dosbox,输入 mount c c:\ c ...

随机推荐

  1. 【转载】linux下的mount命令详解;

    以下内容来自:http://blog.csdn.net/clozxy/article/details/5299054 http://linux.chinaunix.net/techdoc/system ...

  2. (原)tslib的交叉编译

    今天准备重新来交叉编译qt5.3.1的源码,由于按网上说的,需要先编译tslib,所以拿起来之前的编译源码,打算重新用新的交叉编译工具再次编译一次,在查找资料的过程中浪费了些许时间.其实直接就在使用s ...

  3. php可选缓存APC

    1.APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”.它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓 ...

  4. c# 阿拉伯数字转成中文

    调用方法: public string ConvertToChineseNumber(string old) { Chinese ch = new Chinese(); long num = Conv ...

  5. PLSQL Developer删除奇葩表出现异常ORA-00942: 表或试图不存在

    简单描述一下问题:发现数据库里有两个名称相同的表,不同的是PLSQL Developer里一个表名显示是大写,而另一个表名显示是小写 一般情况下,无论建表语句是大写,还是小写,因Oracle是区分大小 ...

  6. STUN,TURN,ICE

    STUN,TURN,ICE WebRTC

  7. C# WinForm下,隐藏主窗体的方法

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. 使用redis镜像

    运行容器 runoob@runoob:~/redis$ docker run -p : -v $PWD/data:/data -d redis:3.2 redis-server --appendonl ...

  9. Xcode - 升级后模拟器无法响应电脑键盘

    链接 Q: I used to be able to type with my real mac keyboard after launching the iPhone Simulator. Typi ...

  10. 【Spark】session 代替 SparkConf、SparkContext和SQLContext

    http://www.raincent.com/content-85-7196-1.html