ollydbg逆向分析并修改helloworld程序

  • 素材来源
  • 实验内容
  • 步骤1:VS2017生成需逆向的文件
  • 步骤2:ollydbg中打开该程序的exe文件,找到需修改的位置
    • 方法一:通过字符串查找
    • 方法二:通过调用模块查找
  • 步骤3:修改
    • 修改一:修改指令
    • 修改2:修改字符串

素材来源

来自于书籍《软件逆向工程原理与实践》。第一章的1.5节逆向分析并修改Hello World程序。本文主要是对自己走一遍该流程的记录。

实验内容

使用Ollydbg修改汇编指令,修改字符串。

步骤1:VS2017生成需逆向的文件

visual studio2017新建工程文件,编译程序时选择visual studio的Release模式,减少调试信息。点击本地windows调试器进行编译运行。


运行结果如下图:

步骤2:ollydbg中打开该程序的exe文件,找到需修改的位置


汇编代码窗口可以查看汇编指令,地址等相关信息;我们接下来所做的寻找操作都是在汇编代码窗口完成;
数据窗口可以进行数据修改,我们接下来所做的修改操作都是在数据窗口完成。
执行的修改都是在main函数中,比起一个一个运行。有两种方法可以比较方便的寻找到main函数的主体。

方法一:通过字符串查找

在汇编代码窗口点击右键,选择查找->所有的参考文本字串(英文版中是Search for->All referenced text string)。在被引用的列表中选择“www.xidian.edu.cn”或者是“Hello World!”双击字符串即可查找到这两个字符串的push操作。过程如下::

方法二:通过调用模块查找

在汇编代码窗口点击右键,选择查找->所有模块间的调用(英文版是Search for->All intermodular calls),在模块间调用API列表查找MessageBoxA()或MessageBoxW(),双击就可快速查找到对该函数的调用,从而找到main()函数。最后是MessageBoxA()或MessageBoxW()取决于编程的时候选择的字符集是多字节字符集还是Unicode字符集。过程如下图所示:


步骤3:修改

修改一:修改指令

可以做的第一个修改是对调界面上的“www.xidian.edu.cn”和“Hello world!”这两个字串的位置。简单的作法是对这两个字符串压栈的PUSH指令,将两条指令的地址互换。由图可知,两条push指令的地址分别是F8201B01和0C211B01。

在最左列可以看到,两条指令的地址在011B002。所有的修改操作都在数据区域执行。
在数据区域快捷键Crtl+G,搜索地址011B002,可以找到该地址,选中需要修改的区域,如下紫色部分。

快捷键Ctrl+E进入修改。

在编辑窗口修改该数据,将其修改为0C211B01,点击确定即可。如下图可知,修改成功。

同样的步骤对后面的0C211B01进行修改,修改为F8201B01。完成两条指令的交换。修改后汇编代码窗口可以观察到两者的变化。如下图所示:

最后选择被修改的区域,如下紫色部分,在数据区域右键->复制到可执行文件(英文版是Copy to executable file -> All modifications)。在生成的文件中右键->保存文件即可。


完成后获得的新exe程序的运行如下,可知对调成功。

修改2:修改字符串

将原来的“Helloworld”界面上的“Hello world!”字符串,更改为“Hello Student!”,利用步骤二中的方法可以找到该字符串的地址,同样在数据区域找到该位置,选择该区域,当然,由于“Hello Student!”比“Hello world!”要长,因此需要选择稍微大一点的区域,由于该条语句后面都是00,所以多选择区域不会造成错误。Ctrl+E修改。

直接对ASCII进行操作即可改变汇编代码指令。确定保存。

同样选择被修改的区域,保存成新的.exe文件。执行效果如下,可知修改成功。

