吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2449|回复: 13

[转载技术] OllyICE和xllydbg的区别和基本用法

[复制链接] 出处:52PJ
459121520 发表于 2022-11-15 14:17 | 显示全部楼层 |阅读模式

一、OllyICE简介
OllyICE简称od,这是一款很古老的动态调试工具,在过去的许多年里,深受广大逆向程序员的喜好。但是由于些年的更新较少,并且在x64的版本上又没有大量的插件支持,所以程序员从使用od逐渐转为使用xllydbg,简称xdbg。
当然在32位版本里,od的功能还是非常强大的,因为年头久,多种多样的插件也为其舔砖加瓦,甚至达到了几乎无可取代的地位。但是站在高处就要承受压力,随着名声越来越大,用户量越来越多,针对od的保护措施也层出不穷,这也给了xdbg一些机会。
xdbg在界面和使用上和od很像,主要的功能几乎是相同的,但是一些细节上还有很多差异。由于xdbg有32位和64位两种版本,并且功能都相同,所以我们往往称其为x32dbg或者x64dbg。
下面先来看一下od的基本功能和用法,然后再到xdbg中看两者的不同在哪。
二、od的界面和基本功能
1.附加
od的版本大多是基于1.10版本进行修改的,所以虽然我们在网上下载到的od版本多种多样,但是几乎都是在1.10版本上做的处理,比如添加插件,加壳等等。
我们打开od后,在不附加任何程序时,界面大多是空白的

                               
登录/注册后可看大图


图中可以看到,od的主要界面分为五个部分,当我们附加一个程序后,这些窗口中才会显示信息。
首先我们点击左上角的文件

                               
登录/注册后可看大图


在这我们可以选择打开,或者附加。打开是打开一个还没有被执行的程序,通常这个文件是exe文件,而在下面我们也可以看到曾经打开过的程序列表。如果选择附加,则需要附加一个已经启动的程序。需要打开进程,还是附加进程,则需要根据具体的需求去选择。我们选择附加一个自己编写的小程序

                               
登录/注册后可看大图


附加后如下

                               
登录/注册后可看大图


我们点击F9运行后,在点击ALT+E来到模块列表

                               
登录/注册后可看大图


双击基址为00C10000的模块,跳到该模块,如果一次没有跳到,则重复以上操作
这样我们就成功的附加了一个程序。
2.查看各种窗口及信息
点击左上角的第二个选项查看

                               
登录/注册后可看大图


在这里面我们查看很多重要的信息
记录表示我们对xdbg进行的哪些操作,以及xdbg在运行过程中出现的各种情况,比如异常,线程终止等等,这方便我们在程序出错时去分析原因。

                               
登录/注册后可看大图


可执行模块就是我们刚刚点击的ALT+E,这里可以看到当前程序中的所有模块,并且可以看到这些模块的基址,大小,入口,名称等等。在任意模块上点击右键,也可以查看该模块的其他详细信息

                               
登录/注册后可看大图


内存则是可以看到当前程序分配的内存区域,并且可以观察到各个区域的类型及页面属性,如果我们自己用插件申请一片内存,同样会在这里显示出来

                               
登录/注册后可看大图


线程是查看程序线程的窗口,点击他和点击快捷按钮上的T是一个效果

                               
登录/注册后可看大图


                               
登录/注册后可看大图


当我们在没有下断时,程序卡死了,则可能是某些主要线程被挂起了,此时我们需要来到这个界面,点击右键恢复所有线程

                               
登录/注册后可看大图


当然,如果有些线程成为了我们调试分析的绊脚石,我们也可以尝试着将其终止,这同样可能导致程序的崩溃,慎重操作。
窗口中显示着程序的窗口布局等信息,并明确的指明了各个控件之间的包含关系。

                               
登录/注册后可看大图


这个信息并不是调试所有的程序都会出现的,所以其应用不是很多。
CPU其实就是反汇编窗口,在我们无法返回该窗口时,可以点击ALT+C或者快捷按钮中的C

                               
登录/注册后可看大图


