Aardio - 远程APIHOOK拦截弹窗

为了写这个教程,自己写了个CrackMe。(总不能拿别人的软件写教程,那就侵权了^-^)

运行效果如下:

Aardio - 远程APIHOOK拦截弹窗_第1张图片

软件运行后,弹出广告网址和信息框。我们的目的就是去掉这两个东西。

一、分析:

1、弹出网址,因为用的默认浏览器,而不是ie,所以一般都是用ShellExecute函数。

2、信息框,一般是MessageBox函数,如果是自动关闭的,就是MessageBoxTimeout函数。

二、hook方式:

目前我觉得比较简单实用的有三种:

1、写dll,定义替代函数,然后用aardio进行注入+hook。

2、写dll,在dll里写hook代码,然后用aardio注入即可。

3、写dll,在dll里写hook代码,然后在exe里添加输入表。当然,这就跟aardio无关了,咱们就暂不考虑这种最简单的方式了。

三、第一种方式:

以第一种方式为例,演示如何用aardio进行外部api的hook。示例中的文件名结尾都为1。

1、写dll,定义替代函数。替代函数要与目标函数参数数量一致。以易语言为例,代码如下:

Aardio - 远程APIHOOK拦截弹窗_第2张图片

编译为 func1.dll

2、用aardio代码进行hook,hook时自动进行注入。代码如下:

import process.apiHook
//启动并暂停进程
var p=process.apiHook("\CrackMe.exe",,{suspended=true})
//安装hook,钩住ShellExecuteA函数,用自定义的函数代替
p.install("shell32.dll", "ShellExecuteA","\func1.dll", "myShellExecuteA")
//安装hook,钩住MessageBoxA函数,用自定义的函数代替
p.install("user32.dll", "MessageBoxA","\func1.dll", "myMessageBoxA")
//恢复进程
p.resume()

3、运行效果,不会再弹出广告网址和信息框:

Aardio - 远程APIHOOK拦截弹窗_第3张图片

四、第二种方式:

以第二种方式为例,演示如何用aardio进行外部api的hook。示例中的文件名结尾都为2。

1、写dll,在dll里写hook代码,这样灵活性巨大。

Aardio - 远程APIHOOK拦截弹窗_第4张图片

 编译为 func2.dll

2、然后用aardio注入即可。

import process.apiHook
// 启动并暂停目标进程
var p=process.apiHook("\CrackMe.exe",,{suspended=true})
// 注入dll
p.loadLibrary(..io.localpath("\func2.dll"))
// 恢复进程
p.resume()

3、运行效果:

Aardio - 远程APIHOOK拦截弹窗_第5张图片

五、其他:

1、因为aardio的hook没有把原函数地址记录到目标进程,所以自定义的函数无法继续访问真正的函数地址。可以通过与dll通讯告知dll原函数地址进行解决,当然,需要动手能力较强的去做。

2、直接在dll中进行hook,就避免了第1个问题。

六、相关资源下载:

https://wwd.lanzoup.com/i9VzYzqn9cf

你可能感兴趣的:(Aardio,hook,Windows,windows,hook,aardio)