Windows 开发 辅助调试工具 和 方法

Windows开发中一些常用的辅助工具
经常有人问如何快速的定位和解决问题,很多时候答案就是借助工具, 记录个人Windows开发中个人常用的一些辅助工具。

(1) Spy++

相信windows开发中应该没人不知道这个工具, 我们常用这个工具查看窗口层次,跟踪窗口消息。

(2) WinSpy
一个窗口相关的小工具,非常有用,可以帮我们快速查看和修改窗口属性。(这个工具是开源的, 拿来学习挺不错的)

(3) Process Explorer
非常有用的工具,类似任务管理器,但是比任务管理器强大的多。 可以让我们查看查看每个进程的详细信息以及进程之间的关系,理解了这个工具你也就理解了整个程序进程.

(4) Process Monitor
看名字就知道是用来监视进程活动的,可以监视目标进程的注册表读写,文件读写, 模块加载和进程线程活动情况等,很多时候我们拿它来观察目标进程的活动情况。

(5) VMMap
完整的内存查看工具,可以用它来分析整个程序内存的详细情况(包括某个堆里面的每个分配的内存块),理解了这个工具你也就理解了整个程序内存布局。

(6) API Monitor
这个工具也是我强烈推荐的,可以用它来跟踪目标进程的API调用情况,当你怀疑目标程序的某个Feature调用了某几个API,但又没有证据时,可以通过这个工具来验证。该工具甚至还包含一些简单的调试功能,可以通过设置断点在程序调用API时修改参数和返回值。

(6) WinDbg
不多说了,Windows平台上最强大的调试器,上面很多工具的功能都可以通过它来实现,比如VMMap的功能可以通过WinDbg的!address和!heap命令来实现,比如API Monitor的功能可以通过WinDbg的条件断点来实现。

(7) wireshark
网络开发和理解网络协议的必备工具, 通过这个工具我们可以看到整个网络协议栈在每层上数据包的结构, 很多时候我们拿它来分析目标程序的网络协议和实现方式。

(8) httpwatch
集成到浏览器的, http协议的分析利器, 强大的网页数据分析工具, 基本上是Http编程的必备工具。

(9) IDA
反汇编的利器,可以反汇编出函数的流程图以及相互调用关系, 很多时候用它来静态分析程序结构, 然后结合WinDbg进行动态调试。

(10) WindowMonitor
这个程序是个人工作的一个辅助工具,因为现在工作是做远程桌面共享相关,经常要和窗口打交道,通过这个工具可以监视窗口的行为:
比如焦点的改变,窗口的创建和销毁,窗口的显示和隐藏, 以及窗口的枚举等,现在功能还很简单,需要时再扩充,可以到 这下 下载。

最后总结下,工欲善其事,必先利其器,借助工具可以帮我们更好的理解计算机程序。 另外这些工具使用时也不是完全独立的,很多时候是组合使用, 比如我们先通过Spy++查看窗口的消息处理函数地址,然后通过WinDbg的条件断点让程序收到某个消息时进行拦截和调试。

http://www.cppblog.com/weiym/archive/2014/09/09/208258.html

资料2

资料

资料:
http://baike.baidu.com/link?url=oCDe5ey3hAL-NJiMhn1lcqZao4KCmYsqJLCEuejBXEJvYWbLphYMeuh4n704Ms30tIuuCUZ-RbMyU_YbJ9mHpq

参考:http://msdn.microsoft.com/zh-cn/library/f7dy01k1.aspx

参考:http://baike.baidu.com/link?url=EmO7DoJwemz_rmzDgSf3Xfshsrt-7iAHJ0xwX3zm0p839n-igSGD3nEhn30hUdFDA3TWRbkRMgPhx4y6JnbJq_

参考:http://blog.163.com/tao198352__4232/blog/static/85020645201072872317808/

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu  转载请标明来源 DotFuscator:混淆工具

(词根:fuscate 变暗色的)

混淆工具,VS自带的的工具,官方解释是:“PreEmptive Solutions 的生成后检测服务提供模糊处理、篡改防御、存储期限和运行时智能等功能。”

C#和java,比较容易被反编译,vs自带了一个反编译的工具。打开 Visual Studio, “工具”->“ILDASM”,就可以直接看到所有的变量,结构体,函数名称,都和你的源码里一模一样,甚至有更强大的Reflector,直接看到C#源码,这时,如果之前使用了混淆工具,应该就可以一定程度避免,不至于所有代码细节都被反编译出来。

ILDASM/Ildasm.exe:反汇编工具

(词根:assemble/asm 聚集,汇编语言的后缀采用.asm) (dasm: de assemble 姑且理解为反汇编)

MSIL 反汇编程序是 MSIL 汇编程序 (Ilasm.exe) 的伙伴工具。 Ildasm.exe 采用包含 Microsoft 中间语言 (MSIL) 代码的可迁移可执行 (PE) 文件,并创建相应的文本文件作为 Ilasm.exe 的输入。

在这个里面有详细介绍的使用方法

http://msdn.microsoft.com/zh-cn/library/f7dy01k1.aspx

VisutalStdio远程调试器:

实现效果:在另一个PC环境上运行的Debug程序,可以在本地的PC上远程调试、单步跟踪等。

方法:

a. 在远程的PC上运行VisutalStdio远程调试器,配置 工具-〉选项 配置 连接信息,通常可以使用相对简单的 无身份验证。// 注意:不能关闭VisutalStdio远程调试器

b. 在本地PC上运行VC,然后选择 调试->附加到进程,传输选择:远程(无身份验证时仅限本机) 限定符输入远程调试的IP-例如IP为\192.168.113,输入完毕就可以刷新出远程PC的进程,然后就可以进行附加了

Spy++进程/线程/消息查看:

(词根:Spy n.间谍, 侦探 v.侦察, 发现)

Spy++ (SPYXX.EXE) 是一个基于 Win32(最新版本支持Win64) 的实用工具,它提供系统的进程、线程、窗口和窗口消息的图形视图。

查询窗口中:通过手动输入HWND信息,然后鼠标定位,可以找到窗口;

查询窗口中:通过探测器指针选中按钮,可以定位HWND,查到该按钮的相关信息/消息。

SpyLite工具:

附加介绍非VC的工具,是一个的功能更加强大Spy工具,一方面可以显示进程/线程/消息,更重要的方面是可以向HWND发送消息,例如向窗口/button发送最大化/显示/隐藏/Enable/Disable消息,
参考

http://baike.baidu.com/link?url=EmO7DoJwemz_rmzDgSf3Xfshsrt-7iAHJ0xwX3zm0p839n-igSGD3nEhn30hUdFDA3TWRbkRMgPhx4y6JnbJq_

最后介绍的两种:激活灰色按钮/监视IE上网记录

猜你喜欢

转载自blog.csdn.net/wowocpp/article/details/80509186