码迷,mamicode.com
首页 > 其他好文 > 详细

开源小小调试器-MiniDebugger

时间:2015-08-09 12:42:33      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:调试器

MiniDebugger是我在最近设计的一款调试器.我通过这个小项目试图去探究一些功能的原理以及完成一些自认为有趣的功能,也算是一种自我锻炼.

项目地址:
http://code.taobao.org/p/MiniDebuger/src/

设计思考

技术分享

做一个自己真正会去用的调试器.这个十分必要.如你所知,有非常多的优秀的调试器,伴随一名程序调试者.它们包括OD,WinDBG,X64DBG,以及IDA.
想要自己平时能用的上,在这方面我可是很挑剔的.就需要实现一些人无我有的小功能.
我比较喜欢WinDBG的命令行界面,所以做成了这样:`(**∩_∩)′

技术分享

不要说人家丑嘛,人家很温柔的….

流程架构

技术分享

左边是UI线程,右边是调试循环线程.

使用了开源的BeaEngine反汇编引擎,其特点如下:

  1. 最优秀的开源反汇编引擎之一
  2. 目前几乎支持x86及AMD64平台下的所有汇编指令.
  3. 反汇编结果支持自由定义,可以实现一些比较复杂的显示方法.
  4. 不支持汇编操作,只支持反汇编.

看到这里,小伙伴们是否对BeaEngine很感兴趣呢?

功能

  1. 有意思的几个功能点:

    • 栈回溯:通过栈帧关系,追溯当前线程调用过的所有进程.下一步会结合IAT表使该功能更完善.
    • 调试输出信息查看.关闭你的DBGVeiw吧如果你只是想查看一下自己程序输出的信息
  2. 支持命令列表
    技术分享

当前版本不足之处

  1. 没有使用类进行封装(我去~)
  2. 在寻求更佳的数据结构方案.

不过这只是首个版本,后续不仅会对框架进行调整.预期还会在如下几个方面进行加强:
1. 更佳的断点策略.特别是针对软件断点的一些改善
2. 反AntiDebugger策略的加入.

开发小心得

  1. 如果你转移了一段代码.
    • 在新的位置,前置参数还未初始化.检查它.
    • 在旧的位置,可能本来就需要一份同样的代码.而不是剪切.
  2. 补丁
    一个地方出了问题,与它工作机制类似的地方同样可能需要补丁.

项目地址:
http://code.taobao.org/p/MiniDebuger/src/

技术分享
2015年8月9日 10:39

版权声明:本文为博主原创文章,在注明作者和来源的情况下可自由转载。

开源小小调试器-MiniDebugger

标签:调试器

原文地址:http://blog.csdn.net/dalerkd/article/details/47373457

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!