查看: 11557|回复: 20
收起左侧

[分享] 火绒的gpu加速

  [复制链接]
B100D1E55
发表于 2025-8-30 07:16:18 | 显示全部楼层 |阅读模式
本帖最后由 B100D1E55 于 2025-8-30 07:16 编辑

火绒gpu加速我一直很感兴趣,毕竟它是目前市面上唯一一款支持gpu客户端加速扫描引擎的产品(tdt那种硬件厂家独占的东西不考虑)
火绒使用directx的compute shader派发gpu任务,通过gpu profiler可以dump出火绒gpu加速的一些具体细节。在某人的怂恿下我终于决心看一下蛋疼的汇编



去除掉loop unroll的内容发现加速核每个线程主要做了几件事情:
1. 一块代码负责把大写字符转成小写,猜测用于大小写不敏感匹配的预处理
2. 初始读入4byte,然后从每个byte作为起始点查表寻找初始状态
3. 得到初始状态后通过一个看着像哈希表的buffer查找哈希参数。之所以认为是哈希表是因为几条汇编实现了((A*b)mod p)mod n这样的操作,很像carter-wegman哈希函数
4. 读取下一个输入byte,通过base地址+哈希值索引最后一个表,这个表内容有两个:一个是字符,和刚读入的byte进行匹配,匹配成功则使用包含状态地址再次索引第三步的哈希表。如果状态地址是-1则结束匹配
5. 匹配线程最终将匹配条目+偏移写回显存

虽然不是100%确定,这块应该是实现了一个类AC自动机用于多特征匹配。AC自动机允许每个输入字符在合理的时间复杂度和内存开销下进行状态迁移+特征匹配输出,因此很多特征引擎会使用此算法。火绒这里的实现更像一个简化的DFA匹配,因为它不包含fail traversal将每个字符控制在O(1)开销有效规避了线程发散,从而充分发掘gpu上的执行效率

猜测执行模式是:gpu加速病毒字典在输入数据流上的匹配,匹配结果传回cpu再通过一个验证逻辑使用偏移/命中特征对应到实际毒库条目中。gpu起到一个前期过滤作用,而cpu可以专注于仿真/解包/匹配验证。进一步来说,gpu的前期过滤作用使得它并不需要精确的匹配,例如可以只匹配特征串的前缀交由后续cpu进行验证来控制gpu特征库大小

特征匹配就算在今日依然有很大价值,其中一些步骤并行度高适合用gpu/simd硬件加速。火绒愿意做这个功能且不绑定特定硬件厂商还是很赞的





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 14魅力 +1 人气 +61 收起 理由
HEMM + 1
hipoxiaxxx + 6
天原 + 3 很给力!
Picca + 3
hackerblog + 3

查看全部评分

驭龙
发表于 2025-8-30 07:34:00 来自手机 | 显示全部楼层
你都好几年没怎么发帖了,我前两年才滚回来论坛玩,就没见过你发帖,还是很怀念以前你发的技术帖的

评分

参与人数 1人气 +3 收起 理由
B100D1E55 + 3 好久不见

查看全部评分

Jerry.Lin
发表于 2025-8-30 08:40:15 | 显示全部楼层
诶嘿

评分

参与人数 2人气 +6 收起 理由
QVM360 + 3 感谢支持,欢迎常来: )
B100D1E55 + 3 哦吼

查看全部评分

火绒工程师
发表于 2025-8-30 09:42:46 | 显示全部楼层
感谢您对火绒的支持~绒绒一定会再接再厉,不断完善我们的产品哒~

评分

参与人数 1人气 +2 收起 理由
B100D1E55 + 2 请继续给力

查看全部评分

B100D1E55
 楼主| 发表于 2025-8-30 10:35:44 | 显示全部楼层
驭龙 发表于 2025-8-30 07:34
你都好几年没怎么发帖了,我前两年才滚回来论坛玩,就没见过你发帖,还是很怀念以前你发的技术帖的

工作生活忙起来就慢慢没精力折腾了,这次也是被某个火粉再三安利就好奇折腾了一下
LastF1ame_
发表于 2025-8-30 10:50:19 | 显示全部楼层
哇,瞧我发现了谁,大佬出现了
ZSsafe
发表于 2025-8-30 12:57:55 | 显示全部楼层
前排支持一下
wangkaka
发表于 2025-8-30 16:48:21 | 显示全部楼层
哇,大佬好多好多年不见你了
驭龙
发表于 2025-8-30 19:50:44 | 显示全部楼层
B100D1E55 发表于 2025-8-30 10:35
工作生活忙起来就慢慢没精力折腾了,这次也是被某个火粉再三安利就好奇折腾了一下
当初火绒宣传支持TDT的vPRO平台技术,我换了vPRO设备以后,安装火绒,愣是没找到支持TDT的代码和函数,只有directx方式的GPU加速,我还以为我太菜,没看出火绒有TDT代码呢。

现在看来是真的从TDT改成directx方式了,不过火绒的GPU加速效果是真快不少,效果比MD的TDT好很多
pal家族
发表于 2025-8-30 20:16:05 | 显示全部楼层
冷血小黄鸭回归了
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2026-3-29 01:05 , Processed in 0.083966 second(s), 3 queries , Redis On.

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表