反汇编EXE添加一个启动时的消息框

最近有一个要修改PE文件的需求,就先从EXE文件下手吧,我也是初学一个小时而已,不过之前接触过一点汇编罢了,这篇文章算是个DEMO,主要的思路是将其反汇编得到汇编代码后,然后手动修改他的逻辑首先跳转到弹框区域再跳转回来去执行原来的代码,相关的工具有ollydbg,以及要修改的一个xp系统自带的扫雷软件,还有参考的文章,都会在文末给出。

描述

首先准备好要用到的OD工具和扫雷这个软件。

使用OD将扫雷导入之后,自动定位到了入口点。

之后选择前2行将其Ctrl + C复制,主要是为了空出来足够的位置让我们完成指令的修改。

然后返回到OD,我们需要找到HEX数据是00的地方,通常也就是尾部位置存在的空白位置,注意我们是不能直接插入一些指令的,只能跳过去执行了我们想要的代码之后再跳回来执行原代码,我们可以使用右击-查找-二进制字符串,多输入几个0点击搜索即可,因为在扫雷中前边也有一堆00数据段,我们可以使用Ctrl + L,不断搜索下一个。

我们定位到尾部的00位置后,我们多选择一些行,选中几十行,右击-编辑-使用00填充。

现在我们随便空几行,我是在01004A65这个地址开始修改,可以直接Ctrl + G,定位到这个位置。

我们选定这个位置后,开始打一个空格,尝试修改一下汇编代码,填入PUSH 0

之后我们再占用一下位置,填写一下如下的代码,这个01004AB5是我随意写的,只是为了占一个位置。

接着我们需要找到弹窗的地址,右击-查找-名称,在弹出的窗口点一下名称,让他排一下序,我们找到&USER32.MessageBoxW,之后右击-复制到剪贴板-地址。

之后我们定位到01004A73这个位置,填入CALL DWORD PTR DS:[010010B8],在DS:[010010B8]中的地址就是刚才复制的地址。

这样弹出消息框的部分就完成了,四个push加一个call就是弹消息框的,中间的两个push第一个就是传标题第二个就是传内容的,现在我们依旧再写两行语句进行占位,这主要是为了后边启动逻辑方面用,也就是为了最初的时候我们复制的启动时定位的那两行使用。

之后我们再空出来几行代码,在01004A91地址上右击-编辑-二进制编辑。

UNICODE区域填入Title,然后保存。

同样空几行位置,在01004AE3添加一个Hello World

之后我们回到01004A67,在此处开始添加汇编,双击或者按空格都可以,在01004A67位置修改为PUSH 01004A91,之后接着修改,在下一个位置也就是01004A6C修改为PUSH 01004A9F,也就是将刚才两个添加的字符串放置于此处引用。

紧接着我们修改启动的逻辑,点击右边的EIP定位到入口位置。



在最初的时候我们选择了前2行位置的代码进行了复制,现在我们同样选中前2行,然后右击-编辑-用NOP填充。

然后在第一个位置也就是01004A65,填入JMP 01004A65,也就是我们刚才找到的编辑过的00段的第一个位置。

然后我们再回到01004A65,从01004A79开始按照顺序将原来的2行汇编填充进去,就是在最初的时候我们复制到记事本的代码,出现了多个nop的话我们就对于要编辑的从01004A79开始重新右击-编辑-用00填充,然后再接着填写,注意最后我们还有一个jmp跳回的操作,也就是在上图的nop后的第一条语句地址即01003E28

到这基本就差不多了,思路就是从入口开始执行我们自己的代码,然后执行完了再跳转回去继续执行原来的代码。之后我们右击-编辑-复制所有修改到可执行文件。

右击-保存文件,选是,即可保存,注意这边还是要另存为一个文件名,用来和原来的有所区分。

保存过后,运行该文件即可看到效果。

参考

http://www.downcc.com/soft/24420.html
https://www.xiazaiba.com/html/3979.html
https://www.52pojie.cn/thread-217068-1-1.html

