【第七节】在RadAsm中使用OllyDBG调试器

前言

        接着本专栏上一节,我们虽然已经用上RadAsm进行编写x86汇编代码并编译运行,但是想进行断点调试怎么办。RadAsm里面找不到断点调试,下面我们来介绍如何在RadAsm上联合调试器OllyDBG进行调试代码。

OllyDBG的介绍与下载

        OllyDBG 是一款功能强大的动态追踪工具,结合了 IDA 和 SoftICE 的优点,成为 Ring3 级调试器的佼佼者。其易用性和强大的插件扩展功能使其成为当今最流行的调试解密工具之一。OllyDBG 由德国开发者 Oleh Yuschuk 编写,我们简称OD。官方网址: http://www.ollydbg.de/

         打开上面网址,在如上位置下载32位OllyDBG 软件。然后跳转到下面网页

         在上面指示位置进行下载它的1.10版本,下载压缩包到本地并解压如下

         立即打开会提示如下一些dll文件和当前系统不匹配,可以选择不用理会,点击否

        第一次打开OllyDBG,界面布局很空,不用理会,直接关闭。

        然后我们在RadAsm中配置OllyDBG,同样在Option->Set Paths设置

在如下Debug位置填入OllyDBG的文件夹位置

        点击Apply应用后点击ok,完成设置。

        然后我们打开上一节的第一个masm程序,编译链接成功后,按快捷键:Ctrl + D,打开 OD 进行动态调试改程序。

        点击上面的OK,就可以打开 OD如下界面。

         我们可以如下点击反汇编代码某一行,右键->Breakpoint->Toggle设置断点,或者直接点击所在位置按快捷键F2

         按F9运行,到下面红色为止会暂停当前运行,按F8单步过操作两次就会运行至灰色位置

        调试结束后,在 OD 中按快捷键:Alt + X,可以快速关闭 OD 程序。至此已经完成软件环境的搭建和成功调试代码。下面介绍一下OllyDBG的简单界面布局和使用

界面布局和功能简单介绍

重要术语

  • 断点:程序执行过程中被中断的位置。中断会导致计算机暂停当前任务,转而执行其他任务,然后再返回原任务继续执行。

  • 领空:程序自身代码所处的内存区域。

  • 程序入口点 (OEP):程序开始运行时执行的第一条指令的地址。

  • 反汇编窗口:显示被调试程序的反汇编代码。标题栏上的地址、HEX 数据、反汇编和注释可以通过右键菜单中的“界面选项”进行切换显示。

  • 寄存器窗口:显示当前选定线程的 CPU 寄存器内容。点击“寄存器 (FPU)”标签可以切换寄存器显示方式。

  • 信息窗口:显示反汇编窗口中选中的第一条命令的参数及跳转目标地址、字符串等信息。

  • 数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。

  • 堆栈窗口:显示当前线程的堆栈。

其中的窗口细分如下:

对应的序号窗口简介如下:

1 汇编代码对应的地址窗口  
2 汇编代码对应的十六进制机器码窗口
3 反汇编语句(语法表达式)
4 注释信息窗口(内存地址\ 十六进制(偏移值)\ 反汇编代码 \ 注释)
5 FPU寄存器信息
6 Flag军旗指向。你要在汇编里改那条跳转指令, 使程序执行到那里时执行同等你改Z flag的效果。 比如说把JMP改成jz, JZ改成nop等。
7 中转数据仓库地址
8 HEX二进制代码
9 文本ASC代码
10、11 堆栈窗口:显示ESP寄存器指向的信息(也是最重要的)
12 CUP执行情况反馈  
14 直接输入汇编指令窗口  
15 程序运行状态显示
16  快捷命令图标   
17 程序运行、暂停、中止状态信息。

其中的按钮功能介绍如下

按钮1=F3,打开被调试的exe文件。

按钮2=CTRL+F2,重新加载被调试的程序。

按钮3=ALT+F2,关闭被测试的文件。

从左到右顺序,1=F9运行,2=F12暂停,3=F7单步入,4=F8单步过,5=CTRL+F11跟踪步入,6=CTRL+F12跟踪步过
 7=CTRL+F9 执行到返回,8=转到反汇编窗口的地址

 l : log 查看OD运行的日志信息
