杀毒软件的奥秘

晶晨S905L3芯片族的进化论:从硬件架构看魔百盒固件适配奥秘 本文深入解析晶晨S905L3芯片族的硬件架构与固件适配技术,重点探讨中国移动魔百盒CM311-1e等设备的刷机实战经验。通过对比S905L3、S905L3B和S905L3SB等型号的性能差异,提供安卓9系统优化方案和线刷固件包的使用技巧,帮助用户充分发挥设备潜力。 阅读详情
        市面上所有号称"虚拟机","防火墙"的实时监控杀毒软件无一不是使用的IFSHOOK技术.但是同时也有一些朋友不断写MAIL给我打听如何实现读写的监控.下面给出用VTOOLSD写的代码.也就是所有实时杀毒软件的奥秘.同时,很多拦截文件操作的软件,例如对目录加密,文件加密等,也采用了雷同的技术.
由于代码十分简单,不分析了.

//=============================================================================
//
//By Lu Lin 2000.5.10
// Apply with VtoolsD 3.01
// DDK version is available if requested.
//Abstract:
// Install a IFS hook, monitoring any read and write access
//
//=============================================================================

// IFSHOOK.c - main module for IFSHOOK

#define   DEVICE_MAIN
#include  "ifshook.h"
#undef    DEVICE_MAIN

//typedef EventHdl(pevent pev,pioreq pir);

typedef struct _Monitored_Files{
 struct _Monitored_Files *pNext_Monitored_Files;    //pointer to next struct
 struct _Monitored_Files *pPre_Monitored_Files;      //pointer to previous struct
 int sfn;//system file number
 int open_count;
 char path[260];     //ansi path name
}_Monitored_Files,*pMonitored_Files;

//
//Declare virtual device
//

Declare_Virtual_Device(IFSHOOK)

_Monitored_Files Monitored_Files;
ppIFSFileHookFunc PrevHook;

DefineControlHandler(SYS_VM_INIT, OnSysVMInit);
DefineControlHandler(SYS_DYNAMIC_DEVICE_INIT, OnSysDynamicDeviceInit);
DefineControlHandler(SYS_DYNAMIC_DEVICE_EXIT, OnSysDynamicDeviceExit);
DefineControlHandler(SYS_VM_TERMINATE, OnSysVMTerminate);

PCHAR ConvertPath( int drive, path_t ppath, PCHAR fullpathname )
{
    int  i = 0;
    _QWORD  result;

    //
    // Stick on the drive letter if we know it.
    //

    if( drive != 0xFF ) {

        fullpathname[0] = drive+'A'-1;
        fullpathname[1] = ':';
        i = 2;
    }
    UniToBCSPath( &fullpathname[i], ppath->pp_elements, 260 , BCS_WANSI, &result );
    return( fullpathname );
}

pMonitored_Files IsFileOpened(int i){
 pMonitored_Files p=&Monitored_Files;

 while (p){
  if (i==p->sfn){
   return p;
  }
  p=p->pNext_Monitored_Files;
 }
 return 0;
}

BOOL ControlDispatcher(
 DWORD dwControlMessage,
 DWORD EBX,
 DWORD EDX,
 DWORD ESI,
 DWORD EDI,
 DWORD ECX)
{
 START_CONTROL_DISPATCH

  ON_SYS_VM_INIT(OnSysVMInit);
  ON_SYS_DYNAMIC_DEVICE_INIT(OnSysDynamicDeviceInit);
  ON_SYS_DYNAMIC_DEVICE_EXIT(OnSysDynamicDeviceExit);

 END_CONTROL_DISPATCH

 return TRUE;
}