调用堆栈需要在程序断下时才有效,他可以表示当前断点处的函数调用过程,同样也可以点击快捷按钮K

                               
登录/注册后可看大图


断点中可以查看当前已下的int3断点,并可以对这些断点进行操作,注意,在这里是看不到内存断点和硬件断点的
我们可以用快捷键ALT+B或者快捷按钮B将其打开

                               
登录/注册后可看大图


在断点上点右键,可以设置其状态,并可以将其修改为条件断点

                               
登录/注册后可看大图


查看中常用的功能就这些,其他的功能我们放到后面进行补充。
3.调试功能
查看的右边是调试选项,我们发现这里有很多功能和CE的调试功能是类似的,只是快捷键有所改动

                               
登录/注册后可看大图


第一部分的运行的快捷键是F9,这是我们经常用到的,后面三个暂停重新开始和关闭用的不多,尤其在调试一些大型的联网程序时,用这三个功能可能会导致程序崩溃。暂停与CE的暂停类似,不过有时候暂停后是无法重新运行的,慎用。
第二部分是调试代码时常用的几个功能,和CE一样,我们放在调试演示时讲解
第三部分是RUN跟踪设置,在查看中我们可以看到一个RUN跟踪,这个窗口就是为这些调试功能准备的
当我们在任意代码处点击打开或者清除RUN跟踪时,RUN跟踪窗口就会有所显示

                               
登录/注册后可看大图


我们将程序在此处断下,并单步执行,可以看到每一次执行寄存器的变化

                               
登录/注册后可看大图


再一次点击打开或者清除RUN跟踪可以清除所有的跟踪信息,也可以在跟踪窗口中点击右键进行清除

                               
登录/注册后可看大图


如果我们想停止跟踪,则需要点击关闭RUN跟踪。
RUN跟踪的功能非常强大,但是用起来并不方便,我们通常会直接观察寄存器的变化来进行分析。
最后一个部分中有一个硬件断点,点开后会显示当前的4个硬件断点的使用情况,并对可以其进行操作,我们也可以点击快捷按钮中的HBP进行操作

                               
登录/注册后可看大图


4.插件
插件是在od的基础版本上添加的功能,网上下载的od插件也都不完全相同,这里最常用的是Ollydump和strongOD
Ollydump主要用于保存程序当前版本的模块代码,方便我们后期进行对比分析

                               
登录/注册后可看大图


                               
登录/注册后可看大图


需要注意的是这里我们需要自己填写DUMP首地址和大小,默认的首地址是400000,我们根据需要自行修改,DUMP之后会在指定路径里生成文件

                               
登录/注册后可看大图


strongOD中我们常用的功能是剥离进程和申请内存,其他的也很有用,但是我们暂时用不到

                               
登录/注册后可看大图


5.其他
od的选项我们几乎不用去进行修改,顶多在界面里更改下字体的大小等等。
最后一个设置API断点,我们也可以直接在反汇编窗口直接跟随这个API函数,然后下INT3断点。
三、用od调试程序
我们打开一个小程序,用od附加,并使用ce去扫描出一个地址

                               
登录/注册后可看大图


在od数据窗口下面,有一个命令行插件
在命令行中输入dd 01A85C34并回车,可以在数据窗口中以堆栈格式显示当前地址附近的信息

                               
登录/注册后可看大图


这种查看方式是我们最常用的一种,当然命令行还有其他的查看方式,比如da,db,dc,dw,dr等等,这些指令中,最常用的是dw和dr,分别是硬件写入断点和硬件访问断点。当然,我们可以直接在数据窗口的地址上点击右键来完成这些操作。不过,如果某个地址的访问或者写入比较频繁,为了能后快速的进行下段操作,我们还是使用命令行比较方便,左手点回车,右手触发断点。
在数据窗口上,我们点击右键,可以看到很多的功能

                               
登录/注册后可看大图


备份和复制我们就不说了,二进制包括4个功能

                               
登录/注册后可看大图


这4个功能在反汇编窗口中也同样适用,不过反汇编窗口中的FF会变成用NOP填充
说白了,这些功能就是为了以字节集的方式去修改或者复制内存。
二进制下面的修改则很容易理解, 只是讲当前的数值修改为自己想要的,我们可以修改各种数据类型的数值

                               
登录/注册后可看大图


