利用OllyDbg进行源码级调试(Win32汇编语言)

Ollydbg使用指南 Ollydbg基本操作的汇总 阅读详情
OllyDbg是一款能够在Windows环境下的动态调试软件,与Softice不同的是,它运行在用户模式下,且结合了动态调试与静态分析的功能。
OllyDbg通常用于反汇编调试,但事实上,它也能进行源码级调试,这对众多程序员来说是个福音。
下面我就以Win32汇编语言为例,简单介绍一下OllyDbg的源码级调试方法。

=================================================================
先来看一段示例代码:

代码文件列表:
ODbgTest.Asm
ODbgTest.Inc
DlgProc/DlgProc.Asm
ODbgTest.Rc
主要代码如下:
-------------------
ODbgTest.Asm:
-------------------
.386
.model flat, stdcall
option casemap :none
include ODbgTest.inc
include DlgProc/DLgProc.asm
.code
start:
  invoke GetModuleHandle,NULL
  mov    hInstance,eax
  invoke InitCommonControls
  invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
  invoke ExitProcess,0
end start
-------------------
DlgProc/DlgProc.Asm
-------------------
.code
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
   mov eax,uMsg
   .if eax==WM_INITDIALOG
   .elseif eax==WM_COMMAND
      mov eax,wParam
      mov edx,eax
      shr edx,16
      and eax,0FFFFh
      .if edx==BN_CLICKED
         .if eax==IDC_BTN1
             invoke EndDialog,hWin,NULL
         .endif
      .endif
   .elseif eax==WM_CLOSE
      invoke EndDialog,hWin,0
   .else
      mov eax,FALSE
      ret
   .endif
   mov  eax,TRUE
  ret
DlgProc endp
---------------------------------------------------------------
下面的编译链接所用的选项比较重要,就是要添加调试信息供OllyDbg调试:
rc ODbgTest.Rc
ml /c /coff /Cp /Zi ODbgTest.Asm
link /SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV ODbgTest.obj ODbgTest.res
完成后,我们便可以得到可执行程序ODbgTest.exe。

================================================================================
接下来,我们用OllyDbg打开刚才得到的可执行程序ODbgTest.exe。
如一下就是OllyDbg中的一段反汇编代码(带调试符):
----------------------------------------------
0040101C >/> /55            push    ebp
0040101D  |.  8BEC          mov     ebp,esp
0040101F  |.  8B45 0C       mov     eax,[arg.uMsg]
00401022  |.  3D 10010000   cmp     eax,110                  ;  Switch (cases 10..111)
00401027  |.  75 02         jnz     short ODbgTest.0040102B
00401029  |.  EB 45         jmp     short ODbgTest.00401070  ;&nb
加密与解密 调试篇 动态调试技术 (一)-OllyDbg的使用 TraceMe的逆向 我们进行载入的时候 主要返回的是CPU窗口 是最主要的窗口 对应面板的C。 阅读详情

相关推荐

反汇编:OllyDBG/objdump分析

反汇编中的第四列:是强大的od反汇编工具为我们提供的注释功能,能看到一些windows api,或是一些可读的信息。反汇编中的第三列:是我们研读的目标了,它是我们需要学习型的汇编语言;ALT+F9:执行到用户代码,可以快速地从系统领空返回到程序领空。CTR+F9:执行到返回,会在第一个遇到的RET指令暂停。F2:在光标处设置断点,再按一次删除光标处的断点。F8:单步步过,遇到CALL等函数会跳过,不进入。反汇编中的第二列:是所谓的汇编语言中的操作码;反汇编中的第一列:是指令在内存中存放的地址;

zxf347085420的博客 985

ollydbg下载及安装通俗解释:新手也能轻松上手

手把手教你完成ollydbg下载及安装,步骤清晰易懂,适合零基础用户。无论你是逆向工程新手还是调试工具初学者,都能快速掌握ollydbg下载及安装的全过程,轻松开启调试之旅。

weixin_42376614的博客 585

【愚公系列】2023年06月 逆向分析之Ollydbg(基本介绍和使用)