int _cdecl MyIfsHook(pIFSFunc pfn, int fn, int Drive, int ResType,
  int CodePage, pioreq pir)
{
 int retvar,i;
 char fullpathname[260];
 _Monitored_Files *FileEntry;
 switch(fn){
  case IFSFN_OPEN:{
   retvar=(*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir);
   ConvertPath( Drive, pir->ir_ppath, fullpathname );
   FileEntry=IsFileOpened(pir->ir_sfn);
   if (FileEntry){
    FileEntry->open_count++;
   }else{
    FileEntry=&Monitored_Files;
    while(1){
     if (FileEntry->pNext_Monitored_Files){
      FileEntry=FileEntry->pNext_Monitored_Files;
     }
     else{
      break;
     }
    }
    FileEntry->pNext_Monitored_Files=/
     HeapAllocate( sizeof(_Monitored_Files),HEAPZEROINIT);
    FileEntry->pNext_Monitored_Files->pPre_Monitored_Files=FileEntry;
    FileEntry=FileEntry->pNext_Monitored_Files;
    FileEntry->sfn=pir->ir_sfn;
    FileEntry->open_count=1;
    memcpy(FileEntry->path,fullpathname,260);
   }
   return retvar;
  }

  case IFSFN_READ:{
   //Do something here,
   //eg. Decrypt the file.

   char *str;
   int j;
   str=pir->ir_data;
   j=pir->ir_length;
   retvar=(*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir);
   FileEntry=IsFileOpened(pir->ir_sfn);
   if (!stricmp("c://test.txt",FileEntry->path)){
    for (i=0;i<j;i++){
     str[i]--;
    }
   }
   return retvar;
  }

  case IFSFN_WRITE:{
   //Do something here
   //eg. Encrypt the file

   FileEntry=IsFileOpened(pir->ir_sfn);
   if (FileEntry){
    if (!stricmp("c://test.txt",FileEntry->path)){
     for (i=0;i<pir->ir_length;i++){
      (((char*)pir->ir_data)[i])++;
     }
    }
   }
   return (*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir);
  }

  case IFSFN_CLOSE:{
   FileEntry=IsFileOpened(pir->ir_sfn);
   if (FileEntry){
    FileEntry->open_count--;
    if (!FileEntry->open_count){
     FileEntry->pPre_Monitored_Files->pNext_Monitored_Files=/
     FileEntry->pNext_Monitored_Files;
     FileEntry->pNext_Monitored_Files->pPre_Monitored_Files=/
      FileEntry->pPre_Monitored_Files;
     HeapFree(FileEntry,0);
     }
   }
   return (*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir);
  }

 }

 return (*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir);
}

BOOL OnSysVMInit(VMHANDLE hVM){
 return OnSysDynamicDeviceInit();
}

BOOL OnSysDynamicDeviceInit()
{
 PrevHook = IFSMgr_InstallFileSystemApiHook(MyIfsHook);
 Monitored_Files.pNext_Monitored_Files=0;
 Monitored_Files.pPre_Monitored_Files=0;
 Monitored_Files.sfn=-1;
 Monitored_Files.open_count=0;
 Monitored_Files.path[0]=0;

 return TRUE;
}

BOOL OnSysDynamicDeviceExit()
{
 IFSMgr_RemoveFileSystemApiHook(MyIfsHook);
 return TRUE;
}

void OnSysVMTerminate(VMHANDLE hVM){
 return OnSysDynamicDeviceExit();
}

vivado2018.2 Synthesis报错但是没有错误信息-解决办法参考 身份:学生,FPGA初学者,属于半只脚碰到门槛的那种 问题描述:最近有一个项目需要FPGA编写PID算法,其中主要是涉及到有符号寄存器组之间的加减乘运算。编写完之后进行Synthesis编译,报错,但是没有错误信息,连一些相关的warning都没有,头大,大到像地球仪那种。然后查看错误日志输出文件,也没有任何信息,只是说了一句“no stack trace available, please u... 阅读详情

相关推荐

中国蚁剑启动报错全解析:从加载失败到空白界面的终极修复指南

本文详细解析中国蚁剑启动报错的常见问题,包括界面加载失败、解压权限错误和空白界面等,提供从快速修复到高级排查的完整解决方案。特别针对AntSword-Loader报错和文件解压问题,给出管理员权限设置、目录选择技巧及杀毒软件兼容性调整等实用指南,帮助用户彻底解决启动障碍。

weixin_29273849的博客 181

AD无法打开PCB,提示“无法启动此程序,因为计算机中丢失PCTF.DLL。”

AD20正常使用一段时间后,打不开PCB了,原理图可以正常打开。我没有找到直接的解决办法,重新安装后,问题消失。

Morson35的博客 2810

【Pix4d精品教程】安装Pix4Dmapper时提示“无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll”完全解决办法

Pix4Dmapper系列文章合集: 打开Pix4DMapper时提示Pix4DMapper.exe已停止工作的完全解决办法 Pix4DMapper图文安装教程(附安装包下载) Pix4Dmapper完整航测内业操作流程手把手图文教程 目 录 一、问题描述 二、问题分析 三、解决办法 一、问题描述 安装Pix4Dmapper时,提示如下所示的系统错误。无法启动此程序...

智慧空间实验室 9834

杀毒软件实时杀毒的奥秘

杀毒软件实时杀毒的奥秘 作者:LuLin 市面上所有号称"虚拟机","防火墙"的实时监控杀毒软件无一不是使用的IFSHOOK技术.但是同时也有一些朋友不断写MAIL给我打听如何实现读写的监控.下面给出用VTOOLSD写的代码.也就是所有实时杀毒软件的奥秘.同时,很多拦截文件操作的软件,例如对目录加密,文件加密等,也采用了雷同的技术. 由于代码十分简单,不分析了. //=========...

