PE系列学习笔记八 实战之HOOK程序添加弹窗

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

前面学习了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_
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大神论坛

喜欢作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值