断点则包过硬件和内存两种,细分又可以分为执行,写入和访问

                               
登录/注册后可看大图


内存断点会断在访问代码执行前,硬件断点会断在代码执行后,不过内存断点可能会让程序很卡,甚至崩溃,慎用
执行断点则与F2断点效果类似,不过现在已经很少用到了
中间的第二部分,则是以各种数据类型查看数据,最常用的三类是HEX,长型和浮点
我们在CE扫描到的数据上下一个硬件访问断点,点击程序中的修改后,断点触发

                               
登录/注册后可看大图


这里断到了一个eax+C的+C偏移,由于下的是硬件断点,所以此时代码已经步过这一条。我们会发现在上面有???,这是花指令导致的混淆,如果此时我们在反汇编窗口点击CTRL+A去分析代码的话,可能会导致代码段的观察变的混乱

                               
登录/注册后可看大图


此时我们甚至连用鼠标点击指定的代码都无法完成,所以这种情况下我们会在反汇编窗口点击右键,分析,删除分析

                               
登录/注册后可看大图


接下来继续分析,eax向上分析直接来源于基地址0x180A38C,所以公式为[180A38C]+C
由于数据窗口中dd的是地址,所以+C这一层的括号我们就省略掉了,根据个人习惯去做记录即可
既然得到了基地址,我们可以在反汇编窗口点击右键,查找,所有常量,来获取到所有相同的基地址

                               
登录/注册后可看大图


                               
登录/注册后可看大图


当然,我们也可以查找命令,命令序列,二进制字串等等,根据需要选择即可。
反汇编窗口从左到右的四列依次为地址,机器码,汇编代码,注释,
其中的注释是可以随意更改的,我们可以通过这个来找到之前分析过的内容
如果我们分析到了函数头部,需要执行到返回,可以点击ctrl+F9,od默认的执行到返回是在返回到retn后多执行了一次F8,所以会来到CALL代码的下一条。如果我们在下断后,发现代码已经在了retn处

                               
登录/注册后可看大图


此时切记,不要在代码执行到retn处时点ctrl+F9,因为此时程序已经默认了我们执行到了返回处,再执行返回的话会直接返回两层,那么中间就漏掉了一层CALL,下面是不在retn和在retn处的两种返回的结果

                               
登录/注册后可看大图


                               
登录/注册后可看大图


所以当我们已经执行retn处时,只需要点击F8即可。
4.xdbg的不同之处
xdbg和od的界面几乎是相同的,事实上用法也大致一样,只是有个别的地方是需要注意的
首先是xdbg的脱离功能是内置在文件中的,无需使用strongod类似的插件,并且xdbg 的附加速度要远远高于od

                               
登录/注册后可看大图


在使用xdbg之前,我们需要先到选项-选项中-事件中将系统断点,TLS回调函数,附加断点去掉,当然如果没有需求,入口断点也可以去掉

                               
登录/注册后可看大图


然后再选项-选项-异常中将忽略异常异常区间设置0-FFFFFFFF

                               
登录/注册后可看大图


反汇编中选择一直启用高亮模式和值前加0x前缀
如果不启用高亮模式,那么我们每一次想启用高亮,需要点击一次H
xbdg的命令行不如od那么好用,他不识别dd,所以我们需要使用dump 地址来实现dd的功能,只是每一dump之后需要重新输入dump,很不方便。

                               
登录/注册后可看大图


所以在xdbg中,我们通常会是用ctrl+g来跳转到地址。
在xbdg的数据窗口上点击右键,第一项是二进制编辑,这里没有00或者FF填充,而是多了一个填充按钮

                               
登录/注册后可看大图


这表示我们可以更加灵活的对内存进行填充
我们在数据窗口点击右键,分配内存,而无需使用strongod中的申请内存,并且我们可以根据需要申请不同大小内存

                               
登录/注册后可看大图


分配内存后,选中一段区域,右键二进制填充,0102,则这片内存都变成了0102

                               
登录/注册后可看大图


