前面学习了PE的结构后,尝试结合先前所学,修改PE文件来实现给程序添加弹窗的功能
PS:这篇笔记并没有怎么涉及PE的知识点,重点放在了HOOK、反汇编和硬编码上,对PE不是很了解也可以看看,涉及PE知识点的内容放在了后面的笔记:PE学习笔记九 实战之HOOK程序添加弹窗续,可以放心食用( ̄︶ ̄)↗
PE实战之给程序添加弹窗
修改流程
要给程序添加弹窗,首先就是要了解其修改的流程
首先要修改的便是程序原本的入口地址,将其修改为弹窗代码所在的地址
弹窗代码所在的地址,要在PE文件中找到一片区域,该区域需要 满足 可执行、可读、可写的权限,然后在这片区域写入弹窗代码,弹窗代码的最后要跳转回原本的入口地址
该修改流程是一种十分经典的HOOK思想,即程序按照原本的流程执行着,你把它原本执行的代码修改了,修改去干我们想要做的事情,做完我们想要的事情后再把它放回去继续执行原本的代码
图解HOOK修改流程

被HOOK的地方为B
正常流程 A→B→C
HOOK流程 A→被HOOK的B→自己的代码→复原B中被修改的部分→跳转回B原本要接着执行的地方→C
图解给程序添加弹窗

弹窗代码
既然要给程序添加弹窗,自然需要知道如何通过代码显示一个简单的弹窗
下面给出一个简单的弹窗代码
#include <Windows.h>
int main() {
//调用MessageBoxA函数
//显示一个 没有所有者窗口的、内容为lyl610abc的、标题为tips的、只包含一个按钮:OK的 窗口
MessageBoxA(0, "lyl610abc", "tips", 0);
return 0;
}
运行结果

MessageBoxA
下面为介绍MessageBoxA的使用文档,熟悉MessageBoxA的可以跳过,直接跳到后面的查看反汇编即可
函数原型
int MessageBoxA(
HWND hWnd,
LPCSTR lpText,
LPCSTR lpCaption,
UINT uType
);
参数

uType
对话框的内容和行为。该参数可以是下列标志组中的标志的组合
要指示消息框中显示的按钮,请指定以下值之一:

要在消息框中显示图标,请指定以下值之一:

要指定默认按钮,请指定以下值之一:

若要指示对话框的模式,请指定以下值之一:

要指定其他选项,请使用下列一个或多个值:

返回值
返回值类型:int
- 如果消息框有一个取消按钮,如果ESC键被按下或取消按钮被选中,该函数将返回IDCANCEL值。如果消息框没有取消按钮,按ESC将没有效果-除非MB_OK按钮存在。如果出现MB_

这篇博客介绍了如何通过HOOK技术给PE文件添加弹窗功能,详细讲解了修改流程、HOOK原理、使用MessageBoxA函数创建弹窗、查看和解析反汇编代码,以及如何将反汇编代码转换为硬编码字节码。通过OD模拟操作展示了如何在程序中实现弹窗并跳转回原本的执行流程。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