Ollydbg是一个x86体系结构的反汇编器和调试器,它是一款非常受欢迎的调试工具,通常用于软件逆向工程和漏洞发现过程中。可以反汇编并调试x86二进制文件支持多种反汇编风格,如汇编、C、Pascal等支持多种调试功能,如单步执行、断点、内存查看和修改等可以在不影响原始代码的情况下修改程序内容,并重新运行程序打开Ollydbg并加载要调试的二进制文件设置断点,例如在特定的指令处停下来或在某个内存位置处停下来运行程序并观察断点何时触发在程序暂停时查看寄存器、堆栈、内存和其他相关信息。

愚公智库 5万+

OllyDbg反汇编软件深入学习指南

在当今信息化快速发展的时代,软件和应用程序的开发与维护已成为我们日常不可或缺的一部分。然而,伴随而来的是对软件质量的更高要求,特别是在安全性、稳定性和性能方面。为了深入理解软件的工作机制和识别潜在的缺陷,开发者和安全研究人员越来越多地转向逆向工程技术。OllyDbg是这个领域中一款广受欢迎且功能强大的调试工具,它为逆向工程师提供了一套全面的分析和调试环境。

weixin_32389853的博客 1814

JMeter 压测实战全教程

脚本结构:测试计划 → 线程组 → HTTP 请求 → 监听器运行方式:图形化调试,命令行生产压测核心指标:QPS、RT、错误率、CPU、GC。

weixin_48309090的博客 653

ACS驱动器直线电机回零程序与误差补偿Buffer实战解析

本文深入解析了ACS驱动器控制直线电机时,实现高精度回零与误差补偿的完整实战流程。核心在于利用驱动器的D-Buffer功能,将激光干涉仪测量的误差数据导入补偿数组,通过ERRORMAP1D指令进行映射,从而实时修正定位误差,显著提升设备重复定位精度。文章详细拆解了回零程序逻辑、补偿参数设置及关键调试避坑指南。

651

VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

[课程学习] VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

夏风喃喃的博客 1605

谷歌DreamFusion使用方法及实例详解

DreamFusion 是谷歌提出的基于文本生成3D模型的突破性技术,无需3D训练数据,通过2D扩散模型(如Imagen)与NeRF(神经辐射场)结合实现。以下为使用社区开源实现(如。)的详细步骤及实例。

主攻大数据 人工智能 物联网 安全 低空经济等方向。mtsc 、gtest特邀分享嘉宾 1043

时序数据库避坑指南:TDengine与IoTDB在车联网场景的7个关键对比

本文对比了时序数据库TDengine与IoTDB在车联网场景下的7个关键差异,包括数据模型设计、边缘-云端协同能力、车规级函数库、存储压缩算法等。通过真实案例和性能测试,帮助企业在新能源汽车大数据处理中选择合适的时序数据库,优化存储成本和实时告警性能。

rust6ferris的博客 454

Codex 的 AGENTS.md 到底怎么写?前端、后端两套实战模板,照抄就能用

文件名是大写AGENTS.md,放在项目根目录构建、测试、类型检查命令都是可直接复制执行的只写了 Agent 从代码里推断不出来的约定红线规则用了明确的否定句式(禁止/不要/Never)标注了自动生成目录和禁止修改的模块写清了交付要求(改动清单 + 验证命令 + 风险说明)没有任何密钥、密码、连接串整体一页能看完,核心要点 10 条以内每一条都能通过"删掉会不会更容易犯错"的测试一份短小精准的 AGENTS.md,比一份充斥模糊规则的长文件有用得多。

篮球界最会写bug的人;程序猿中打球最菜的人。 618

ABAP链接外围数据库SQL实战案例

这是一个ABAP 直接读取SQL数据库数据的实例,以此种方式可以将SAP与外围的系统做一些集成,比如生产,SAP本身生产这部分是弱项,管不了那么细,很多车间的数据都是在MES系统,如管理上需要则可以将MES的一些数据自动读取过来,结合SAP本身的业务数据,做一些分析是比较方便的。 1、首先在SAP里建立数据库链接:DBCO ,直接增加一条记录,填上数据库的相关信息:IP地址、数据库名、账号SA、密码这些。 2、开发程序,设置成自动运行的计划,固定时间自动读取SQL里的数据,保存到SAP自定义表.

heng0757的专栏 1512

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 探索NDIS HOOK新的实现方法(1)
下一篇: 跨站脚本攻击利用HTTP控件发送COOKIE
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值