在od中,我们通过hex查看字符串,只能查看ascii和unicode,而xdbg的十六进制中是有完整的代码页的,他可以选择任意一种编码方式

                               
登录/注册后可看大图


                               
登录/注册后可看大图


这里的ascii查看汉字,我们需要用GB2312或者GBK才可以。
xdbg的主窗口上会有很多的调试按钮,而不是将他们放到反汇编窗口右键的列表中,
比如注释,可以在视图中找到,也可以点击上面的快捷按钮

                               
登录/注册后可看大图


这上面的断点窗口中,可以查看到所有的已经设置的断点, 包括硬件,内存,F2等等,很方便,我们也可以对他们进行批量操作

                               
登录/注册后可看大图


如果在我们调试时出现了第一次异常,可以直接shift+F9忽略,但是出现了第二次异常,则说明程序已经崩溃

                               
登录/注册后可看大图


脱离,或者任务管理器中ALT+E关闭进程后,点击F9运行即可
在od中我们可以通过ctrl+A来分析所有代码,在xdbg中我们同样可以这么做,并且我们也可以在函数头部点击A来仅仅分析当前函数,这是很方便的。并且我们可以发现,在od中出现混淆的代码,在xdbg中有一些可以正常显示了

                               
登录/注册后可看大图


od中的寄存器窗口中除了通用寄存器外只有st0-st7,而xdbg中还有xmm和ymm等寄存器

                               
登录/注册后可看大图


甚至这里还有硬件寄存器,当我们设置硬件断点时,可以更加完美的对断点进行修改。
在几个主要窗口之外,xdbg还多了一个参数窗口,这里不只可以查看不同的函数约定,还可以查看我们想看到的所有参数值,这对新手来说是个福利

                               
登录/注册后可看大图


xdbg还有一个很实用的功能,在反汇编窗口点击右键复制,我们可以看到里面有一个RVA,这可以计算出当前地址与模块基地址的相对偏移,这对我们计算动态模块的基地址偏移有很大的帮助

                               
登录/注册后可看大图


xdbg的执行到返回不像od可以设置ctrlF9直接省略一次F8,而是必须要用CTRL+F9再点一次F8才能返回到函数外层,
所以很多人在初次使用xdbg时会不习惯
xdbg的其他常用功能与od类似,把以上的不同点搞明白,基本上就可以在od和xdbg中随意转换了。
当让xdbg最大的亮点,还是在对x64的支持上,这一点是od没法比的。


注:本教程比较的基础,我也是出于学习分享此文章内容搬砖于其他论坛,作者 fakename.png 仅做自己论坛收藏贴用,
转载请标注来源


fakename.png
fakename.png

点评

涛涛”点评说:
文章很好 就是你上传的图片 真的太拉了  发表于 2022-11-15 15:57

评分

参与人数 15HB +13 THX +7 收起 理由
消逝的过去 + 2
爱编 + 1 确实是图片影响阅读
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
Jawon + 1
创客者V2.0 + 1
DDK4282 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
李卓吾 + 1
bnjzzheng + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
yexing + 2
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
行行行行行行 + 1
temp + 1 + 1
VipDongle + 1
Wayne + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
Cerolluo + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 459121520 发表于 2022-11-16 08:25 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
温九 发表于 2022-11-16 13:26 | 显示全部楼层

。。你可否整理成doc或pdf格式的 上传到这里图片都不成样子了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Cerolluo 发表于 2022-11-16 15:53 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 459121520 发表于 2022-11-16 17:12 | 显示全部楼层

Cerolluo 发表于 2022-11-16 15:53
感谢大佬,已收藏!

谢谢你的支持
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
泄密无花 发表于 2022-11-18 14:17 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
yexing 发表于 2022-11-19 12:23 | 显示全部楼层

真是高手,讲的好详细
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-11-23 17:37 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
bnjzzheng 发表于 2022-12-23 15:03 | 显示全部楼层

感谢分享。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
李卓吾 发表于 2022-12-24 09:20 | 显示全部楼层

有点看不清
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表