反汇编EXE添加一个启动时的消息框的更多相关文章

  1. IDA反汇编EXE添加一个启动时的消息框

    IDA反汇编EXE添加一个启动时的消息框 上一篇文章介绍了用OD反汇编EXE添加一个启动时的消息框,这篇文章也是实现同样的效果,这边主要的思路还是将其反汇编得到汇编代码后,然后手动修改他的逻辑首先跳转 ...

  2. windows下,给golang编译的exe添加一个图标

    通过go build生成的exe文件,通常是一个默认的图标,发给别人的时候,总觉得像病毒,下面我们来给他加一个好看的图标,让他看起来正经一些. 1.找到一个喜欢的图片. 2.通过工具或是在线工具生成. ...

  3. Yii 设置 flash消息 创建一个渐隐形式的消息框

    /*适用情况:比如提交一个表单,提交完成之后在页面展示一条提示消息. 控制器里面这样写: 单条消息: */ \Yii::$app->getSession()->setFlash('erro ...

  4. Delphi 7中的四种消息框

    Delphi中平常使用的消息框有四种形式,有ShowMessage.MessageDlg.Application.MessageBox.MessageBox.下面来深入了解下这四种形式的实现和使用.1 ...

  5. 使用jQuery开发messager消息框插件

    1.插件使用 首先引入jquery库,然后引入dialog.js.dialog.css.messager.js.messager.css,如下: <script type="text/ ...

  6. (转)让一个进程启动时Windbg自动Attach上去

    如何让一个进程启动时Windbg自动Attach上去 以IE为例:需要在注册表中创建一项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current ...

  7. worker 启动时向 etcd 注册自己的信息,并设置一个带 TTL 的租约,每隔一段时间更新这个 TTL,如果该 worker 挂掉了,这个 TTL 就会 expire 并删除相应的 key。

    1.通过etcd中的选主机制,我们实现了服务的高可用.同时利用systemd对etcd本身进行了保活,只要etcd服务所在的机器没有宕机,进程就具备了容灾性. https://mp.weixin.qq ...

  8. Linux secure boot(安全启动)时添加Nvidia显卡驱动

    开启Secure boot情况下,在Fedora 21下安装Nvidia 显卡驱动的方法. Nvidia显卡驱动可以从官网上下载最新版>> 点击进入 下载后添加可执行权限: #chmod ...

  9. Tomcat启动时自动加载一个类

    有时候在开发Web应用的时候,需要tomcat启动后自动加载一个用户的类,执行一些初始化方法,如从数据库中加载业务字典到内存中,因此需要在tomcat启动时就自动加载一个类,或运行一个类的方法. 可以 ...

随机推荐

  1. 重新封装了一下NODE-MONGO 使其成为一个独立的服务.可以直接通过get/post来操作

    # 重新封装了一下NODE-MONGO 使其成为一个独立的服务.可以直接通过get/post来操作 # consts.js 配置用的数据,用于全局参数配置 # log.js 自己写的一个简单的存储本地 ...

  2. python主线程捕获子线程异常

    python内置threading.Thread类创建的子线程抛出的异常无法在主线程捕获,可以对该类进行优化,为子线程添加exit code属性,主线程通过获取子线程的返回状态,来判断子线程中是否发生 ...

  3. h5实现电子签名

    前端需要引入:jSignature.min.js ,jquery-1.9.1.min.js前端 部分写法:body内加 <div id="signature">< ...

  4. MySQL字段默认值设置详解

    前言: 在 MySQL 中,我们可以为表字段设置默认值,在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值.关于默认值,有些知识还是需要了解的,本篇文章我们一起来学习下字 ...

  5. 03.14 ICPC训练联盟周赛,Preliminaries for Benelux Algorithm Programming Contest 2019

    A .Architecture 题意:其实就是想让你找到两行数的最大值,然后比较是否相同,如果相同输出'possible',不同则输出'impossible' 思路:直接遍历寻找最大值,然后比较即可 ...

  6. Beta——发布声明

    Beta阶段 1. 新功能: 介绍页面 用户点击软件右上角的 ? 按钮即可看到软件的操作说明! 项目模式 目前软件支持三种模式 空白表单模式.该模式可以生成基于模板的表单数据,也支持生成数据直接训练模 ...

  7. Nifi:nifi的基本使用

    Nifi的安装使用 Nifi安装 首先说一下Nifi的安装,这里Nifi可以支持Windows版和Linux,只需要去官网:http://nifi.apache.org/ 根据自己需要的版本,选择下载 ...

  8. [bug] Openresty:content_by_lua_file 404

    参考 http://www.javaear.com/question/28087228.html https://github.com/openresty/openresty.org/issues/1 ...

  9. [c++] 文件包含

    当一个类用到另一个类时,有两种包含方式,在.h中包含和在.cpp中包含 用到公共类库时,在.h文件中包含(公共类库可视为不变的) 用到项目开发过程中自己或同事写的类时,在.cpp文件中包含(可能根据需 ...

  10. Pulsar 下一代消息平台

    引言 提起成熟的消息队列或消息引擎,毋庸置疑,大多数人的第一反应一定是 Kafka. Kafka 能够彻底满足海量数据场景下高吞吐.高并发需求,在短短几年内,已经被阿里.腾讯.百度.字节跳动.Netf ...