@anyinthttps://www.52pojie.cn/thread-1573471-1-1.html
OllyDbg诞生于2000年,曾经是很不错的调试器,和W32dasm被誉为屠龙刀和倚天剑,它继承了softice、TRW2000的很多特性,这个咱就不细说了。
而x64dbg诞生的年代就比较靠现在了,具体多少没查出来,这些咱也不细究了。还是少说费话说重点吧:

Ctrl+N窗口对比:

Ollydbg的该窗口,你只能一个字母一个字母的键入; 这对于眼神不好的同学十分不便
哪怕你输入错了一位也不会找到
而且不支持过滤掉不想要的,键入的内容会在标题窗口上显示键入的字符

再来看看x32dbg/x64dbg的该窗口吧。
左右两栏非常的清晰,想要系统dll 就键入过滤下(同理右边也是一样道理)
而且懂正则表达式的还可以来个模糊匹配

按下Ctrl+ 上下滚轮放大 缩小 窗口功能
这个在Ollydbg中是完全不被支持的
x32dbg/x64dbg可就不一样了
虽然有不少同学看不习惯它的字体,但是通过热键,你可以解决


3A地址转换: 即VA 、RVA 、FOA(虚拟地址/相对虚拟地址/文件偏移地址)
这个对于汇编工具来说极其重要的东西,比如你用HIEW/W32dasm/IDA/2进制忍者/Ollydbg/MDebug
16进制编辑器。你第一步得整明白,谁对应谁吧?这就好比问你家住哪里?
虚拟地址? 好比说,某某小区xx地址
相对虚拟地址?好比说吾爱破解大楼对过的
文件偏移地址?中国天津塘沽区xx。。。。
这样能更好的理解了吧?
再来看看它们都是各自如何解决的?
Ollydbg默认只能Ctrl+X 得到 VA地址
其他两个地址可以通过viXX插件来得到
原生是不支持的

再来看看x32dbg/x64dbg中的吧,这是法王设计的最合理的热键了
Ctrl+X是VA, 加上SHIFT就是相对 RVA, 另一个单独记一下就全部搞定了

字符串搜索

Ollydbg中是这样的,通过Ctrl+L搜索下一条,搜索结果不能过滤掉不要的

x32dbg/x64dbg中是这样的
不但支持针对当前模块 或 所有模块 来搜索
还能对搜索结果过滤,并支持正则

接下来,再看看Ollydbg中的HIT跟踪和Run跟踪

hit跟踪就是哪里被运行过了,就是命中了
这个x32dbg/x64dbg是没有的,但是我们可以编脚本来模拟实现
Run跟踪呢?

这种模式下,Ollydbg极其容易让调试器崩溃,具体就不表演功能了
来看看x32dbg/x64dg中是啥样的吧?

来到x32dbg/x64dbg中,启动运行跟踪
并设好断点

它将存储到.trace32 / .trace64 中
比如我们要把Fscapture点关于时断下
你不是得这么想?

先找到注册成功 ,失败的字符串?

这里会出现一托托 ,或 很长的字符串 ;有经验的同学不用想,肯定就知道与注册算法有关
顶上埋个陷井吧,同理下面也埋上一个

然后顺势运行就会断下
Ctrl+F8经过了比较长的运行
就会来到下一个字符串的调用处
006D3DED | B8 0C436D00 | mov eax,fscapture.6D430C | 6D430C:"ACjizQuiyoyJfUh4/b6b"

然后呢,就会读取到你的注册时用到的注册名,注册码
公司网址。。。
最后是授权给哪一种类型的人士了。

然后呢,这个跟踪窗口就是一览无余的展示调用的地址
堆栈前后寄存器,相关信息