e :被调试exe程序所加载的所有模块的信息(加载基址,大小,入口(OEP),名称,版本,路径)
       OEP:(Original Entry Point)
m :程序的内存映射视图(memory map)
t :线程信息
 w :窗口windows信息
h :handles 句柄表
c :显示CPU窗口(反汇编窗口)ALT+c
/ :P,显示补丁(Patches)信息 CTRL+P
k :调用堆栈 ALT+K
b :软件断点列表 Alt+B
r :显示参考(数据引用等) references
... : RUN跟踪轨迹,run trace
s: 源码source显示窗口

OD常用快捷键

F2:断点,CTRL+F2 重加载程序!
F3 打开要操作的程序。
F4: 运行到光标处
F7: 单步
F8: 步过

F9: 运行,SHIFT+F9(次数为程序运行的次数-1次

Shift+F9 - 与F9相同,但是如果被调试程序发生异常而中止,调试器会首先尝试执行被调试程序指定的异常处理(请参考忽略Kernel32中的内存非法访问)。

Ctrl+F9 - 执行直到返回,跟踪程序直到遇到返回,在此期间不进入子函数也不更新CPU数据。因为程序是一条一条命令执行的,所以速度可能会慢一些。按Esc键,可以停止跟踪。

Alt+F9 - 执行直到返回到用户代码段,跟踪程序直到指令所属于的模块不在系统目录中,在此期间不进入子函数也不更新CPU数据。因为程序是一条一条执行的,所以速度可能会慢一些。按Esc键,可以停止跟踪。

Ctrl+A :分析代码(函数,参数...)
Ctrl+G : 跳转到
Ctrl+X : 复制地址
Ctrl+E :修改内存
Ctrl+B :二进制搜索
Ctrl+F :指令搜索(单条指令)
Ctrl+S :指令搜索(多条指令)
Ctrl+F12: 重启调试
Ctrl+Shift+x :复制二进制数据

常用查找

函数名查找,反汇编窗口鼠标右键

字符串查找 ,反汇编窗口鼠标右键

其他详细教程可以参考看雪网站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/474545.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF MVVM框架

一、MVVM简介 MVC Model View Control MVP MVVM即Model-View-ViewModel,MVVM模式与MVP(Model-View-Presenter)模式相似,主要目的是分离视图(View)和模型(Model),具有低…

PH热榜 | 2024-11-19

DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论、搜索等功能,欢迎大家体验。 在线预览 1. Layer 标语:受大脑启发的规划器 介绍:体验一下这款新一代的任务和项目管理系统吧!它…

【ArcGISPro】使用AI模型提取要素-提取车辆(目标识别)

示例数据下载 栅格数据从网上随便找一个带有车辆的栅格数据 f094a6b1e205cd4d30a2e0f816f0c6af.jpg (1200799) (588ku.com) 添加数据

联通光猫(烽火通信设备)改桥接教程

一、获得超级密码 1.打开telnet连接权限 http://192.168.1.1/telnet?enable1&key9070D3BECD70(MAC地址)2.连接光猫获取密码 telnet 192.168.1.1 用户名:admin 密码:Fh9070D3BECD70连接成功后 load_cli factory show admin_…

掌握SEO提升网站流量的关键在于长尾关键词的有效运用

内容概要 在现代数字营销中,搜索引擎优化(SEO)被广泛视为提升网站流量的核心策略之一,而其中长尾关键词的运用显得尤为重要。长尾关键词通常由三个或更多个词组成,具有更高的针对性和精确度,可以更好地满足…

【期权懂|个股期权中的备兑开仓策略是如何进行的?

期权小懂每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 个股期权中的备兑开仓策略是如何进行的? 个股期权备兑开仓的优点和风险‌: ‌(1)优点‌:备兑开仓可以增强持股收益&…

汽车安全再进化 - SemiDrive X9HP 与环景影像系统 AVM 的系统整合

当今汽车工业正面临著前所未有的挑战与机遇,随著自动驾驶技术的迅速发展,汽车的安全性与性能需求日益提高。在这样的背景下,汽车 AVM(Automotive Visual Monitoring)标准应运而生,成为促进汽车智能化和安全…

MongoDB聚合操作

管道的聚合 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。 MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。 表达式:处理输入文档并输出。表达式是无状态的,只能用…

向量数据库FAISS之五:原理(LSH、PQ、HNSW、IVF)

1.Locality Sensitive Hashing (LSH) 使用 Shingling MinHashing 进行查找 左侧是字典,右侧是 LSH。目的是把足够相似的索引放在同一个桶内。 LSH 有很多的版本,很灵活,这里先介绍第一个版本,也是原始版本 Shingling one-hot …

https(day30)

1.配置需要配置端口为443 2.配置需要配置证书 ssl_certificate /path/to/your/fullchain.pem; # 证书文件 ssl_certificate_key /path/to/your/private.key; # 私钥文件 3.其他优化

【WPF】Prism学习(七)

Prism Dependency Injection 1.注册类型(Registering Types) 1.1. Prism中的服务生命周期: Transient(瞬态):每次请求服务或类型时,都会获得一个新的实例。Singleton(单例&#xf…

服务器数据恢复—热备盘未激活导致硬盘掉线的raid5阵列崩溃的数据恢复案例

服务器数据恢复环境: 某品牌X3850服务器中有一组由数块SAS硬盘组建的RAID5阵列,该阵列中有一块盘是热备盘。操作系统为linux redhat,上面跑着一个基于oracle数据库的oa。 服务器故障: 服务器raid5阵列中有一块硬盘离线&#xff0…

ADS 2022软件下载与安装教程

“ 本文以最新的Advanced Design System 2022为例介绍ADS软件的安装及crack教程 ” ADS 简介 先进设计系统 Advanced Design system(ADS)Agilent Technologies 是领先的电子设计自动化软件,适用于射频、微波和信号完整性应用。ADS 是获得商…

Chrome 浏览器 131 版本新特性

Chrome 浏览器 131 版本新特性 一、Chrome 浏览器 131 版本更新 1. 在 iOS 上使用 Google Lens 搜索 自 Chrome 126 版本以来,用户可以通过 Google Lens 搜索屏幕上看到的任何图片或文字。 要使用此功能,请访问网站,并点击聚焦时出现在地…

Unity 编辑器下 Android 平台 Addressable 加载模型粉红色,类似材质丢失

Unity 编辑器下 Android 平台 Addressable 加载模型粉红色,类似材质丢失 Addressable Play Mode Script加载模式 选择 Use Existiing Build 1.Unity 切换到 PC 平台,执行 Addressable Build 运行,加载 bundle 内的预制体 显示正常 2.Unit…

独立站干货:WordPress主机推荐

WordPress作为全球最受欢迎的独立站建设平台,提供了灵活性和强大的功能,使得建站变得简单而高效。本文将为您详细介绍WordPress建站的流程,并推荐几款实测后觉得好用的主机商。 WordPress建站流程 域名注册 首先需要注册一个域名&#xff0c…

每日OJ题_牛客_天使果冻_递推_C++_Java

目录 牛客_天使果冻_递推 题目解析 C代码 Java代码 牛客_天使果冻_递推 天使果冻 描述: 有 n 个果冻排成一排。第 i 个果冻的美味度是 ai。 天使非常喜欢吃果冻,但她想把最好吃的果冻留到最后收藏。天使想知道前 x个果冻中,美味…

C++AVL平衡树

1.AVL平衡树节点定义 每一个节点都配左右孩子和父节点&#xff0c;以及平衡因子和其所对应的值。 template<class K, class V> struct AVLTreeNode {// 需要parent指针&#xff0c;后续更新平衡因子可以看到pair<K, V> _kv;AVLTreeNode<K, V>* _left;AVLTr…

Vue3 pinia使用

Pinia 是一个现代的状态管理库&#xff0c;专为 Vue 3 设计。它提供了一种简单、直观的方式来管理应用中的全局状态 (就是不同组件都希望去共享的一些变量,函数等)。Pinia 的设计灵感来自于 Vuex&#xff08;Vue 2 的状态管理库&#xff09;&#xff0c;但进行了许多改进&#…

PHP开发全新UI多语言多商户跨境商城源码、支持一键铺货、一键下单

商家可在平台产品库选品&#xff0c;一键铺货到自己商店&#xff0c;用户下单后&#xff0c;商家提交订单给平台&#xff0c;扣除商家供货价所需余额&#xff0c;提交后由平台发货&#xff0c;收货后订单金额结算给商家. 源码开源完整&#xff0c;一切能跑通的逻辑流程都可以二…