HOOK配置,使用方法
  TPuMqpEEfx4n 2023年11月02日 36 0

注入与HOOK基础

我们程序要实现一些功能,比如触发下载,复制移动文件监控,这些都需要进行注入与hook。

以触发下载为例子,我们双击一个文件的时候,一般是系统去启动一个进程,并且启动这个进程的时候带着需要打开的文件。

那么我们就需要在系统”启动进程“这个动作之前做”下载文件“的操作,这个时候就需要拦截住系统的操作,等待我们下载文件完成了,再继续进行系统操作,这个过程就是HOOK了。

由于”启动进程“这个动作是系统实现的,要拦截操作,并运行我们的下载,我们就需要将我们的部分代码注入到系统进程里。

总的来说,注入是实现HOOK的前提,注入是mm,HOOK是mm里的士兵。

HOOK的配置内容

总则,配置文件是一个ini文件,总体遵循ini文件格式。

在配置相中以Path开头的是路径相关配置,就是说,此配置路径下的所有进程都会适配此配置,一般这样的配置是用来调查问题的。

以Process开头的就是进程相关配置了,只适用对应的进程,可以用于调查问题和解决问题。

配置项详细说明

Global段:

用来配置注入方式的,只有一个配置键Mode,Mode可以设置值0和1,其中0为默认值。

值0最大化注入,会注入所有能注入的进程,此时Exclude段生效。

值1最小化注入,只会注入必须注入的进程,此时Include段生效。目前是4个固定的hook,分别为tray.exe,explorer.exe,vchost.exe,dllhost.exe,以保证最低的程序运行。

一般情况下都是0值进行的,因为我们不知道客户需要使用哪些进程来触发下载。

如果出现大面积进程卡死,可以考虑设置为1,某些情况下,也可以设置为1验证,是不是我们的HOOK导致的问题,

[Global]

Mode=0

Exclude段:

用来配置无需注入的名单,就是我们所谓的白名单,只有在lobal段Mode=0的时候才生效。

以Path开头的键,为配置某个目录下所有的进程不进行注入操作,第一个为Path0,如需配置多个后缀数字依次递增,值为具体目录全路径。

以Process开头的键,为配置某个进程不进行注入操作,第一个为Process0,如需配置多个后缀数字依次递增,值为具体进程名称,需要带exe后缀名。

一般我们用无需注入来解决一些冲突问题,比如安装了客户端后,导致某些软件卡死,无法启动,都可以加进不注入名单试试。

[Exclude]

Path0=C:\test\

Process0=test.exe

Include段:

用来配置需要注入的名单,就是我们所谓的黑名单,只有在lobal段Mode=1的时候才生效。

以Path开头的键,为配置某个目录下所有的进程进行注入操作,第一个为Path0,如需配置多个后缀数字依次递增,值为具体目录全路径。

以Process开头的键,为配置某个进程进行注入操作,第一个为Process0,如需配置多个后缀数字依次递增,值为具体进程名称,需要带exe后缀名。

这个段有几个固定的进程配置,目前是4个,分别为tray.exe,explorer.exe,vchost.exe,dllhost.exe。

[Include]

Path0=C:\test\

Process0=test.exe

Delay段:

用来配置延迟注入名单。

Path,PathMode,PathCondtion联合使用,配置某个路径下所有进程的延迟注入,后缀从0开始依次递增。

键Path的值是需要延迟注入的目录全路径。

键PathMode的值是需要延迟注入的目录的延迟方式,值1是固定窗口等待,值2是固定时间等待

键PathCondtion的值是需要延迟注入的目录的延迟条件,在PathMode=1时,写入等待窗口的ClassName,在PathMode=2时,写入等待时间,以毫秒为单位。

Process,ProcessMode,ProcessCondtion联合使用,配置某个进程的延迟注入,后缀从0开始依次递增。

键Process的值为具体进程名称,需要带exe后缀名。

键ProcessMode与ProcessCondtion用法个PathMode与PathCondtion一样。

延迟注入一般适用某些程序由于我们的原因卡死或者启动崩溃,但是又必须进行注入的情况。

一般使用固定时间等待来进行设置。

[Delay]

Path0=C:\test\

PathMode0=2

PathCondtion0=1000

Process0=MindCAD2D.exe

ProcessMode0=1

ProcessCondtion0=AlphaSplashScreen

Limit段:

用来配置条件HOOK,已经深入到具体HOOK的函数了。

Path,PathFun联合使用,配置某个路径下所有进程的条件HOOK,后缀从0开始依次递增。

键Path的值是需要条件HOOK的目录全路径。

键PathFun的值是需要条件HOOK的目录的函数,有多个函数时,以|隔开。

Process,ProcessFun联合使用,配置某个进程的条件HOOK,后缀从0开始依次递增。

键Process的值是需要条件HOOK的进程名称,需要带exe后缀名

键ProcessFun的值是需要条件HOOK的进程的函数,有多个函数时,以竖线"|"隔开。

一般是我们某些进程必须注入,但是延迟注入还是没有效果的时候使用,这个需要程序员来进行操作了。

[Limit]

Path0=C:\test\

PathFun0=NtCreateFile|CreateProcess

Process0=test.exe

ProcessFun0=NtCreateFile|CreateProcess

Relevancy段:

关联下载文件配置名单。

Process,ProcessSuffix联合使用,配置某个进程的关联下载文件,后缀从0开始依次递增。

键Process的值是需要关联下的进程名称,需要带exe后缀名

键ProcessSuffix的值是关联下载文件的后缀名,有多个后缀名时,以英文逗号","隔开。

使用某些进程,打开以文件的时候需要用到另外一个文件的内容。

[Relevancy]

Process0=test.exe

ProcessSuffix0=doc,txt

利用HOOK配置来排查问题以及解决问题的简单方法

更改HOOK配置,大部分是用来解决由于我们的软件导致其他软件卡死崩溃的情况。

我们的HOOK生效的前提是,服务”AnyShare Service“必须启动。

所以在出现其他进程卡死崩溃的情况下,只需要停止一下服务,看看问题是不是复现,可以判断是不是HOOK导致的。如果需要重启验证可以暂时将服务启动类型改为”手动“。

如果确认是由HOOK引起的,首先就设置为最小化HOOK进行验证。

如果最小化HOOK后,发现问题不出现了,那么可以恢复为最大化HOOK,并将出现问题的进程加入到Exclude中。如果问题还是出现,那么只能交由程序员进行处理了。

HOOK配置,使用方法_hook

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  TPuMqpEEfx4n   2023年11月02日   36   0   0 hook