CpuDbg x96全栈调试器
首先祝各位2023兔年: 技术, 兔飞猛进. 事业, 兔步青云.
介绍 CpuDbg x96 是一款运行在win系统下的全栈调试器. 基于 "蒜父" 光刃开源的调试器的基础上研发出来的. 网址: 开源调试器源码 by 光刃 其中大部分UI和功能是参考的ollydbg(以下简称od1.x) 还有一部分参考了 0d2.x odx64 x64dbg Yzdbg Mdebug Windbg Nanomite (篇幅关系不一一列举,具体的参考调试器手册) 等国内外优秀的开源闭源调试器.在此一并表示感谢.
名称CpuDbg之前起过许多名字. 最初第一个名字是叫 OllyDbg++ 后来改成 OllyDbg x64 .再后来 Oleh Yuschuk 先生发布x64版本OD后,又改成 AsmDbg. 直到最近又改成了CpuDbg.
叫法x96并没有这样的叫法. 之前在群里面看到有人这样叫 x96dbg, 并解释说是 x32dbg + x64dbg 总称为 x96. 本文章中的 x96 均表示 CpuDbg x64, 说明能同时调试32位和64位程序. (x64dbg并不能同时调试,而是需要两个不同的调试器来实现.而CpuDbg x96是支持调试32位的程序,同时支持分析64位 wow64.dll 和 wow64win.dll, 期间无须手动切换模式,全自动切换模式)
开发CpuDbg x96 调试器,可以说几乎没有逆向别的调试器,大部分都是自己实现.因为本人是做逆向的,平时很少做开发.(代码量很少) 就想借此机会多写写代码. 开发调试器期间,有不少写的不满意的,不如意的,性能不如od1.x的,我都会重写.直到写到满意为止. 逆向od1.x的也有,但很少.印象最深的是 菜单栏 -> 窗口 -> 水平平铺 和 垂直平铺. 还有一个层叠,层叠还好.多窗口也没有什么太大的变化. 重点是 水平平铺 和 垂直平铺. 这两个功能我全部自己用算法实现. 当时写的时候只开了两个窗口. 测试的时候,一切都正常. 后来测试无意多点开了几个窗口.又点了一下od1.x的水平窗口, 发现窗口位置又发生变化了. 后来才知道, 随着窗口数不一样,窗口摆放的位置也不一样. 感觉这样真没法玩. 只能逆od1.x了. 逆了才发现,原来 水平平铺,只要给MDI发一个消息就行了.你说尴尬不?
一: CpuDbg 功能介绍:
CpuDbg无论功能上还是UI上都和od1.x基本上差不太多. 除了多了64位程序的支持外. 我在介绍些其它不一样的小细节. 至于怎样使用,这里就不多做介绍了, 因为和od1.x差不多. (如果有需要, 等抽空,我会出个html格式的帮助文档. CpuDbg的菜单栏help下能打开帮助文档.目前帮助文档还没有写.)
1). API显示
API提示. 在CPU主窗口中的反汇编窗口, 如果是API段首的话, od1.x是在地址后面会显示API名称. 如下图:
od1.x必须将hex dump那跟线拖到很后面才能完整的显示API函数名称. (如果函数名很长,就得拖很远才能看到完整的函数名.)我一般使用od1.x的时候,都喜欢备注打上函数名称. 这样1来节省视图空间,二来可以直观的看到函数的名称.(但不同的工程每次都要手动打备注十分的麻烦.)
CpuDbg则直接是紫色的备注形式显示在备注栏上. 如下图:
紫色的函数名优先级非常低, 如果在API段首手动加上注释的话, 默认会覆盖紫色的API名称, 后期考虑增加一条线, 专门用来显示 标签和API, 这样就能和注释错开显示了.
2). ALSR修改保存
Od1.x 在win7及以上开启ALSR的系统调试部分EXE的基址是随机化的, 每次手动修改ALSR十分麻烦. CpuDbg则可以直接打开模块窗口(ALT+E) 在ALSR(地址空间布局随机化) 右键. 修改并保存. 这时在打开保存后的文件基址就是固定不变的了, 缺省情况下是0x00400000(ImageBase) 了.
3). Ctrl+G GoTo窗口显示API信息
Od1.x Goto窗口是没有任何提示信息的(不含插件功能). 如下图:
CpuDbg会根据输入提示相关的函数信息, 甚至是参数信息(需要双击显示的函数显示参数).如图:
goto中的api及参数数据采集可以写程序从SDK中提取. 但太麻烦了, 这里是直接使用 api monitor 的xml.(感谢作者) 节省了不少时间.
4). 文件系统模板解析
Od1.x 有一个PE Header功能, 平时用的也不多,但遇到ALSR 想固定基址时, 为了省事就会用到. 但使用起来不是很方便. 如图:
其中大段的 DB 00 数据, 看着着实不方便. 这里特意在原基础上修改了一下, 同时支持 PE ELF 等文件格式解析. 可以直接双击展开, 点击定位. 这里为了偷懒, 没有自绘, 用的是现成的treeview控件实现的, 如果没记错的话, 这个是整个调试器项目目前为止唯一使用控件的地方 :) 效果如下图: (左边的背景色好像还没有修改,下个版本一并改了.) 如图:
5). 模块劫持直接生成C源码
Od1.x 有的时候想对某程序写补丁, 又懒得写exe远程注入, 就可以用HiJackDll功能. 打开模块窗口(Alt+E) 想对哪个模块做劫持, 就对其点右键, 单击 [Dll to hijack code] 或者按热键 Ctrl+3. 如图:
然后会弹个文件保存对话框, 随便选中一个目录, 点打开就可以直接生成相应的劫持源码的 7z压缩包格式 如图:
为防止杀软误删, 默认加了一个密码.
解压出来可以发现生成出来的是 vc6.0 工程的源码(之所以生成最低版本的, 是方便使用不同版本的M$ IDE的用户直接编译. M$的产品都是向下兼容的非常好.) 如图:
源码打开是可以直接编译的. 如图:
目前只支持32位的,64位的劫持我还未写.
这里需要注意的是(不是所有的模块都支持劫持的, 这个需要大家自己测试了.)
6). 拖拽附加调试和窗口功能.
Od1.x 自身是没有拖拽附加调试这个功能的, 这个功能是依赖插件,或者反编译增加上去实现的. 还有一个插件名叫 [WindowJuggler plugin v0.06 BETA] 是我平时使用率挺高的一款插件. 这个插件功能非常简单, 运行后,插件会注册一个全局加速键. Shift. 然后将鼠标移到指定窗口内, 按一下Shift键, 窗口的句柄 ID 类名 等就会显示在插件上. 同时还有修改标题 单击 隐藏 禁用 等按钮功能. 如下图:
平时调试的时候,遇到灰色按钮,我都会使用此插件. 遇到找不到进程的广告,也会使用这插件,找广告还需要结合 pchunter(前身xuetr) 来定位广告进程的路径. 因为这个插件不能显示窗口对应进程的路径, 使用起来还是有些麻烦的, 于是将拖拽附加 以及 WindowJuggler 插件功能,结合起来加到CpuDbg 之中. 结合后的效果图,如下:
这个界面,是拖动菜单栏上的 拖拽图标出现的. 如下图:
7). 异常转储
但凡是有一定规模的软件就难免会有BUG, 开发测试期间,经常会遇到莫名其妙的BUG, 特别是脱离IDE,直接运行, 遇到BUG,一闪而过,进程就结束了. 让定位BUG,十分不便. 增加这个异常转储,能让定位BUG,更方便. 效果图如下:
8). 同时调试32和64程序
相信大家都知道x64dbg可以"同时"调试32和64位程序. 但其是通过一个进程来控制实现的. 如果打开了 64位的 x64dbg 想再调试32位的程序, 就只能重新打开32位的x64dbg来调试. 调试起来十分麻烦. 使用的时候,只要打开菜单栏的选项, 点击添加到右键菜单, 弹出如下界面:
再点击添加到右键菜单.即可右键调试32和64位程序了(前提是运行的是 CpuDbg x96, 如果是CpuDbg x32 只能调试32位程序.)
9). 窗口
在调试分析带GUI的程序时, 调试器的窗口功能也是很重要的一个功能. 当看到MDebug(后面简称(M) 的窗口功能时, 眼前一亮. 因为第一眼, 以为M把窗口RC资源格式导出来了. 实际上是看错了. 如下图:
因为一般的调试器的窗口都是横坐标展示数据, M 是纵坐标展示, 一眼看过去,真有点像 VC中的RC资源. 看清后, 发现其实和od1.x也差不多的, 就是多了个位置和大小. 至于od1.x的 Style 和 ExtStyle. od1.x也是有显示相关宏, 因为默认显示宽度问题, 被隐藏起来了,只要用鼠标往右边拉一点, 就能看到相关组合宏. 如下图:
两个一对比,就能发现 M 的显示方式看着很舒服, od1.x的显示方式,看着非常累,非常麻烦.
大家有的时候写程序,会想使用另一个程序的GUI资源, 自己一个个画实在是太麻烦了. 如果是写一个子窗口比较多如计算器这样的小程序, 即使是用 mfc delphi 之类的快速拖拽GUI, 也是要花费不少时间. 因此, 我在窗口功能中,新增了一个RC资源一健生成功能. 只要是 mfc win32 之类的标准窗口, 都可以使用一键生成RC资源. (自绘以及三方UI库除外.) 生成的RC资源,是可以直接加到MSIDE中使用的, 其它的IDE未测试. 效果如下图:
除此之外, 还增加了一键展示UI. 看上去就有点像是资源修改工具了 :)
10). 锁定架构模式
yzdbg调试器有一个挺便利的功能, 就是 锁定 x86_32 模式,和 锁定 x86_64 模式! 如下图:
当在64位系统上调试32位程序的时候, 进程里会有三个比较特殊的64位模块, 三个模块分别是: ntdll.dll wow64.dll wow64win.dll 如果是一般的调试器, 你可能就没有办法动态分析了. 因为当前进程是32位的. Yzdbg 的锁定模式功能,就解决了这个问题.
这个锁定模式功能除了yzdbg 还有ida 和 windbg也同样有此功能.
Ida 通过 选项 -> 分析 中可以设置, 如下图:
Windbg 输入 .load wow64exts !wow64exts.sw 就可以切换模式. 如果当前是 x86 32位模式,输入刚刚的命令后就会切到 64 位模式. 想切回32位模式, 再输入一次 !wow64exts.sw 命令就能切换了. 效果如下图:
32位模式的!
64位模式!
我知道的公开的调试器中, 只有这三款支持模式切换, 但都不支持架构切换!
这么实用的功能, 肯定要将其加入到 CpuDbg 中. 如下图:
目前只加入了 锁定 x86 和 arm 两个架构. 未来, 还会加入 mips powerpc等构架下模式锁定.有了这个功能, 哪怕是在x86下执行arm的shellcode 也可以用切换架构模式的方法轻松分析它们了 :)
11). 多语言热切换
缺省情况下或第一次使用调试器,默认是英文的. 通过 菜单栏 -> Options -> Language 可以设置指定的语言. 如下图:
点击后立即切换, 无须重启调试器,就可以做到热切换语言. 目前就四种语言, 其中日本语只写了一点. 中 台 英 是完整的. 大家可以自己添加熟悉的语言配置文件.
多语言目录是在: Config\Language 下, xml格式的. 要使用的时候,直接复制一份 中文的 xml 然后修改相应的值即可.
以上介绍的全部是Windows下的新增功能, 当然新增的内容也不止于此, 因为篇幅关系,就不一一介绍了. 具体的新增功能细节,可以等手册写完后,通过帮助文档获知新功能.
Od1.x上原有的功能还有很多未写.
有些功能感觉没啥用,至少在20年后的现在来看,是没有啥用. 但又不舍得去掉. 想留个od完整的样子.
有些功能是实现太过复杂,还未写. 或只写了一部分. 还未写的功能我都有留一个接口. 有的可能是 lbuttondown 接口 有的可能是 keydown 热键接口. 如下图:
正如上图显示的一样, 看到此提示, 说明功能还没有写. 本来我是想等全部写完后再发布的, 但我担心再拖下去这个调试器项目就真黄了. 这个项目本人也写了挺长时间了,中间有好几次都要放弃...
移动端和芯片调试支持
Win下的调试支持, 我是做为调试器项目中的支线项目, 重头还是放在移动端和芯片的支持上. 毕竟 移动和IOT 现在都很火, 而Windows 已经渐渐走下坡路了. 我也很久没有接触win逆向了. 虽然Windows调试做为支线任务, 但前期还是会先把windows 下的基本调试功能完善. 待所有功能完善后,再在Win的基础上开一个分支,做为主线项目.
下一个项目不出意外的话, 应该会是先搞安卓调试(这里说的调试不仅仅是指仿真, 还有类似IDA那样远程调试, 至于技术实现方案,我还没有想好.最终哪个性能好,延迟低,会采用哪种方案.如果哪位大佬有成熟的方案推荐,可以跟贴留言或私信我.), 再然后是苹果调试. 和x86 16调试, 芯片部分应该是会放在最后. 当然也可能同时进行, 主要还是看自己时间安排.PCB画板我不熟,可能还得恶补一下.
现在的版本已经支持ARM的软件仿真支持. 对于一般的 脱壳 去混淆 去虚拟化 等, 应该是会有不少帮助的. ARM仿真应该是等Win下的基本功能写完再加入的. 但我已经迫不及待想看看用CpuDbg x96仿真arm效果了. 截止到现在,我甚至连 [硬件断点] [线程窗口] [句柄窗口] 等,调试器常用窗口都没有开始写. -_-!!! (本文不是一次性写完的, 是CpuDbg x96更新一点功能, 文章也随之更新的. 所以您看到这篇文章的这段话,也可能是几年前写的了...)
看到网上有不少仿真使用 unicorn angr unidbg qiling qemu unidbg 等, 但大多都是基于python实现的,个别用C/C++,也都是控制台的. 如果是单步时, 想观察和修改 寄存器 堆栈 内存 符号 等信息时, 十分不便. 如果有一款带界面的ARM仿真, 能搜索符号,又能搜索导出函数和字符串.那应该是一件很cool的事. 效果如下图:
(注意, 现在说的是软件仿真, 和上面的切换模式是两码事. 切换模式可以在调试x86程序的时候,动态切换到 arm 架构.)
目前的ARM汇编语法高亮还没有写, 在论坛里看到有一位网友写的高亮感觉挺不错的, 如下图:
语法高亮部分, 后期写的时候应该会参考这位网友的高亮着色. 不过他的背景是黑色的, 可能不太适用于CpuDbg中 : (
关于硬件调试, 之前调试器我用过 keil 和 J.MasterI(下简称 J. , J. 是我早些年接触的第一个硬件仿真器商业产品). Keil 是类似VS一样是一款IDE, 调试是需要源码支持的, 就不说了, 而 J. 是可以无源码仿真的, 在当时我刚接触 J. 时, 真觉得是神器, 他是怎么实现仿真的呢? 工作原理是什么? 为什么晶振设置错了, 就不能仿真? 一连串的问题的同时又一直感慨这是一个神器. 然而在真正使用的时候, 又想吐糟, 真是太难用了, 界面很糙 排版难受, 这些都可以理解, 但断点支持太不友好了. (那时我就萌发了自己开发一款硬件调试器的想法)使用的时候, 我是边吐糟, 边夸 J. 真是个神器. 下图是 J.
(注意, 现在说的是硬件仿真, 和上面的软件仿真又是两码事. 软仿受边界器件的影响, 只适用于仿真部分函数等, 硬仿就相当于开放所有调试功能, 可以完整的分析整个固件程序.)
硬件仿真接口用的最多的就是 jtag 和 swd. (张银奎老师的硬件调试器gdk是intel的dci实现的,也是基于jtag的)一般情况 直接使用 jtag jlink之类的就可以了, 但我觉得做事得有始有终, 只有软件, 没有配套的硬件, 不够卷. 软件调试器都写了, 还差硬件调试器吗?
在写调试器的时候,我经常在想一个问题, 既然是全栈调试器, 你总会遇到不支持的架构! 本调试器使用了逆向界的四大神器, 其中汇编使用的是keystone 反汇编使用的是capstone 仿真使用的是unicorn. (感谢这些作者)这些库再强大, 也总会遇到不支持的架构. 如果遇到不支持的架构, 又想支持它, 该如何做呢? 上gayhub通知几位作者,坐等更新吗? 不现实! 我在想, 如果把需要用到的CPU移植到硬件上来实现以上的功能思路不知道是否可行. 可能会有很多瓶颈, 但我想这应该也算是一个野路子吧.(如果这方面你有什么好思路, 欢迎跟贴留言.或者私信我.) 我的初衷很简单, 调试器, 要么不写, 要写, 就一定要写好, 功能写全.
硬件部分基于x.
张银奎老师的gdk做成一个小方盒子,我觉得挺好看的,但太大了,我觉得不方便. 我到时候会做成类似 DSLogic 大小的黑匣子. 如下图:
我个人挺喜欢 DSLogic 的这个黑匣子, 外观非常好看, 手感也非常舒服. 做成盒子的话,肯定少不了屏幕. 后期会加上一个彩色墨水屏, 嵌入在盒子的中间, 这种屏幕, 基本不用电, 只有写入东西的时候,用一次很低的电量, 写入之后, 断电也能一直显示的. (断电至少能显示几年)下图就是断电显示的效果:
加上屏幕后, 可以在调试器上显示一些今日摘要, 二维码, 联系方式, 名片 之类的提示在屏幕上.
像CpuDbg x96这样的软硬件全栈调试器,你会喜欢吗?
FAQ:
※. 调试器收费吗?
本调试器免费,不收费!
(如果您觉得好用,可以打赏,支持一下作者)
点我打赏 打赏名单
※. od1.x 和 cpudbg 有什么区别?
od 1.x 是外国友人开发 官网: http://www.ollydbg.de
CpuDbg是国人开发 官网: http://www.ollydbg.com
两者没有本质区别 都是调试器 前者只支持x86 32bit动态调试 后者支持的平台更全些
※. 调试器会长期更新吗?
长年更新...
业余时间更新, 忙时可能3-5个月一更新, 闲时,可能几天一更.
如果是反馈能稳定复现的bug, 一般都会第一时间更新 :)
※. 怎样获取论坛邀请码?
论坛未正式启用前,不开放注册,目前只能通过反馈bug来获取邀请码.
※. 有交流群 微信群或联系邮箱吗?
官网上 [关于 -> 联系] 中有联系方式.
※. 项目会开源吗?
调试器项目现在只是一个雏形,离心目中的调试器还很遥远.(程序框架完善前,没有开源打算)
※. 现在调试器那么多了,为什么还要写?而且还是免费的?
也许是情怀??? (┳_┳)..
CpuDbg调试器UI上虽然和od1.x差不多, 但功能确增加了很多. 由于篇幅关系, 不可能一一介绍所有功能. 为了方便新手快速入门, 我会利用业余时间再录制几套系列视频教程. 本来是打算边开发调试器,边录制教程的. 但考虑到在版本更新的过程中, 已录制的UI和功能,后期可能会更改. 又加上调试器的名称, 可能还存在争议, 后期也有可能更名. 所以就只能等功能写的差不多了再开始录制.
教程录好后会放B站, B站上面本人已经录制了一些调试器开发历程的视频, 还有一些IOT逆向的视频和安卓脱壳的视频. 有兴趣的朋友可以去关注一波 :)
以后录制的调试器教程, 应该会分为以下几个系列
CpuDbg x96逆向教程之 Windows 篇
CpuDbg x96逆向教程之 安卓 篇
CpuDbg x96逆向教程之 苹果 篇
CpuDbg x96逆向教程之 硬件 篇
.....等等
教程内容不会设计到调试器的开发, (讲开发太枯燥,听的也很无趣.) 课程内容会尽量由浅入深. 方便新手理解. 课程时长我会尽量控制在每一课10分钟左右, 因为个人认为, 时间一长, 讲的东西就容易跑题. 质量就跟不上. 精华都是浓缩的.
课程除了介绍调试器基本功能之外, 还会介绍基本逆向知识, 涉及的内容应该会非常广, 也有实践和课后练习. 实践部分讲解也会涉及到虚拟机还原之类的.(具体的,等列出大纲,有兴趣的朋友可以看看.)
Od1.x是我很喜欢的一款调试器, 奈何一直不支持x64. 等了几年, 直到 2014年2月5号, od官网放了一个重磅消息说, 正在写x64. 真是很让人期待啊!
然而期待过后就是失望, 这个消息放出之后, 就再无消息了, (偶而能在网上看到有 OllyDbg x64的贴子, 也都是diy版的, 意思是 能在64位上运行, 而不是调试64位... )
等了三年又三年, 也没等来64位od!确等来了 x64dbg. 但由于习惯了od, x64dbg怎么用都不习惯, (这个主要还是因人而异,在写调试器之前我就特意问了几个朋友, 大部分都还是习惯od的, 但也有更喜欢x64dbg的.) 还有很多的BUG. 于是, 我决定利用业余时间自己写一个od. 当时也担心这个项目最终会烂尾, 就安慰自己, 能写多少算多少. 哪怕几个月写一行代码, 离调试器完成就更进一步.
CpuDbg 是我业余时间写的, 从时间上来算, 断断续续写了差不多有三四年了. 记得是新冠疫情爆发时启动的这个项目. CpuDbg开发并没有任何技术含量及难度, 只要熟悉debug api和一些win32开发基础就能开发. 其它都是照着od1.x写功能, 主要就是绘制UI有些麻烦. 期间有几次都想放弃了. 印象中最长时间有近一年没有更新过一行代码.时间长到我都忘了这个项目的存在, 后来还是朋友来问我调试器进度时, 才想起还有调试器这个项目...
CpuDbg UI部分完全是我自己绘制, 没有逆过od1.x一行代码. 包括工具条上图标的间距, 都是把图片放大到最大,用像素点来计算他们的间距. 如下图:
期间UI也重写了n个版本, 最初写的要么太卡, 要么GDI泄露.(记得论坛里有位网友写的 Z0BPcTools GDI泄露就很严重. ) 等等... 直到现在的版本使用上感觉和od1.x还是有不少差距, 未来还是要再不断的完善.
当初写UI的时候,朋友劝我直接用x64dbg的UI, 别浪费时间造轮子了 (情怀嘛, 就得充满仪式感!) 可是我实在是接受不了qt, 但qt又可以跨平台, 真的让人很难取舍. 后来我有想过用WEB实现UI, 这样就能跨平台了. 由于我对WEB不熟悉, 担心写出来的UI不能1:1的像OD(我是OD控,和od的UI差距大我接受不了), 还有就是担心WEB的性能跟不上. 特别是trace的时候, 如果有卡顿现象的话, 就真的会影响使用. 后来有一个熟悉WEB的朋友告诉我,可以用WEB,不会影响性能. (奈何朋友告诉我的时候, GDI版的UI已经画的差不多了. 不打算再重新画一个WEB版的ODUI了.)
相信每一个刚入门, 或已入门的研究人员, 都希望拥有一款属于自己的调试器, 为此diy大改调试器, 特别是修改显示的文字, 图标 之类的, 很容易修改出错. CpuDbg为了方便大家diy, 特意将能落地的资源,全部未加密落地了. 包括 中英文语言包 图标 图片 配置 等等.
写到这要感慨一下od1.x的作者是真牛!!!
虽然调试器整个开发流程,没有任何技术含量, 但其复杂度是难以想像的. UI就是花点时间,这些就抛开不说了, 就插件接口函数, 文档化加上未文档化的就上百个函数, 还有插件接口文档, 调试器帮助文档, 密密麻麻的.甚是可怕.(当初写调试器的时候,我是满满的信心, 决定不管多复杂, 都得实现插件接口要兼容 od1.x的. 且一定要兼容, 当我看到上百个函数, 很多函数还是相互嵌套调用, 我果断放弃了 Orz 结果导致现在插件接口写的不伦不类的, 四不像... )
以下是od1.x的文档大小:
插件接口文档 187 KB (192,046 字节)
调试器帮助文档 288 KB (295,796 字节)
看完作者写的插件接口我就觉得这个作者太可怕了.
最最最重要的是, 那时候可不像现在有那么多的同类软件和资料参考, 唯独也就只能参考 debug和 softice 之类的了. 而且有很多优秀的功能都是作者自己原创的, 比如
dump
source debug
sfx
trace
symbols
inspect
Import library
arguments
animate into
animate over
Set condition
execute till return
Execute till user code
analysis
...等等
(这里要说明一下, 这些技术细节或最终原理肯定都是出自M$的, 这里说的作者原创是指能想到这些功能, 并将这些功能集中在调试器上, 并且实现出来.)
这些功能放到20年后的现在来看, 每一个功能都是调试器的标配功能, 你要想想 20年前, 这里每一个功能, 都是没有资料, 或者资料匮乏. 再想想20年前,各位应该都还在看 <小龙人> <白眉大侠> <日月神剑> <家有仙妻> 之类的电视吧 : ) 那时候网络还都是拨号上网居多, ADSL还未普及. 等ADSL普及了, OD作者在写调试器,你们还在网吧3389互联星空new用户刷钻. -_-#
这些总总, 让我觉得这位OD作者真的是太过强大了. Orz
本来调试器是打算叫OllyDbg x64的(那时候 od还没有发布 64 位) 前几天od突然发布了 64 位版本了. 即然作者发布了,那我现在写的这个也没有必要再叫这个名字了. 就决定换成 AsmDbg(只是待定的,回头可能还会换名字).
这里我还要吐槽一下阿里的企业邮箱. 期间我给 Oleh Yuschuk 先生去了封邮件, 之前听朋友说od作者从不回邮件的. 所以发了邮件后我也没怎么关注邮件的事. 因为我平时休息时间短,中间被吵醒就很难入睡,所以我睡前喜欢调飞行模式.我给 od 作者发了邮件之后就开飞行模式休息了. 直到过了好几天我打开阿里邮箱才发现, od 作者在收到我的邮件后, 就给我回邮件了. 只是阿里的企业邮箱并没有通知. 微信等其它APP你开飞行模式,第二天关飞行模式也是能正常接收消息的. -_-#
感谢这位德国作者 Oleh Yuschuk 先生为我开发调试器提了不少帮助和建议!
感谢Oleh Yuschuk 先生为我们开发出这么一款优秀的调试器!
也许 OllyDbg 时代已经过去, 但她会永远存留在我们F7 F8 F9这一代人心中!
OllyDbg YYDS !!!
CpuDbg 会有两个版本, (在标题栏最右边能看到) Check 和 Free 两个版本.
现在发的是 Check 版本, 带有调试 日志 等信息. 主要是为了方便测试 定位 bug.
等bug修复的差不多,功能写的差不多后,会发Free 版本.
Check 版本 连续按 F7 或 F8 , 再性能差的电脑上可能会有卡顿的现象. 因为带有调试和日志信息,所以卡顿是正常的现象. 以后发布的Free 版本不存在卡顿问题.
调试器本人是在win10上研发的,所以在win10上相对稳定些. Win7上会有不少问题, 目前发现了不少win7上已知问题都已经修复了. 至于xp 我还没测(实在太忙了,没有时间测)
目前调试器还有很多功能没有写, 本来是想等全部完善后再发的, 我是真怕这个调试器项目烂尾了. 所以才提前发的. 有大家的反馈BUG, 也许更新就会更有动力...
(这里还要感谢下很早就加群测试反馈bug的群友们)
更新日志: https://bbs.ollydbg.com/forum.php?mod=viewthread&tid=1&extra=page%3D1
调试器开发历程(文字版):https://www.bilibili.com/video/BV1PB4y1T7vT
(q群只是用来反馈bug, 调试器相关的交流可以加微信群.)
反馈bug 企鹅群:四7五零4五七二九
调试器技术交流微信群:
由于本篇文章不是同一时间段写的, (有好几年了) 时间跨度有点大, 写的内容可能有些凌乱,
甚至前言不搭后语, 还请各位见谅!
CpuDbg相对于 od1.x x64dbg 等, 就像是呱呱坠地的婴儿.
希望大家给CpuDbg 一点时间, 让她慢慢成长,
(Rome was not built in a day)
但愿有一天她的功能 软件方面能超越od1.x , 硬件方面能像劳特巴赫一样出彩.
许魏有句歌词写的很好!
"曾梦想仗剑走天涯"
你当有鸿鹄之志、当骑骏马踏平川,
不要因为一时的低迷而忘记儿时吹过的牛,
即使没有观众你也应当全力以赴,
再为儿时吹过的牛奋斗一次吧,
当你回首往事时,
不因碌碌无为而悔恨、不因虚度年华而羞耻,
你就可以很骄傲的告诉自己,
我不负此生!
愿CpuDbg能成为您手中的剑, 伴您驰聘沙场, 戎马一生!!!
抱歉着急看春晚,排版有点乱,可以看PDF。
附件解压密码: www.ollydbg.com
因为论坛上传有限制大小,所以下列运行库和插件是分开的.
调试器直接无法运行,需要运行库解压出来复制过去.
插件也同样需要解压复制到相应的目录中.
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2023-1-22 17:49
被CpuDbg编辑
,原因: 调试器忘保存PDB了
注:下载本附件需支付
2雪币(note:2 points for
downloading this attachment)