为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号

请选择:

请选择咨询类型

AnyShare
AnyBackUp
AnyRobot

扫码关注

爱数技术支持中心公众号

contact us

提交成功!

我们将在 24 小时之内联系你。

性能爆表
AnyShare
如何购买
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询

爱数博客

全部 AnyBackup AnyShare AnyRobot AnyDATA AnyFabric

深入解析AnyShare Family 7同步盘原理及配置

2023-06-25 2181 0

一、使用场景

  • 触发下载
  • 盘内外复制移动
  • 盘内云端复制移动

二、实现

双击一个文件的时候,一般是系统去启动一个进程,并且启动这个进程的时候带着需要打开的文件。那么当我们双击 ShareClient同步盘内一个云图标文件的时候,客户端是如何实现先下载文件后打开的呢?



显示流:
1、客户端在线时,双击云图标文件
2、等待一段时间
3、云图标文件状态变成对勾
4、等待一段时间,文件打开
隐示流:
1、在系统启动 Microsoft Word 之前,拦截住系统的该操作(注入)
2、向服务端发起下载该文件的请求(HOOK)
3、系统启动 Microsoft Word 打开文件

三、DLL 注入与 HOOK

什么是 DLL 注入技术?什么是 HOOK 挂钩技术?二者又是什么关系?


 
  1. AnyShare 向一个正在运行的系统进程注入 winhook.dll(winhook64.dll);
  2. AnyShare 通过设置 HOOK 对某个进程或窗口进行监视,即:对特定事件“挂钩”。一旦预定义特定事件发生-----双击文件,Windows 操作系统即会向钩子Hook发送通知消息;
  3. AnyShare 响应该消息-----下载文件,响应之后再将该消息返回到Windows 操作系统消息队列中。
  4.  Windows 操作系统就会继续处理该消息-----打开文件。
说明:HOOK 类似于一个强盗,一旦捕获到特定事件响应处理后,也可以自己吞掉该消息,不返回到消息队列中。

Winhook64.dll 注入到应用程序的机制
系统启动后通过注册的服务将 winhook64.dll 注入到系统服务中拦截系统服务创建应用程序的系统调用,
当系统服务启动应程序时 winhook64.dll 会启动 sharetool 将 windhook64.dll 注入到应用程序中。
下图简易的描述了注入过程


 

四、HOOK 的配置及使用方法

1. 提供两种模式:最大化注入,最小化注入,默认最大化注入
最大化注入:注入所有能注入的进程
最小化注入:只会注入必须注入的进程,此时 Include 段生效。目前是4个固定的 hook,分别为 tray.exe,explorer.exe,vchost.exe,dllhost.exe,以保证最低的程序运行
最大化注入,最小化注入可以配置

2.配置文件的内容
配置文件是一个 ini 文件---Hookinfo.ini,总体遵循ini文件格式,放在安装目录下,与 tray.exe 同级。



【path】在配置项中以 Path 开头的是路径相关配置,就是说,此配置路径下的所有进程都会适配此配置,  一般这样的配置是用来调查问题的。
【process】以 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】
用来配置无需注入的名单,就是我们所谓的白名单,只有在 Global 段 Mode=0 的时候才生效。
以 Path 开头的键,为配置某个目录下所有的进程不进行注入操作,第一个为 Path0,如需配置多个后缀数字依次递增,值为具体目录全路径。
以 Process 开头的键,为配置某个进程不进行注入操作,第一个为 Process0,如需配置多个后缀数字依次递增,值为具体进程名称,需要带 exe 后缀名。
一般我们用无需注入来解决一些冲突问题,比如安装了客户端后,导致某些软件卡死,无法启动,都可以加进不注入名单试试。
[Exclude] Path0=C:\test\ Process0=test.exe

【Include】
用来配置需要注入的名单,就是我们所谓的黑名单,只有在 Global 段 Mode=1 的时候才生效。
以 Path 开头的键,为配置某个目录下所有的进程进行注入操作,第一个为 Path0,如需配置多个后缀数字依次递增,值为具体目录全路径。
以 Process 开头的键,为配置某个进程进行注入操作,第一个为 Process0,如需配置多个后缀数字依次递增,值为具体进程名称,需要带 exe 后缀名。这个段有几个固定的进程配置,目前是4个,分别为 tray.exe,explorer.exe,vchost.exe,dllhost.exe。
[Include] Path0=C:\test\ Process0=test.exe

【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

【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

【Relevancy】
关联下载文件配置名单。
Process,ProcessSuffix 联合使用,配置某个进程的关联下载文件,后缀从0开始依次递增。
键 Process 的值是需要关联下的进程名称,需要带exe后缀名
键 ProcessSuffix 的值是关联下载文件的后缀名,有多个后缀名时,以英文逗号","隔开。
使用某些进程,打开以文件的时候需要用到另外一个文件的内容。
[Relevancy]
Process0=test.exe
ProcessSuffix0=doc,txt





 
 

请就本文对您的益处进行评级:

标签

产品技术

相关文章

热门标签

版本发布 在线教学
ai-assistant
chat
support
trial
需求助手 (内容由 AI 大模型生成,请仔细甄别)