开源小小调试器-MiniDebugger

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

项目地址:
http://code.taobao.org/p/MiniDebuger/src/
https://github.com/dalerkd/KD_DBG

这篇文章写于 2015-08-09
现在是 2021年5月22日
几年前 想把该项目 迁移到了Github上,
有朋友私聊我,说老地址已经报废了。想要一份源码。将把之前迁移的地址贴了上来。
显然如果 我现在重新设计肯定会更好一点。。。但当时的这个小作品对于了解基本的调试原理已经足够了。

设计思考

设计分析

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

这里写图片描述

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

流程架构

流程

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

自己之前写的反汇编引擎太渣,就没用,本项目使用了开源的BeaEngine反汇编引擎,其特点如下:

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

功能

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

当前版本不足之处

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

不过这只是首个版本,后续不仅会对框架进行调整.预期还会在如下几个方面进行加强:

  1. 更佳的断点策略.特别是针对软件断点的一些改善
  2. 反AntiDebugger策略的加入.

###开发小心得

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

项目地址:
http://code.taobao.org/p/MiniDebuger/src/
https://github.com/dalerkd/KD_DBG

2015年8月9日 10:39

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值