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

article/2025/9/19 18:10:11

文章目录

  • 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


http://chatgpt.dhexx.cn/article/04I9r3B8.shtml

相关文章

js逆向案例-css字体反爬

目录 一、反爬点二、反爬分析1、js逆向解密响应参数2、css字体伪元素分析一、反爬点 案例网站响应参数js加密, css字体伪元素隐藏,以及style取值等逻辑判断 二、反爬分析 1、js逆

SQL 结构化查询语言

导读 MySql是我们常用的数据库,javaEE常用几款(Oracle,PostgreSQL,DB2或IBM),SQLite是用于嵌入式设备里的小型数据库,例如Android或IOS,而掌握SQL语句,就相当于掌握了所有的常见关系化数据库,需要同学们重点掌握以及经常复习 MySQL数据库服务器、数据库和表的关系 一般一个项…

《数据库系统》(三) 结构化查询语言

hello大家好,今天我们来学习结构化查询语言。教妹学数据库,没见过这么酷炫的标题吧?“语不惊人死不休”,没错,标题就是这么酷炫。 我的妹妹小埋18岁,校园中女神一般的存在,成绩优异体育万能,个性温柔正直善良。然而,只有我知道,众人眼中光芒万丈的小埋,在过去是一个…

mysql 结构化数据库_【MySQL】——MySQL数据库和SQL结构化查询语言概述

【MySQL】——MySQL数据库和SQL结构化查询语言概述 【MySQL】——MySQL数据库和SQL结构化查询语言概述 文章目录数据库和SQL语言【1】数据库概述 【2】SQL语言 【3】MySQL数据库 【4】启动/停止MySQL服务 【1】数据库概述 数据的传输:数据库 —> Web服务器 —>…

MySQL结构化查询语言

结构化查询语言sql包含以下四部分: 1.DDL //数据定义语言,create,drop,alter 2.DML //数据操作语言,insert,update,delete 3.DQL //数据查询语言,select 4.DCL //数据控制语言,grant,commit,rollback 以下就增删查…

结构化查询语言SQL基本功能及其概念

SQL语法 可以把SQL分为两部分数据操作语言DML和数据定义语言DDL。 SQL(结构化查询语言)有用于执行查询、更新、删除、插入记录的语法。 SQL的DML部分: select-从数据库表中获取数据。insert into-向数据库表中插入数据update-更新数据库表中…

Rasa中文聊天机器人开发指南(3):Core篇

文章目录 1. 对话管理1.1 多轮对话1.2 对话管理 2. Rasa Core2.1 Stories2.2 Domain2.3 Responses2.4 Actions2.5 Policies2.6 Slots2.6.1 Slots Type2.6.2 Slots Set2.6.3 Slots Get 2.7 Form2.8 Interactive Learning 3. 改进ChitChatAssistant项目3.1 config.yml3.2 weather…

Rasa开发使用 Rasa_NLU及Rasa_Core模型训练与测试

文章目录 Rasa术语 Rasa_NLU1. Pipeline2. 准备工作:训练MITIE模型文件3. rasa_nlu 语料4. 训练模型5. 测试验证 Rasa Core1. Stories可视化stories 2. Domain3. 训练对话模型测试对话模型 测试聊天机器人 Rasa Rasa是一个开源机器学习框架,用于构建上下…

浅读Rasa3.2.5源码(rasa train、rasa shell)

目录 浅读Rasa3.2.5源码(rasa train、rasa shell)一、 分析 __main__.py(1). 解析main.py的部分代码(2). rasa常用命令 二、 训练阶段(1). 准备训练数据(2). …

2.rasa架构

rasa架构 消息处理 此图显示了使用Rasa构建的助手如何响应消息的基本步骤: 这些步骤分别是: 1. 收到消息并将其传递给解释器(Interpreter),解释器将其转换为包含原始文本,意图和找到的任何实体的字典。这部分由NLU处理。 2. 跟踪…

Rasa -流程

Rasa入门笔记1 -流程 一、Rasa是什么二、Rasa工作流程 一、Rasa是什么 Rasa是一个nlp开源机器学习框架,用于构建问答与多轮对话机器人。 二、Rasa工作流程 Rasa分为两个模块NLU模块与Core模块,NLU 一>用于提取意图与实体,Core一>用于…

Rasa-X 部署

Rasa-X 部署(docker版) 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明,违反必究。 本文链接:https://blog.csdn.net/junxing2018_wu/article/details/106638599 说明: do…

Rasa系列教程(二) -- Rasa NLU基础

目录 前言 一、训练数据 1.1 意图字段(intent) 1.2 同义词字段(synonym) 1.3 查找表字段(lookup) 1.4 正则表达式字段(regex) 1.5 查找表和正则表达式的使用 二、组件 2.1 …

RASA框架介绍

关于RASA一个机器学习框架,用于构建基于文本和语音的聊天机器人。框架完整,可扩展性,易用性高,高效灵活。2.0新版本统一训练数据格式,配置文件和模型处理方式。 在最新版的rasa里已经集成了bert模型和xlnet&#xff0c…

rasa的使用

文章目录 rasa的使用一. 安装二. 创建一个简单的语音助手三、命令行四 rasa整体流程参考 rasa的使用 一. 安装 rasa有NLU和core两个模块,可以使用pip全部安装,默认是基于tensorflow2.1版本的 直接使用pip安装 # 创建一个python是3.6.8的环境 conda cr…

Rasa

Rasa NLU是一种开源自然语言处理工具,用于聊天机器人中的意图分类和实体提取;主要是理解用户意图,配合rasa_core使用可以实现AI对话。 参考文献 Rasa介绍 对话系统、产品与技术by清华 Rasa开发使用 Rasa_NLU及Rasa_Core模型训练与测试by冰蓝 …

Rasa使用指南02

转载请注明出处,原文地址 Rasa使用指南01 前言 最近工作很忙,重心也一直在模型方面,例如BERT、GPT-2等等,对于Rasa系列的博文实在是没有时间更新。最近有不停的收到一些小伙伴发来的信息,希望能看到Rasa使用指南02&…

rasa - http api测试

rasa - http api测试 rasa run --enable-api --cors "*" 仅解析意图 请求地址:localhost:5005/model/parse 命令行 curl -X POST localhost:5005/model/parse -d ‘{“text”: “hello”}’ 代码示例 import json import requestsurl "http://…

rasa 介绍文档

重磅推荐专栏: 《Transformers自然语言处理系列教程》 手把手带你深入实践Transformers,轻松构建属于自己的NLP智能应用! 1. Rasa介绍 1.1 架构 Rasa Open Source: NLU (理解语义) Core (决定对话中每一步执行的actions)Rasa SDK: Action …

Rasa 问答

开发一个智能对话系统用什么工具? Rasa是Conversational AI在智能业务对话领域工程落地全球最为成功对话机器人系统,是基于Transformer架构的全球使用最广泛的智能业务对话机器人框架,是NLP技术的集大成者。在当今全球范围各项对比指标综合成…