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

上一篇文章介绍了用OD反汇编EXE添加一个启动时的消息框,这篇文章也是实现同样的效果,这边主要的思路还是将其反汇编得到汇编代码后,然后手动修改他的逻辑首先跳转到弹框区域再跳转回来去执行原来的代码,相关的工具有IDA,以及要修改的一个xp系统自带的扫雷软件。本来想着用OD做就可以了,然后同学告诉我IDA功能更多一些,我了解了一下确实更加方便我完成需求,但是网络上关于IDA相关的教程还是比较少,我也是折腾了好一阵子才完成了修改,而且我也觉得有必要记录一下对于IDA的相关操作。

描述

首先准备好要用到的软件也就是IDA和扫雷这个软件,特别建议使用IDA Pro 7.5版本,在细节方面尤其是返回和前进也就是Ctrl + ZCtrl + Y用起来很舒服,当然其他版本主要功能都是有的。

首先用IDA打开扫雷,一切以默认设置即可,然后进入就是代码的函数执行流程了。

此时按空格就能够切换到代码,按Ctrl + E进入入口点。

我们复制一下01003E23地址的push offset stru_1001390,找个地方存起来,后边会用得到。

然后我们将鼠标光标移动到01003E28也就是下一行,然后点击键盘n,为其起一个本地的名字loc_01003E28

我们转移到Hex View-1窗口,然后往下找到一块00的位置,都是在文件的末尾区域,我们右击有一个与IDA -ViewA同步的选项也要勾上,这样我们就可以在打开IDA代码窗口的区域同步到这块地址了。

我们要从01004A71开始写,我们可以按G键,进行跳转,要跳转到01004A71位置。

可以看到这个位置是被折叠的,我们选中后可以按D键将其展开,然后我们再次跳转到01004A71位置。

此时我们开始编写字符串,我们首先需要将字符串转成HEX,直接搜索HEX在线转换即可找到,我们将Title进行转换即可看到54 69 74 6C 65

我们选中好01004A71行后,点击edit - Patch program - Change byte

在这里我们输入刚才转换的HEX编码,注意MessageBoxW是使用两个字节的UTF-8编码的,不能直接使用一个字节的ASCII编码值,所以刚才我们编写的54 69 74 6C 65要写成54 00 69 00 74 00 6C 00 65 00,当然在Hex View1里直接右击修改也是可以的。

我们再空出来几行,在01004A80这边再写一个,我们转换Hello WorldHEX编码48 65 6c 6c 6f 20 57 6f 72 6c 64

我们自行加入00,这便成了48 00 65 00 6c 00 6c 00 6f 00 20 00 57 00 6f 00 72 00 6c 00 64,当然这边太长了,不够的位置我们需要重新输入,当然如果直接使用Hex View1就直接输入就可以了。


此时我们需要为这个字符串起名字,光标定位到01004A71N键,为其起一个名字,同样光标定位到01004A80,同样点N键为其起名,我为其分别起了个titlecontent

然后我们再空几行,我们将鼠标定位到01004A9A这个位置,然后点击edit - Patch program - Assemble,为其输入命令,我们按序输入以下的命令。

push 0
push title
push content
push 0
CALL DWORD PTR DS:[MessageBoxW]

还记得之前在一开始就复制的01003E23地址的push offset stru_1001390,我们在这里将代码复制下来push stru_1001390,注意没有offset,我们在这边继续追加这行,另外在最初我们还添加了一个本地的名字loc_01003E28,我们还需要追加一个jmp loc_01003E28

此时我们选中这块位置,按P键来创建函数。

我们选中这个sub_1004A9A,点击N键为这个函数重新起个名字message_box

我们按Ctrl + E跳转到入口点,我们选中01003E23这一行,我们修改这个汇编代码为jmp message_box

现在我们已经完成了操作,思路就是从入口开始执行我们自己的代码,然后执行完了再跳转回去继续执行原来的代码,现在我们将所做修改保存到源文件Edit - Patch program - Apply patches to input file,选择要注入的文件以及是否需要备份即可。

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

Blog

https://blog.touchczy.top/#/

参考

https://tool.lu/hexstr/
http://www.downcc.com/soft/24420.html
http://www.xz7.com/downinfo/347986.html

