技术知识库-AnyShare Hook配置和使用方法

2018-10-16

     1.    本文档适应范围

本文档适用于AnyShare 3.5/AnyShare 5.0/AnyShare 6.0;

2.    问题现象

AnyShare客户端Hook导致其它第三方软件卡死或奔溃。

3.    解决方法

1)     首先判断和定位问题,通过启动和关闭AnyShare客户端服务的方式,可以初步判断和定位第三方软件异常是否因AnyShare客户端Hook引起。

2)     在AnyShare客户端安装目录下新建HookInfo.ini文件,如:

C:\Program Files\Eisoo AnyShare\ HookInfo.ini

3)     打开HookInfo.ini,添加Hook白名单,如:

[Exclude]
Path0=C:\test\
Process0=test.exe

4)     重启客户端服务

 

Hook介绍 

1.    注入与HOOK基础

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

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

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

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

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

 

2.    HOOK的配置内容

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

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

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

3.    配置项详细说明

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

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

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

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

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

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

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


在线咨询

立即咨询