OD反汇编EXE添加一个启动时的消息框
OD反汇编EXE添加一个启动时的消息框
最近有一个要修改PE
文件的需求,就先从EXE
文件下手吧,我也是初学一个小时而已,不过之前接触过一点汇编罢了,这篇文章算是个DEMO
,主要的思路是将其反汇编得到汇编代码后,然后手动修改他的逻辑首先跳转到弹框区域再跳转回来去执行原来的代码,相关的工具有ollydbg
,以及要修改的一个xp
系统自带的扫雷软件,还有参考的文章,都会在文末给出。
描述
首先准备好要用到的OD
工具也就是ollydbg
和扫雷这个软件。
使用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
。
到这基本就差不多了,思路就是从入口开始执行我们自己的代码,然后执行完了再跳转回去继续执行原来的代码。之后我们右击-编辑-复制所有修改到可执行文件。
右击-保存文件,选是,即可保存,注意这边还是要另存为一个文件名,用来和原来的有所区分。
保存过后,运行该文件即可看到效果。
Blog
https://blog.touchczy.top/#/
参考
http://www.downcc.com/soft/24420.html
https://www.xiazaiba.com/html/3979.html
https://www.52pojie.cn/thread-217068-1-1.html
OD反汇编EXE添加一个启动时的消息框相关推荐
- IDA反汇编EXE添加一个启动时的消息框
IDA反汇编EXE添加一个启动时的消息框 上一篇文章介绍了用OD反汇编EXE添加一个启动时的消息框,这篇文章也是实现同样的效果,这边主要的思路还是将其反汇编得到汇编代码后,然后手动修改他的逻辑首先跳转 ...
- [moka同学笔记转载]Yii 设置 flash消息 创建一个渐隐形式的消息框
来源:http://www.cnblogs.com/xp796/p/5481004.html Yii 设置 flash消息 创建一个渐隐形式的消息框 1 /*适用情况:比如提交一个表单,提交完成之后在 ...
- 获取滚动条所在页面位置。做一个类似TX的消息框
function getScroll() { //t.当前位置(滚动条)里浏览器顶部的高度 //l当前位置(滚动条)里浏览器左边的长度(0) //width当前浏览器的宽 //页面加起来的总高度(一般 ...
- 用Python做一个愚人节整蛊消息框
文章目录 messagebox 愚人节整蛊 消息框尺寸 Tkinter系列: GUI初步
- android 在同一activity切换layout,在 Android Studio 添加一个activity并实现跳转
Android Studio比较人性化,当你添加一个activity时,他会自动把相关信息写入AndroidManifest.xml文件中,同时添加activity的布局文件到资源res->la ...
- Android在ListView中嵌套一个GridView时只显示一行的原因及解决方法
在之前的编程里,我还没有遇到过要在一个ListView中嵌套一个GridView或是在一个GridView中嵌套一个ListView.所以今天事儿来了!我花了一将近3个小时,找到了为什么我在一个Lis ...
- kotlin List删除一个元素,添加一个元素
kotlin List移除一个元素,添加一个元素时没有 remove和add函数只有 -= 和 += 在kotlin ArrayList中才有remove和add函数 没有 -= 和 += kotli ...
- Ubuntu22.04应用程序启动时闪退
Ubuntu22.04启动应用程序时闪退,添加程序启动时参数解决 今天尝试在ubuntu安装QQ音乐,安装后启动时弹出一下就闪退了. 命令行启动程序,报错: FATAL:gpu_data_manage ...
- Windows电脑桌面云便签敬业签软件启动时显示弹窗提醒怎么设置
一.打开敬业签Windows电脑桌面云便签并登录账号,点击主界面左上方用户头像,或按下默认快捷键Alt+Z,也可以在云便签右上方找到"设置">"设置",进 ...
最新文章
- Cifar10与ResNet18实战、lenet5、resnet(学习笔记)
- 轻松掌握Ajax.net系列教程二:部署Ajax Control Toolkit
- 4014-基于邻接表的长度为k的简单路径的求解(C++,附思路)
- wordpress插件列表
- 深入理解Nginx 阅读笔记(一)
- 如果你学习C 请不要选择DevCpp
- java中valueof_JAVA中intValue()和ValueOf()什么意思,还有Value什么意思
- 阿朱访谈:程序员转型期职业选择,是继续做技术高手还...
- 基于ResNetRS的宝可梦图像识别
- 酷桌面:IPAD上体验office的炫“酷”移动办公应用
- JS盒子点击时跟随鼠标移动
- 服务器上tomcat修改内存,8g服务器tomcat内存设置
- 如何用UE4制作2D游戏文档(二)——资源篇
- pythonurllib登录微博什么意思_登录微博详解-爬虫的第一站
- Tomcat的下载、安装和使用(超详细讲解)
- [苹果技巧]如何快速删除 Finder 工具栏上的图标?
- django的admin速度慢优化:date_hierarchy、list_filter
- 【Wallpaper挂时长】在后台也能增加游戏时长
- C++查缺补漏之异常(续)
- 谁动了你的五元组-nf_conntrack与NAT的性能