IDA反汇编EXE添加一个启动时的消息框
2021-06-12 19:57
991 查看
IDA反汇编EXE添加一个启动时的消息框
上一篇文章介绍了用
OD反汇编
EXE添加一个启动时的消息框,这篇文章也是实现同样的效果,这边主要的思路还是将其反汇编得到汇编代码后,然后手动修改他的逻辑首先跳转到弹框区域再跳转回来去执行原来的代码,相关的工具有
IDA,以及要修改的一个
xp系统自带的扫雷软件。本来想着用
OD做就可以了,然后同学告诉我
IDA功能更多一些,我了解了一下确实更加方便我完成需求,但是网络上关于
IDA相关的教程还是比较少,我也是折腾了好一阵子才完成了修改,而且我也觉得有必要记录一下对于
IDA的相关操作。
描述
首先准备好要用到的软件也就是
IDA和扫雷这个软件,特别建议使用
IDA Pro 7.5版本,在细节方面尤其是返回和前进也就是
Ctrl + Z和
Ctrl + 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 World到
HEX编码
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就直接输入就可以了。
此时我们需要为这个字符串起名字,光标定位到
01004A71点
N键,为其起一个名字,同样光标定位到
01004A80,同样点
N键为其起名,我为其分别起了个
title和
content。
然后我们再空几行,我们将鼠标定位到
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
相关文章推荐
- 反汇编EXE添加一个启动时的消息框
- 在VC中启动另外一个程序(.exe、...)方法
- 用vs建网站是添加一个网站启动的快捷方式
- Winodws Mobile中怎样做到定时启动一个EXE?
- 用Ollydbg给exe文件添加一个对话框初探(图)
- 从内存中加载并启动一个exe
- java之如何实现调用启动一个可执行文件,exe
- 如何在一个EXE文件中启动另一个EXE文件
- GNU C中嵌入汇编添加一个自定义uboot命令
- 无法直接启动带有“类库输出类型”的项目,若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项。
- 从内存中加载并启动一个exe
- Thinking in java 为前一个练习中的类添加一个重载的构造器,令其接受一个字符串作为参数,并在构造器中把你自己的消息和接收到的参数打印出来
- 给删除按钮添加一个确认消息框(从服务端)
- 一个程序里启动另一一个exe文件
- vs2008 c++中添加一个按钮需要添加消息处理函数
- 一个microsoft的.exe程序文件的启动过程
- 从内存中加载并启动一个exe
- 创建一个带默认构造方法(即无参构造)的类,在构造方法中打印一条消息"Hello Constructor";再为这个类添加一个重载构造方法,令其接收一个字符串参数,并在这个有参构造方法中把"Hello
- Adobe AIR启动一个exe执行文件的方法
- WinFrom 只启动一个exe,并且获得焦点