尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Worm.WhBoy 专杀工具编写:基于3类文件感染特征的Python实现
Worm.WhBoy 专杀工具开发实战基于Python的感染特征检测与修复1. 病毒行为分析与专杀工具设计思路熊猫烧香病毒Worm.WhBoy作为2006年肆虐网络的典型蠕虫病毒其感染机制具有鲜明的特征。该病毒主要通过三种方式传播可执行文件感染在PE文件尾部追加病毒体并添加WhBoy标记Web文件篡改在HTML/ASP等文件尾部插入加密的iframe代码自动传播机制通过U盘autorun.inf和网络共享传播专杀工具核心功能设计应包含以下模块class WormWhBoyKiller: def __init__(self): self.exe_signatures [bWhBoy, bWHBOY] # 可执行文件感染标记 self.web_patterns [ # Web文件特征正则表达式 riframe.*?src.*?.*?, rdocument\.write\(unescape\( ] def scan_disk(self, path): # 磁盘扫描入口 pass def check_exe(self, filepath): # 检测可执行文件感染 pass def check_web(self, filepath): # 检测Web文件感染 pass def clean_exe(self, filepath): # 修复可执行文件 pass def clean_web(self, filepath): # 清理Web文件 pass2. 可执行文件感染检测与修复病毒对PE文件的感染会在文件尾部添加特定结构[病毒体][原始PE文件][WhBoy标记][原始文件名][0x2标记][原始文件大小][0x1标记]检测算法实现def check_exe(self, filepath): with open(filepath, rb) as f: data f.read() # 检查文件尾部标记 for sig in self.exe_signatures: pos data.rfind(sig) if pos ! -1: # 提取原始文件大小 size_pos pos len(sig) if len(data) size_pos 5: orig_size int.from_bytes( data[size_pos1:size_pos5], byteorderlittle ) return { infected: True, marker_pos: pos, original_size: orig_size } return {infected: False}修复流程关键步骤定位病毒标记位置提取原始文件大小信息截取原始PE文件内容重建文件头校验信息def clean_exe(self, filepath): result self.check_exe(filepath) if not result[infected]: return False with open(filepath, rb) as f: data f.read() # 截取原始文件内容 orig_data data[:result[original_size]] # 重建PE头校验 if orig_data.startswith(bMZ): pe_header_offset int.from_bytes(orig_data[0x3C:0x3C4], little) if pe_header_offset 0x200 len(orig_data): # 更新PE头中的SizeOfImage new_size self.calculate_pe_size(orig_data, pe_header_offset) orig_data self.update_pe_header(orig_data, pe_header_offset, new_size) # 写回修复后的文件 with open(filepath, wb) as f: f.write(orig_data) return True3. Web文件感染处理方案病毒对Web文件的感染特征表现为文件尾部添加加密的iframe代码可能包含document.write(unescape(等JavaScript解码语句通常指向恶意网站URL检测与清理实现def clean_web(self, filepath): with open(filepath, r, encodingutf-8, errorsignore) as f: content f.read() cleaned False # 处理iframe注入 for pattern in self.web_patterns: content, count re.subn(pattern, , content, flagsre.I) if count 0: cleaned True # 处理特定加密脚本 malicious_scripts [ var%20s%3Ddocument.createElement, eval(function(p,a,c,k,e,d) ] for script in malicious_scripts: if script in content: content content.replace(script, ) cleaned True if cleaned: with open(filepath, w, encodingutf-8) as f: f.write(content) return cleanedWeb文件修复注意事项不同编码格式的处理UTF-8/GBK多行恶意代码的识别保留原始文件的有效内容特殊字符的转义处理4. 完整专杀工具实现与测试整合各模块后的完整工具架构WormWhBoyKiller/ ├── core/ │ ├── scanner.py # 扫描引擎 │ ├── cleaner.py # 清理模块 │ └── utils.py # 辅助函数 ├── tests/ # 测试用例 │ ├── infected_exe/ │ └── infected_web/ └── main.py # 命令行入口命令行界面设计import argparse def main(): parser argparse.ArgumentParser( descriptionWorm.WhBoy专杀工具 v1.0, formatter_classargparse.RawTextHelpFormatter ) parser.add_argument(path, help要扫描的目录路径) parser.add_argument(-q, --quick, actionstore_true, help快速扫描模式) parser.add_argument(-l, --log, metavarFILE, help指定日志输出文件) args parser.parse_args() killer WormWhBoyKiller() result killer.scan_disk(args.path, quick_modeargs.quick) print(f扫描完成\n f- 已检查文件: {result[total_files]}\n f- 感染文件: {result[infected_files]}\n f- 成功修复: {result[cleaned_files]}) if args.log: with open(args.log, w) as f: json.dump(result, f, indent2) if __name__ __main__: main()测试验证方法准备已知感染样本运行专杀工具扫描验证文件是否被正确修复检查原始功能是否恢复# 测试命令示例 python main.py /test_samples --log scan_report.json性能优化技巧使用多线程加速文件扫描实现文件签名缓存避免重复检查针对大文件实现流式处理添加排除目录支持from concurrent.futures import ThreadPoolExecutor def parallel_scan(self, path, max_workers4): infected_files [] with ThreadPoolExecutor(max_workersmax_workers) as executor: for root, _, files in os.walk(path): for file in files: filepath os.path.join(root, file) future executor.submit(self.check_file, filepath) if future.result(): infected_files.append(filepath) return infected_files5. 防御增强与扩展功能主动防御措施实现注册表监控防止病毒自启动文件系统监控实时防护可疑进程检测机制def enable_protection(self): # 监控关键注册表项 reg_keys [ rSoftware\Microsoft\Windows\CurrentVersion\Run, rSoftware\Microsoft\Windows\CurrentVersion\RunOnce ] for key in reg_keys: self.monitor_registry(key) # 设置文件系统监控 from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class VirusHandler(FileSystemEventHandler): def on_modified(self, event): if not event.is_directory: self.check_file(event.src_path) observer Observer() observer.schedule(VirusHandler(), path/, recursiveTrue) observer.start()工具扩展方向支持更多变种病毒的检测添加云端特征库更新实现分布式扫描能力开发GUI管理界面最佳实践建议定期更新特征库扫描前创建系统还原点关键目录设置只读权限结合其他安全工具使用在实际部署中发现结合文件哈希校验可以显著提高检测准确率。对于重要系统文件建议维护一个已知安全版本的哈希数据库作为比对基准。
RELATED

