文章目录

  • OllyDbg窗口及快捷键
  • 步骤1:VS生成需逆向的文件
  • 步骤2:OllyDbg中打开该程序的exe文件,找到需修改的位置
  • 步骤3:修改
    • 修改1:修改指令
    • 修改2:修改字符串
    • 修改3:输出任意英文
  • 软件逆向工程原理与实践前三章课件

OllyDbg窗口及快捷键


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

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

#include "windows.h"
#include "tchar.h"
int _tmain(int argc, TCHAR* argv[]) {MessageBox(NULL,_T("Hello World!"), _T("www.xidian.edu.cn"), MB_OK);
}

保存后在Release文件夹里面点击.exe文件:

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

EP(EntryPoint,入口点)是Windows可执行文件(EXE、DLL、SYS等)的代码入口点,是执行应用程序时最先执行的代码的起始位置。
用OD调试XX.exe刚开始默认跳转的位置就是EP处。

汇编代码窗口可以查看汇编指令,地址等相关信息,即寻找操作。

数据窗口可以进行数据修改

执行的修改都是在main函数中,需要寻找到main函数的主体:

通过字符串查找

在汇编代码窗口点击右键,选择 查找->所有的参考文本字串搜索->所有被应用的字符串(针对不用版本)

在被引用的列表中选择“www.xidian.edu.cn”或者是“Hello World!”

双击字符串即可查找到这两个字符串的push操作。过程如下:


步骤3:修改

修改1:修改指令

可以做的第一个修改是对调界面上的“www.xidian.edu.cn”和“Hello world!”这两个字串的位置。

可以对这两个字符串压栈的PUSH指令,将两条指令的地址互换。

由图可知,汇编指令对应的十六进制机器码分别是F8201B01和0C211B01。

在最左列可以看到,两条指令的地址在011B002。

在数据区域执行所有的修改操作:

在数据区域快捷键Crtl+G,搜索地址011B002,找到该地址,选中需要修改的区域,如下紫色部分。

再按快捷键Ctrl+E进入修改。

在编辑窗口修改该数据,将其修改为0C211B01,点击确定即可。


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

最后选择被修改的区域,如下紫色部分,在数据区域右键->复制到可执行文件。在生成的文件中右键->保存文件即可。

修改2:修改字符串

将原来的“Helloworld”界面上的“Hello world!”字符串,更改为“Hello Student!”

利用步骤二中的方法可以找到该字符串的地址,同样在数据区域找到该位置,选择该区域。

当然,由于“Hello Student!”比“Hello world!”要长,因此需要选择稍微大一点的区域,由于该条语句后面都是00,所以多选择区域不会造成错误。

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

修改3:输出任意英文

题目来源:《软件逆向工程原理与实践》P11,1.6思考与练习

对以下C程序进行反汇编和逆向工程,得到能够在控制台上输出“一定长度的任意英文”的EXE程序。

#include"stdafx.h"
#include"stdio.h"
int main(int argc,char* argv[]){printf("Hello World\n");return 0;
}

下图中空白位置是自定义的一段英文。结果放到cmd窗口方便展示。

软件逆向工程原理与实践前三章课件

软件逆向工程原理与实践第1章软件逆向工程概述.pptx

软件逆向工程原理与实践第2章x86与x64体系结构.pptx

软件逆向工程原理与实践第3章ARM体系结构.pptx

逆向分析并修改Hello World程序《逆向工程核心原理》《软件逆向工程原理与实践》相关推荐

  1. Android逆向分析(一) - 反编译看看手Q口令红包的实现原理

    原文:http://blog.zhaiyifan.cn/2016/02/09/android-reverse-1/ 本系列文章是<Android软件安全与逆向分析>的实践笔记(一些工具的版 ...

  2. Android逆向分析(1) 反编译看看手Q口令红包的实现原理

    前言 本篇文章是作者MarkZhai的逆向分析系列的第一篇,已授权发布,并计划之后该系列的更新会第一时间发布在本公号上,敬请关注! 原文 本系列文章是<Android软件安全与逆向分析>的 ...

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

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

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

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

  5. 应用程序逆向分析 有道词典_逆向工程媒体应用程序(并使其中的所有故事免费)...

    应用程序逆向分析 有道词典 上周,我意识到距我在这里的最新帖子已经一年了. 我喜欢写故事,也喜欢阅读别人的故事,但前提是我认为这些故事足够有趣,而老实说这是一个很高的标准. 我最近一直在对Androi ...

  6. 【Windows 逆向】CheatEngine 工具 ( 汉化版 CE 工具推荐 | 编写简单 C++ 程序 | C++ 程序执行分析 | 使用 CE 修改上述 C++ 程序 )

    文章目录 一.汉化版 CE 工具推荐 二.编写简单 C++ 程序 三.C++ 程序执行分析 四.使用 CE 修改上述 C++ 程序 一.汉化版 CE 工具推荐 推荐一个汉化版的 CE 工具 : htt ...

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

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

  8. 二进制逆向工程师_利用Ghidra逆向分析Go二进制程序(下篇)

    (接上文) 动态分配字符串结构 在第一种情况下,字符串结构是在运行时创建的,为此,需要使用一系列汇编指令在字符串操作之前设置相应的结构.由于指令集的不同,不同的架构之间的结构也是不同的.让我们通过几个 ...

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

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

最新文章

  1. Redis——由分布式锁造成的重大事故
  2. python while if 区别_对python中for、if、while的区别与比较方法
  3. 玩转“网上邻居”之WINS解析(一)
  4. JavaScript中的数组操作
  5. 反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)......
  6. 运动基元_Java更快地对基元数组进行排序?
  7. [Vue warn]: Failed to mount component: template or render function not defined. (found in root insta
  8. vue js 和原生app调用回调方法问题
  9. 汉语中的通用量词:个,块
  10. postman测试JSON参数接口
  11. 最新Jrebel激活码,Jrebel激活激活服务,Jrebel激活码,Jrebel破解
  12. 苹果画画软件_想在iPad 上画画,推荐用这些软件
  13. 计算机已从异常关机中恢复,win7系统经常遇到“windows已从异常关机中恢复”的解决方法...
  14. python爬虫——爬取拉勾网一线与新一线城市职位信息
  15. 爬取笔趣阁《斗破苍穹》小说,只需改一下网址,笔趣阁所有小说任意下载
  16. 逻辑思维训练和推理思维训练
  17. (已解决)STM32报错Error: L6218E: Undefined symbol assert_param (referred from misc.o).
  18. 程序员专业常用英语词汇
  19. 管理客户信息并非易事
  20. 算法工程师的核心竞争力是什么?

热门文章

  1. FreeCAD 官方文档 —— 一、 概述
  2. openGL ES进阶教程(五)制作一个简单的VR播放器,播放全景视频
  3. MySQL数据库初体验
  4. 谷歌牵手265解密:双方将合作推广Adsence
  5. 利用卷积处理图片的实例(图像模糊,锐化...)
  6. 虚拟机中安装linux系统步骤
  7. java美颜算法_美颜算法之自动祛斑算法实现 | 案例分享
  8. React 全家桶入门教程 01
  9. 用户信息管理系统测试报告
  10. 计算机培训ppt教案,课件制作的教案