weixin_30410119的博客 133

【Pix4d精品教程】打开Pix4DMapper时提示Pix4DMapper.exe已停止工作的完全解决办法

本文为作者在使用软件时,打开Pix4DMapper时提示Pix4DMapper.exe已停止工作的完全解决办法,亲测可用! 目录 一、问题错误提示 二、问题分析及解决方法 一、问题错误提示 打开Pix4DMapper时,提示Pix4DMapper.exe已停止工作,错误提示如下: 展开问题详细信息: 二、问题分析及解决方法 第一,该问题跟电脑的联网与否没关系。...

智慧空间实验室 1万+

嵌入式状态机编程-QP状态机框架与常见状态机方法

状态机基本术语 现态:是指当前所处的状态。 条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。 次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。 传统有限状态机Fsm实现方法 如图,是一个定时计数器,计数器存在两种状态,一种为设置状态,一种为计时状态 设

qq_36969440的博客 9663

市面上所有号称"虚拟机","防火墙"的实时监控杀毒软件无一不是使用的IFSHOOK技术.但是同时也有一些朋友不断写MAIL给我打听如何实现读写的监控.下面给出用VTOOLSD写的代码.也就是所有实时杀毒软件的奥秘.同时,很多拦截文件操作的软件,例如对目录加

//============================================================================= // //By Lu Lin 2000.5.10 // Apply with VtoolsD 3.01 // DDK version is available if requested. //Abstract: // Install a I

老裴 1443

图形引擎实战:镭射效果制作分享

该方案的优势1.遵循物理的2.可以使用少量的参数去调控镭射的效果。计算相对简单,缺点仍是颜色不能够自定义,还有一种常见的方案是采样一张镭射贴图来模拟,好处是颜色可以自定义同时性能上还很高效没有复杂的公式计算。我查阅了网上普遍的方案,常见的做法是制作一个Ramp图生成工具,然后将生成好的ramp图赋给材质。这两个方案的好处是美术同学可以手动的去控制镭射的颜色。最后就是Shader中对Ramp图的采样的部分,Ramp图的UV坐标是使用fresnel作为Ramp的U轴坐标,0.5作为V轴坐标。

qq_41166022的博客 1350

《Subnautica》:深海生存冒险——修复DLL文件损坏问题的指南

玩家在游戏中扮演一名坠落在外星球海洋的太空船幸存者,必须在深邃、神秘而又充满危险的海底世界中探索、采集资源、建造基地和潜水器,同时揭开星球的奥秘和背后的故事情节。如果游戏是通过Steam或其它数字发行平台安装的,可以在游戏库中找到该游戏,右键点击并选择“属性”,然后进入“本地文件”标签页,点击“验证游戏文件的完整性”按钮,系统会自动检查并修复缺失或损坏的文件。从可信赖的源下载缺失或损坏的DLL文件,然后将其复制到游戏的安装目录或系统目录(如C:\Windows\System32)。

Vernon_218的博客 569

手把手教你修改miniwiggler配置信息,解决UDE连接问题(附FT_PROG工具下载)

本文详细介绍了如何使用FT_PROG工具修改miniwiggler配置信息,解决UDE连接问题。通过分析FT2232芯片的EEPROM结构,提供从驱动安装到配置烧写的完整流程,帮助开发者实现无缝连接英飞凌TriBoard开发板。文章还包含常见错误解决方案和高级批量配置技巧。

weixin_30919429的博客 373

Qt5开发从入门到精通——第一篇概述

Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形用户界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。在Qt程序开发过程中,除可以通过手写代码实现软件开发功能外,还可以通过Qt的GUI界面设计器(QtDesigner)进行界面的绘制和布局。该工具提供了Qt的基本可绘制窗口部件,如QWidget、QLabel、QPushButton和QVBoxLayout等。•对象查看器•属性编辑器。.........

weixin_44759598的博客 9507

WinRing0 文件集合

WinRing0 文件集合 【下载地址】WinRing0文件集合 本仓库提供了 WinRing0 文件集合,该资源对于研究操作系统底层、驱动开发以及进行系统级编程的开发者来说极为宝贵。WinRing0 是一个著名的工具集,它允许开发者访问和操作 Windows 操作系统的内核级别功能。通过这个集合,用户能够获取到必要的文...

gitblog_09716的博客 988

人形机器人硬件电路设计入门

人形机器人属于。

blotemj.blog.youkuaiyun.com 229

《Starfield》:星际探索之旅——修复DLL文件损坏问题的实战指南