而且你还能把它导出为CSV文件,再用Excel编辑。。。方便 吧?这OD能比吗?
Ollydbg的教程太老了,想想也有22年的历史了。
@anyint
接下来,再顺便回答下这位小道友,关于字符串搜索不到的经典问题:
首先你要明白一个道理?
为什么会有字符串 这种东西的存在?
你得明白问题的本源才能更好的下手。
要想明白这个问题就必须懂得一些编程和开发工具的内幕。
比如VS2013。。。。其他版本;或是其他的开发工具编译输出的文件也是类同的道理
程序发布时,有两种版本 调试版 ,发布版。
调试版 呢,带有很多调试符号,输出信息给编程工具(机器)或 开发者看的
便于是开发过程中发现程序的bug,帮助解决问题准备的。
发布版呢? 为了让打包后的文件更小? 更优化,所以呢,编译过程中就会开启某些优化的选项
比如VS2013 就会存在 *.pdb文件
这也正是IDA你在打开文件时,弹出的第二个对话框,找你要相关的文件。没有源码,你哪来的此文件?
就像IDA这种东西呢,它会像x32dbg/x64dbg/Windbg一样去尝试到微软网站上下载相关的文件 ,以便加载识别更多的符号信息给调试人员查看。
它会正确的识别出一些函数的名称,猜测一些符号的名称(既然是猜的,当然是有对有错了)所以就需要人工的干预和修正才能让某些函数或符号
给一个正常的人来看,当然识别如果不正确的话,你导出的地图文件再给x32dbg/x64dbg来加载也是无济于事的。
另外呢?这些调试信息,字符串,还跟编程时用到的程序语言、存储结构有关。
第一,它得真的有信息你才能看到,不是吗?
第二,信息得加载了你才能看到。 比如 2022年1月10号8点35分,868路从你家门口经过你再去乘坐,当然才能坐到该辆车啊。
所以时机问题很重要,有些存在于某些dll文件中,程序运行时,并未加载了这些dll,你就搜索,又岂能搜索到呢?
第三,到底是真有,还是真没有?
关于这个问题,很多人都搞不明白。
先说,确实是搜索不到,但是你在屏幕上的的确确是真的好像是看到了。
这就有可能有以下几种可能
- 字符串是加密处理过的:譬如RichViewEdit控件上面的那个网址,顺序是打乱的网址;程序是加壳的
- 以一种你不知道不理解不明白的形式保存在某个文件里: 比如保存在*.xml语言文件里,保存在网页中,保存于图片中。。。等等
在调用的时候呢?都是间接调用来的,比如LoadString这个函数。。。当然还有太多种的可能了
请问眼睛看到的东西,就一定真实存在吗?所以,得有变通的相对的看世界。
- 编码方式:买过《加密与解密第四版》的都知道,书中说到常见编码方式有三种ASCII , Unicode, UTF-8三种
而实际场合,又何止这几种呢? 比如今天某人发表的那个VB贴,GB编码,方式选择不对,照样搜索不到,也是这个道理
所以,综上所述,搜索字符串是一种不靠谱的方法。
比如,你想想你回家开防盗门? 插入key=》拨动=》成功则进门,不成功呢则回不了家了。
编程也是一样的道理,编写一个注册版的程序,没有key作为主要线索,你怎么前后建立纽带联系?
Windows下事件驱动机制,这点很重要,所以函数的调用也是非常关键的一环。
好了,跑题了,回归正题吧。

再说一下断点窗口

该窗口OD只能显示F2断点列表

而x32dbg/x64dbg你可以看到F2 和 硬件断点两种,很直观
而OD通过插件显示4个硬件断点

关于函数的 显示参数
这点OD设计的比较理想,能更好的查看程序的参数
而x32dbg/x64dbg 你只能用 xAnalyzer解决,目前并不理想,凑合看吧。

将程序转换成源代码:


用于MT管理器 和 IDA的对此功能不陌生吧? 有时转换一下,对于理解程序的返回值,修改成啥样是相当关键的。
这点OD貌似没有

句柄窗口

这里比OD设计的更
细腻和合理
步进步入直到满足条件

这是x32dbg/x64dbg中相当牛逼和好用的功能
其实这个窗口它集成了多个内置的变量、函数等的综合调用
与此类似的还有条件断点设置窗口(Shift+F2)

x32dbg/x64dbg中内置了 大量的变量、函数
可以非常方便的组合成更多复合的表达式
编写出更方便的脚本,帮助调试

x32dbg/x64dbg支持python脚本
这种特性被当下多种调试器支持
OD呢,也有 https://www.52pojie.cn/thread-296289-1-1.html,貌似无人问津。

x32dbg/x64dbg中的多功能引用窗口

该窗口中你能访问很多地方

新版本中流程图与CPU的融合改进:

Alt+C
G
最后一点x64dbg有源代码,我们可以下载再编译加入新功能:
譬如:

我们在可以直接修改源代码,实现按下F5键
自动注释输出 【足迹1 足迹2 足迹3。。。】