相关推荐

Apollo EM Planner 速度规划对比:DP 粗搜索与 QP 优化的 3 个核心差异

Apollo EM Planner 速度规划对比:DP 粗搜索与 QP 优化的 3 个核心差异

Apollo EM Planner 速度规划对比:DP 粗搜索与 QP 优化的 3 个核心差异在自动驾驶系统的运动规划模块中,速度规划是确保车辆安全、舒适行驶的关键环节。Apollo EM Planner 作为工业级解决方案的代表,采用动态规划(DP)粗…

📅 2026/8/22 20:00:43
Mathpix Snip 2026版实测:5类复杂公式(手写/印刷/混合)识别准确率对比

Mathpix Snip 2026版实测:5类复杂公式(手写/印刷/混合)识别准确率对比

Mathpix Snip 2026版深度评测:五类复杂公式识别准确率实战分析科研工作者每天都要与大量数学公式打交道——从arXiv论文中的印刷体公式,到会议白板上的手写推导,再到混合了文本与符号的复杂表达式。传统手动输入LaTeX代码的方式效率低下&…

📅 2026/8/26 20:46:39
2026AI大模型零基础入门就业全攻略,程序员高薪进阶必备

2026AI大模型零基础入门就业全攻略,程序员高薪进阶必备

本文专为想入行AI、提升职业竞争力的程序员,以及零基础小白量身打造,是一份可直接照搬的AI大模型系统化学习指南。文章深度解析2026年AI大模型的核心优势、全行业应用场景,拆解当下高薪岗位现状与长期发展前景,重点分享5个可落地的…

📅 2026/9/9 12:45:58
MORE NEWS

更多资讯

📰

CrystalDiskMark、AS SSD、DiskGenius:硬盘性能测试与健康检测实战指南

固态硬盘用久了掉速、新买的U盘容量对不上、机械盘偶尔卡顿怀疑有坏道——这些场景几乎每个折腾过电脑的人都遇到过。判断一块盘到底是"真不行了"还是"只是心理作用",靠感觉没用,得靠数据说话。CrystalDiskMark、DiskGenius、AS SSD…

📰

智能交通专项规划:系统边界与块数据平台设计要点

简介:《智能交通专项规划方案 iTSTech 2022》是一份完整的PDF规划文档,面向交通工程、智慧城市及智能交通领域的规划人员、研究人员和决策者,帮助解决交通信息化升级中从需求分析到建设方案的全流程设计问题。资源为单个PDF文件,大…

📰

人形机器人骨骼选型指南:五种材料方案对比与实操避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

PyPTO Online Flash Attention 设计骨架 SK-01:KV 分块在线 softmax 注意力算子的完整实战指南

PyPTO Online Flash Attention 设计骨架 SK-01:KV 分块在线 softmax 注意力算子的完整实战指南 【免费下载链接】pypto-gym PyPTO-Gym 是基于 PyPTO 编程框架构建的算子与模型样例仓库 项目地址: https://gitcode.com/cann/pypto-gym 本指南系统讲解 CANN / …

📰

Keil5安装卸载避坑指南:MDK与C51双工具链配置及彻底清理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

告别手动接口请求:用 TanStack Query 重构前端服务端状态管理

如果你跟我一样,这几年在前端项目里反复写 loading、error、data 三件套,那你大概率也经历过这种场景:页面越做越多,接口请求的重复代码越来越多,最后每个组件里都塞满了一堆 useState、useEffect 和 axios 调用。一开…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