Starfield》是由Bethesda Game Studios开发的一款科幻角色扮演游戏,设定在一个广阔的宇宙中,玩家将扮演一名太空探险家,探索未知的星球和星系,解开宇宙的奥秘。在游戏所在的平台(如Steam、Bethesda.net等)中,找到游戏的属性设置,验证游戏文件的完整性,系统会自动修复或下载缺失的文件。如果确定是特定的DLL文件损坏,从可信赖的源下载并替换该文件,但需谨慎操作,确保下载来源的安全性。在安装或运行游戏时,暂时禁用杀毒软件,以防其误删或阻止游戏必要的DLL文件。

Vernon_218的博客 437

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(二)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 1648

基于Simulink的柔性关节人形机器人振动抑制控制仿真

本文完成了基于Simulink的柔性关节人形机器人振动抑制控制仿真,实现了:✅ 建立二质量柔性关节动力学模型✅ 设计加速度反馈主动阻尼控制器✅ 对比陷波滤波与状态反馈效果✅ 验证大幅运动下的快速振动衰减能力✅ 为高动态人形机器人操作(如击掌、搬运)提供平滑执行基础。

xiaoheshang_123的博客 128

Chromium 132 编译指南 Windows 篇 - 编译 Chromium (七)

在上篇文章《Chromium 132 编译指南 Windows 篇 - 使用 GN 工具生成构建文件 (六)》中,我们已经完成了 90% 的准备工作。我们已经完成了 Chromium 项目的完整编译流程。现在,您拥有了一个独一无二的、由您亲手编译的 Chromium 浏览器。记住,编译过程中遇到困难是很正常的,持续学习和实践是克服这些挑战的关键。需要注意的是,由于 Chromium 项目规模庞大,编译过程可能需要相当长的时间。环境变量,在编译完成后还可以查看详细的性能报告,帮助您分析和优化编译过程。

守城小轩的技术窝棚 1402

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Chromium127编译指南 Windows篇 - 正式编译Chromium(七)

在上篇文章《Chromium127编译指南 Windows篇 - 使用 GN 工具生成构建文件(六)》中,我们已经完成了90%的准备工作。现在,激动人心的时刻终于到来了 —— 我们将正式开始编译Chromium项目!恭喜您!我们已经完成了Chromium项目的完整编译流程。现在,您拥有了一个独一无二的、由您亲手编译的Chromium浏览器。这不仅是一个巨大的成就,更为您深入了解浏览器技术和大型开源项目的开发流程打开了大门。希望这个系列的指南对您有所帮助。

守城小轩的技术窝棚 1635

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

揭秘文件丢失但占用空间:数据恢复全攻略

本文围绕文件丢失但占用空间展开深入探讨。先阐述该现象,即文件消失不见,存储空间却未被释放,严重影响正常使用。接着介绍两种数据恢复方案,使用WantFile软件可按步骤操作找回文件,也可求助专业数据恢复公司。文中还分享设计师用WantFile成功恢复丢失文件夹的真实案例。同时分析文件系统错误、恶意软件攻击等导致文件丢失但占用空间的原因,提醒注意避免继续写入数据、选可靠恢复方法,并给出预防措施,助力保护数据安全。

hfhf153的博客 1650

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

学完计算机网络基础及应用的感想,学习《计算机网络基础知识》心得体会

学习《计算机网络基础知识》心得体会 至于其他的比如网络安全的知识,的确很有用,但不是我兴趣所在,有杀毒软件就够了。 通过学习计算机网络这门课程,使我更加对网络刮目相看了! . 学习《计算机网络基础知识》心得体会 信用卡部客服服务部 游高慧 如今已经是信息时代,作为主流信息工具的网络越来越重要,网络是信息的载体,是人们传递感情的工具。随着信息社会的不断发展,网络的应用将会更加广泛和深入。因此在E校园...

weixin_42549723的博客 472

揭开Linux ARP攻击的神秘面纱:原理、类型与防范全解析

ARP 攻击作为一种常见且极具威胁性的网络攻击方式,利用 ARP 协议的设计缺陷,在局域网中施展各种破坏手段。从 ARP 泛洪攻击导致网络拥塞,到 ARP 欺骗主机攻击和欺骗网关攻击造成数据泄露,再到中间人攻击实现对通信数据的窃取和篡改,以及 IP 地址冲突攻击干扰网络正常运行,每一种攻击类型都给网络安全带来了严峻挑战。然而,面对 ARP 攻击,我们并非束手无策。

大雨淅淅的博客 1081
上一篇: TCP/IP researching之ARP协议浅析
下一篇: 用GDI+抓屏并存成.jpg文件
xmlscript
博客等级 码龄25年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值