易语言api hook ShellExecuteA 执行程序

ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制,和CreateProcessA比起来没有太复杂,可以简单理解为易语言里的执行。

ShellExecuteA

.版本 2

.DLL命令 ShellExecuteA, 整数型, "shell32.dll", "ShellExecuteA", , 查找与指定文件关联在一起的程序的文件名,并执行相关操作,成功则返一个大于31的值。
.参数 hwnd, 整数型, , 用来指定被执行文件显示的窗口所属的父窗口句柄,可以为NULL
.参数 lpOperation, 文本型, , 指向一个表示执行方式的字符串
.参数 lpFile, 文本型, , 用来指定文件名,文件名既可以是可执行文件也可以是数据文件,或可执行文件.
.参数 lpParameters, 文本型, , 当lpFile参数指定了一个可执行文件(open),本参数用来指定命令行参数.如果lpFile参数指定是数据文件或其它,那么本参数必须是NULL
.参数 lpDirectoy, 文本型, , 执行或打开文件时使用的默认目录,如果lpFile同时指定了文件名(夹)的目录,此参数无效.
.参数 nShowCmd, 整数型, , 如果函数执行了一个可执行文件,这个参数是指定窗口的打开方式,这个参数定义同ShowWindow函数中的dwCmdShow参数

运行系统notepad.exe

ShellExecuteA (0, “open”, “notepad.exe”, “”, 取运行目录 (), 1)

hook ShellExecuteA

.版本 2
 
h.安装Hook (“shell32.dll”, “ShellExecuteA”, 到整数 (&MySE))
h.开始Hook ()

钩子回调

hook后就不会执行记事本了notepad.exe,而是我们自定义的一个测试.exe

.版本 2
 
.子程序 MySE
.参数 hwnd, 整数型
.参数 lpOperation, 文本型
.参数 lpFile, 文本型
.参数 lpParameters, 文本型
.参数 lpDirectoy, 文本型
.参数 nShowCmd, 整数型
 
信息框 (“ShellExecuteA已经被我劫持!!!”, 0, , )
h.停止Hook ()
运行 (取运行目录 () + “\测试.exe”, 假, )
h.开始Hook ()

注入钩子DLL

同一我们依然可以把钩子写出一个DLL,通过注入来实现,本课视频采用了EIP注入和远程线程注入来演示,下面是DLL源码

.版本 2
 
.子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码
 
hook ()
_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 返回值被忽略。
 
.子程序 _临时子程序
 
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
.子程序 hook, , 公开
 
h.安装Hook (“shell32.dll”, “ShellExecuteA”, 到整数 (&MySE))
h.开始Hook ()
 
.子程序 MySE
.参数 hwnd, 整数型
.参数 lpOperation, 文本型
.参数 lpFile, 文本型
.参数 lpParameters, 文本型
.参数 lpDirectoy, 文本型
.参数 nShowCmd, 整数型
 
信息框 (“ShellExecuteA已经被我劫持!!!”, 0, , )
h.停止Hook ()
运行 (取运行目录 () + “\测试.exe”, 假, )
h.开始Hook ()

 

源码下载:http://www.511yj.com/eyuyan-dll-hookzr.html

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

511遇见

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值