Ollydbg逆向分析并修改helloworld程序相关推荐

  1. 逆向分析并修改Hello World程序《逆向工程核心原理》《软件逆向工程原理与实践》

    文章目录 OllyDbg窗口及快捷键 步骤1:VS生成需逆向的文件 步骤2:OllyDbg中打开该程序的exe文件,找到需修改的位置 步骤3:修改 修改1:修改指令 修改2:修改字符串 修改3:输出任 ...

  2. [安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断

    前文作者讲解了OllyDbg和在线沙箱的逆向分析过程,分享了恶意软件如何通过宏脚本发送勒索信息或密码至用户邮箱.这篇文件将带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原,基础性文章,希 ...

  3. 第八章 Android 原生程序开发与逆向分析(五)(原生 C 程序逆向分析)

    文章目录 原生 C 程序逆向分析 编译原生 C 程序 for 循环分支结构 for1() for2() while 循环分支结构 dowhile() whiledo() if--else 分支结构 i ...

  4. HBBuilderProjest逆向分析与安全性扯淡

    最近公司让我整一个app逆向分析如何修改状态栏,结果发现应该不是原生工程,而是第三方app,后面经过比对资产目录文件,特征码mainfest.json ,百度搜了一下·dclould.io的产品,也知 ...

  5. asp.net webform 复制窗体代码_逆向分析流氓软件自我复制以及防御思路

    一.前言 好长时间没有投稿了,之前被发布的稿件,也收到了Freebuf的现金奖励,同时陆陆续续收到好多圈类人士的夸奖,备受鼓舞,觉得自己应该坚持投稿,为安全事业略尽绵薄之力!最近任务不重,正好有时间投 ...

  6. 2.逆向分析Hello World!程序-上

    先写一个HelloWorld程序(vs2015 / C++) 编译链接生成可执行文件XX.exe,然后用OD[OllyDbg]打开调试: 代码窗口:默认用于显示反汇编代码,还用于各种注释.标签,分析代 ...

  7. [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  9. IDA、X32dbg逆向分析易语言程序窗口标题、宽度、高度

    分析背景 源于对某软件的广告删除分析,发现其为易语言程序,特此写一篇关于易语言程序的分析思路,而此篇所讲述的为修改易语言编译后程序的标题.宽度和高度.(大佬勿喷,自己分析的思路记录) 环境准备 我们首 ...

  10. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )

    文章目录 一.使用 IDA 分析要修改的内存特征 二.根据内存特征搜索修改点 三.修改进程内存 一.使用 IDA 分析要修改的内存特征 在前的博客 [Android 逆向]逆向修改游戏应用 ( 分析应 ...

最新文章

  1. PLMN概念和应用设置
  2. 补8-5日复习内容 STL 标准模板库的容器
  3. Druid配置文件demo
  4. SAP Spartacus user-addresses.effect.ts里发送地址加载成功的action,会触发我们自己的reducer
  5. 当前目标 1614868689
  6. JavaScript循环及练习
  7. 微信H5页面嵌入百度地图---解决手机的webKit定位,ios系统对非https网站不提供支持问题
  8. POJ 3580 SuperMemo 伸展树
  9. JavaScript的eval()函数(1)
  10. ArcMap操作技巧
  11. android中在java代码中设置Button按钮的背景颜色
  12. excel使用mysql数据库查询语句_如何通过Excel查询MySQL数据库
  13. 富爸爸穷爸爸-读书笔记
  14. python求最大素数_python-最大素数
  15. 2021年中国石油市场回顾及2022年行业发展趋势分析预测:2021年石油需求震荡修复,石油对外依存度首次下降,预计2022年石油需求7.35亿吨[图]
  16. 【区块链开发】区块链技术的电商平台开发
  17. Ubantu16.04安装五笔拼音输入法
  18. python正则表达式提取字符串中的书名_使用python正则表达式从字符串中提取名称...
  19. 【找工作必读】来自IT公司速查手册的各大IT公司薪资
  20. 如何用AARRR模型拆解社群运营,实现用户的裂变增长

热门文章

  1. pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图以及相关系数矩阵图))...
  2. 飞信虚拟机支持数据库
  3. php把字体调大,phpDesigner 8调整字体大小的方法。
  4. qq连连看分析编写简单辅助
  5. 关于Win10系统的封装
  6. 查看MySQL数据库占用空间大小
  7. 从零搭建与好友“一起看王心凌《爱你》MV”功能
  8. android 混淆字符串,android 代码混淆
  9. 完美世界hr给大家的简历修改和面试的建议
  10. 《机关单位办公自动化应用指南 (基于国产信息技术应用创新终端)》