IDA反汇编EXE添加一个启动时的消息框相关推荐

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

    OD反汇编EXE添加一个启动时的消息框 最近有一个要修改PE文件的需求,就先从EXE文件下手吧,我也是初学一个小时而已,不过之前接触过一点汇编罢了,这篇文章算是个DEMO,主要的思路是将其反汇编得到汇 ...

  2. [moka同学笔记转载]Yii 设置 flash消息 创建一个渐隐形式的消息框

    来源:http://www.cnblogs.com/xp796/p/5481004.html Yii 设置 flash消息 创建一个渐隐形式的消息框 1 /*适用情况:比如提交一个表单,提交完成之后在 ...

  3. 获取滚动条所在页面位置。做一个类似TX的消息框

    function getScroll() { //t.当前位置(滚动条)里浏览器顶部的高度 //l当前位置(滚动条)里浏览器左边的长度(0) //width当前浏览器的宽 //页面加起来的总高度(一般 ...

  4. 用Python做一个愚人节整蛊消息框

    文章目录 messagebox 愚人节整蛊 消息框尺寸 Tkinter系列: GUI初步

  5. android 在同一activity切换layout,在 Android Studio 添加一个activity并实现跳转

    Android Studio比较人性化,当你添加一个activity时,他会自动把相关信息写入AndroidManifest.xml文件中,同时添加activity的布局文件到资源res->la ...

  6. Android在ListView中嵌套一个GridView时只显示一行的原因及解决方法

    在之前的编程里,我还没有遇到过要在一个ListView中嵌套一个GridView或是在一个GridView中嵌套一个ListView.所以今天事儿来了!我花了一将近3个小时,找到了为什么我在一个Lis ...

  7. kotlin List删除一个元素,添加一个元素

    kotlin List移除一个元素,添加一个元素时没有 remove和add函数只有 -= 和 += 在kotlin ArrayList中才有remove和add函数 没有 -= 和 += kotli ...

  8. Ubuntu22.04应用程序启动时闪退

    Ubuntu22.04启动应用程序时闪退,添加程序启动时参数解决 今天尝试在ubuntu安装QQ音乐,安装后启动时弹出一下就闪退了. 命令行启动程序,报错: FATAL:gpu_data_manage ...

  9. Windows电脑桌面云便签敬业签软件启动时显示弹窗提醒怎么设置

    一.打开敬业签Windows电脑桌面云便签并登录账号,点击主界面左上方用户头像,或按下默认快捷键Alt+Z,也可以在云便签右上方找到"设置">"设置",进 ...

最新文章

  1. angular.js 嵌套路由
  2. switch判断条件
  3. C# 事件详解附实例分析
  4. 【转】知道这20个正则表达式,能让你少写1,000行代码
  5. android 获取当前时间_js如何获取当前时间并显示
  6. Java 将文件的内容复制到另一个文件
  7. VBA 读写文本文件的几种方法
  8. mysql binlog 常用的命令
  9. NotImplementedError: Cannot convert a symbolic Tensor报错与解决
  10. eplan连接定义点不显示_显示无线桥接成功,但是连接副路由器的设备依然上不去网的问题...
  11. 服务器lsass占用内存_服务器内存跑满是什么原因造成的呢?
  12. Python爱心表白代码
  13. 采集企业联系方式的10个经典方法
  14. Quartus II 13.1入门级使用方法 -仿真篇,适用于小白
  15. Python实现自动录制虎牙直播
  16. 2018VMware虚拟机安装ghost win7系统正确方法
  17. NUGET源不存在,安装Nuget包提示“本地源不存在”
  18. ccf-20161203--权限查询
  19. vue使表头文字居中,表格某一列文字左对齐的方式
  20. tim拒绝远程连接服务器失败怎么办,腾讯tim怎么开启远程控制-腾讯tim开启远程控制的方法 - 河东软件园...

热门文章

  1. matlab 30案例 目录,MATLAB-智能算法30个案例分析-终极版(带目录).doc
  2. 关于Ribbon的几个问题
  3. mongoshake实现mongodb数据同步
  4. mybatis框架执行原理简单实现
  5. ls -l 显示年份
  6. 整理Java基础知识--NumberMath类
  7. Java新特性之Nashorn的实例详解
  8. 《Linux KVM虚拟化架构实战指南》——导读
  9. html5增强的页面元素
  10. [编程题]数独(JAVA)