学习了OllyDbg工具动态调试的基础使用方法,并使用OllyDbg工具对一个简单的应用程序做了修改,主要是在空白位置新建两个字符串,并将函数中原有字符串的地址用新的字符串地址替换掉,从而达到修改程序的目的,难度较简单,主要学习工具的使用和逆向的基础原理。
一、逆向基本概念
(1)逆向工程
逆向工程是指通过分析物体、设备或系统掌握其内部结构、功能、行为等。代码逆向工程简称 RE或RCE,是一种研究应用程序内部组成结构和工作原理的技术,通过阅读反汇编后的代码,使用调试器分析软件行为等工作。逆向工程常常被用于恶意软件分析,软件破解等领域。
(2)逆向分析方法
-
静态分析方法
静态分析是指在不运行代码文件的情况下,对代码分析的一种方法。可以获得文件类型、大小、PE头信息,注册信息、调试信息、数字证书等信息。
-
动态分析方法、
动态分析是指程序的执行过程中对代码动态分析的一种方法。通过调试分析代码流、获得内存状态等。可以分析注册表、网络、软件程序的行为等。
逆向分析时可以先使用静态分析收集程序的有关信息,为动态分析提供参考信息,采用动静结合的分析方法,可以提高代码的分析效率,增加准确性,缩短分析的时间。
二、动态分析Hello word程序
(1)安装 Visual Studio 2019
开始 下载安装
安装完后启动 VS2019
(2)OllyDbg工具介绍
OllyDbg是功能强大的Win32动态调试工具,简洁直观,体积小,运行速度快支持拓展。
常用快捷键:
- 打开一个新的可执行程序 (F3)
- 设置/取消 断点 F2
- 运行到选定程序暂停 F4
- 重新运行当前调试的程序 (Ctrl+F2)
- 当前调试的程序 (Alt+F2)
- 运行选定的程序进行调试 (F9)
- 暂时停止被调试程序的执行 (F12)
- 单步进入被调试程序的 Call 中 (F7)
- 步过被调试程序的 Call (F8)
- 跟入被调试程序的 Call 中 (Ctrl+F11)
- 跟踪时跳过被调试程序的 Call (Ctrl+F12)
- 执行直到返回 (Ctrl+F9)
- 显示记录窗口 (Alt+L)
- 显示模块窗口 (Alt+E)
- 显示内存窗口 (Alt+M)
- 显示 CPU 窗口 (Alt+C)
- 显示补丁窗口 (Ctrl+P)
- 显示呼叫堆栈 (Alt+K)
- 显示断点窗口 (Alt+B)
- 打开调试选项窗口 (Alt+O)
(3)分析Hello word程序
使用VS2019 打开 HelloWord文件夹
调试
生成HelloWord.exe
使用OllyDbg调试 HelloWord.exe
点击运行按钮
程序运行,并弹出窗口,显示文本Hello word!
在OllyDbg窗口,右键搜索 UNICODE
搜索到了窗口标题 www.reversecore.com 和文本内容 Hello World!地址分别是 00401002,00401007
快捷键 Ctrl + G 输入地址跳转
如果在原地址上直接修改数据,有可能覆盖后面地址的数据造成数据损坏。这里我们直接在空地址新建一个字符串,用新字符串的地址替换原有地址,从而防止数据被破坏。
在空地址004070EF上,快捷键CTRL + E 编辑一个字符串
在空地址0040710B上,快捷键CTRL + E 编辑一个字符串
回到地址00401002,00401007,双击 修改push 后的值,改为刚才编辑字符串的地址
然后执行,试试结果
修改成功
这样修改只是临时的,直接保存为一个新的exe文件。
选中修改的地方,右键复制到可执行文件
右键在新窗口,保存文件
重命名biu.exe 保存
双击运行
修改成功。
三、总结
学习OllyDbg工具动态调试的基础使用方法,并使用OllyDbg工具对一个简单的应用程序做了修改,主要是在空白位置新建两个字符串,并将函数中原有字符串的地址用新的字符串地址替换掉,从而达到修改程序的目的,难度较简单,主要学习工具的使用和逆向的基础原理。
- 本文作者: 飞神剑
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/399
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!