绕过杀毒软件之一续

精选_基于PsSetLoadImageNotifyRoutine实现监控模块加载并卸载已加载模块_源码打包 基于PsSetLoadImageNotifyRoutine实现监控模块加载并卸载已加载模块 立即下载

上次说的绕过杀毒软件之一(实时监控篇)中,提供了解决方法这是对应代码:
(至于如何清理具体驱动的NotfiyRoutine,就是找到驱动所加载的地址,用PsLoadedModuleList或ZwQuerySystemInformation,然后判断PspLoadImageNotifyRoutine中的项是否落在此驱动范围,
我在这就不罗嗦了,自己动手去)

//FixNotify.h
//It's for find PspLoadImageNotifyRoutine Addr
//for anti-anti-virus or anti-trojan
#ifndef __FIX_NOTIFY__
#define __FIX_NOTIFY__

DWORD FindPspLoadImageNotifyRoutine(void);

NTSTATUS InitFixNotify(void);

VOID MyNotifyRoutine(IN PUNICODE_STRING  FullImageName,
      IN HANDLE  ProcessId,
      IN PIMAGE_INFO  ImageInfo);

#endif



//FixNotify.cpp
#include "FixNotify.h"

NTSTATUS InitFixNotify(void)
{
 return PsSetLoadImageNotifyRoutine(MyNotifyRoutine);
}

VOID MyNotifyRoutine(IN PUNICODE_STRING  FullImageName,
      IN HANDLE  ProcessId,
      IN PIMAGE_INFO  ImageInfo)
{
    return;
}

DWORD FindPspLoadImageNotifyRoutine(void)
{
 UINT           i,j;
 BYTE*          pCheckArea;
 DWORD          dwCheckAddr;
 DWORD          dwNotifyItemAddr;
 DWORD*         pPspLINotifyRoutine;
 UNICODE_STRING unstrFunc;

 RtlInitUnicodeString(&unstrFunc, L"PsSetLoadImageNotifyRoutine");
 
 pCheckArea = (BYTE*)MmGetSystemRoutineAddress (&unstrFunc) ;
 if (!pCheckArea)
 {
  KdPrint(("[RTMonitor] MmGetSystemRoutineAddress failed."));
  return 0;
 }
 
 
 for (i=0; i<100; i++)
 {
  dwCheckAddr         = *(DWORD*)pCheckArea;
  pPspLINotifyRoutine = (DWORD*)dwCheckAddr;
  
  if (MmIsAddressValid(pPspLINotifyRoutine))
  {
   KdPrint(("[RTMonitor] Vaild Addr: %x", pPspLINotifyRoutine));
   
   dwNotifyItemAddr = *pPspLINotifyRoutine;
   
//内核中关于Notify地址记录问题,在winxp(win2003)与win2000(NT4.0)下差异很大
#if defined (_WINXP_) || defined (_WIN2003_)

   for (j=0; j<8; j++)
   {
    if (dwNotifyItemAddr != NULL && MmIsAddressValid((void*)dwNotifyItemAddr))
    {
     if (*(DWORD*)(dwNotifyItemAddr-3) == (DWORD)MyNotifyRoutine)
     {
      
      KdPrint(("[RTMonitor] Find PspLoadImageNotifyRoutine: %x", pPspLINotifyRoutine));
      
      return (DWORD)pPspLINotifyRoutine;      
     }
    }
    dwNotifyItemAddr++;
   }
#else

   for (j=0; j<8; j++)
   {
    if (dwNotifyItemAddr == (DWORD)MyNotifyRoutine)
    {
     
     KdPrint(("[RTMonitor] Find PspLoadImageNotifyRoutine: %x", pPspLINotifyRoutine));
     
     return (DWORD)pPspLINotifyRoutine;      
    }
    dwNotifyItemAddr++;
   }
#endif
   
  }
  pCheckArea++;
 }
 
 return 0;
}


ps:关于PsSetCreateProcessNotifyRoutine和Attach File System部分,我在下面一篇文章会分析,
1)PsSetCreateProcessNotifyRoutine修复的方法和PsSetLoadImageNotifyRoutine一样。
2)Attach File System修复的方法是通用解除Attach的方法!详见IoAttachDevice的实现,反过来就可以了。

 
芯片设计流程中的def文件 在实际的DEF文件中,每个部分都包含了与实际设计相关的详细信息,这个模板只展示了每个部分的基本结构。在实际应用中,DEF文件通常由EDA(电子设计自动化)工具在完成布局(Placement)和布线(Routing)步骤后自动生成,在集成电路设计中,DEF(Design Exchange Format)文件的模板具体内容会依设计的复杂性和特定需求而变化。简而言之,LEF文件提供了单元的物理特性和规则,而DEF文件使用这些规则来确定单元。)文件描述了特定设计中所有物理元素的精确放置和连线信息。 阅读详情

相关推荐

UUVsimulator仿真

pub -r 10 /cmd_vel geometry_msgs/Twist控制运动没有反应。通过键盘控制运动,接收不到/cmd_vel消息。

Fatal__的博客 4605

绕过杀毒软件之一(实时监控篇)续

上次说的绕过杀毒软件之一(实时监控篇)中,提供了解决方法这是对应代码:(至于如何清理具体驱动的NotfiyRoutine,就是找到驱动所加载的地址,用PsLoadedModuleList或ZwQuerySystemInformation,然后判断PspLoadImageNotifyRoutine中的项是否落在此驱动范围,我在这就不罗嗦了,自己动手去)//FixNotify.h//Its for

老裴 2234

QT实现HTTP文件(夹)下载的完整流程与实战技巧

本文详细介绍了使用QT框架实现HTTP文件和文件夹下载的完整流程与实战技巧。通过QNetworkAccessManager等核心类,讲解了从单文件下载、大文件处理、进度显示、暂停/取消功能,到复杂的文件夹下载策略。文章重点剖析了断点续传、错误处理与网络健壮性等关键问题,为C++桌面应用集成稳定高效的下载功能提供了专业指导。

weixin_29239279的博客 277

绕过杀毒软件之一(实时监控篇)

杀毒软件的实时监控分为两个部分  一:Notify部分  二:Attach到文件系统部分一:Notify对与杀毒软件致关重要(有些流氓软件也用的),主要用到的是   PsSetLoadImageNotifyRoutine和   PsSetCreateProcessNotifyRoutine这两个函数1 PsSetLoadImageNotifyRoutine(  IN PLOAD_IMAGE_NOT

老裴 6938

Ansys Lumerical 2023 R1.2新功能实战:薄膜铌酸锂调制器仿真全流程解析

本文详细解析了Ansys Lumerical 2023 R1.2在薄膜铌酸锂电光相位调制器仿真中的最新功能与应用。通过实战演示,展示了从电极配置、电场计算到模式分析的全流程,重点介绍了各向异性介电常数支持和多物理场耦合优化等关键技术,助力开发者高效设计高性能光通信器件。

weixin_28454475的博客 1207

手把手教你用Matlab解析Zygo .dat文件:从二进制数据到面形图(附完整流程)

本文详细介绍了如何使用Matlab解析Zygo干涉仪生成的.dat文件,从二进制数据读取到面形图可视化的完整流程。通过实例代码演示了文件结构解析、数据矩阵读取、高阶Zernike拟合等关键技术,帮助工程师和研究人员高效处理光学检测数据,提升分析精度和工作效率。

weixin_30731305的博客 447

基于PsSetLoadImageNotifyRoutine实现监控模块加载并卸载已加载模块(卸载DLL、EXE和sys等加载)

背景 对于内核层实现监控模块的加载,包括加载DLL模块、内核模块等。你也许会想到 HOOK 各种内核函数来实现。确定,在内核层中的 HOOK 已经给人留下太多深刻的印象了,有 SSDT HOOK、Inline HOOK、IRP HOOK、过滤驱动等等。 但是,Windows 其实给我们提供现成的内核函数接口,方便我们在内核下监控用户层上模块加载的情况,即 PsSetLoadImageNotifyRoutine 内核函数,可以设置一个回调函数,来监控监控模块加载。 现在,本文就使用 PsSetLoadI

苞米地里捉小鸡的博客 4602

分组背包问题(MCKP)三大算法对比:贪心、Dyer-Zemel和动态规划谁更强?

本文深入对比了分组背包问题(MCKP)的三大主流算法:贪心算法、Dyer-Zemel算法和动态规划。通过分析各自的原理、实现及性能表现,揭示了贪心算法速度快但非最优,动态规划精确但受限于规模,而Dyer-Zemel算法则在效率与最优性间取得了最佳平衡,是解决中等至大规模MCKP问题的首选方案。

vscode6remote的博客 226

驱动开发:内核枚举LoadImage映像回调

映像加载通告回调,当有新驱动或者DLL被加载时,回调函数就会被调用从而执行我们自己的回调例程,映像回调也存储在数组里,枚举时从数组中读取值之后,需要进行位运算解密得到地址。目前系统中只有两个回调,所以枚举出来的只有两条,打开ARK验证一下会发现完全正确,忽略。中我们封装实现了特征码定位功能,本章将继续使用该功能,本次我们需要枚举内核。如上所述,如果我们需要拿到回调数组那么首先要得到该数组,数组的符号名是。增加解密代码以后,这段程序的完整代码也就可以被写出来了,如下所示。首先定位到,能够找到。

微软技术分享 1万+

69页完整版智慧港口综合解决方案

智慧港口需求4港机远程操控等自动化改造需求自动化码头AGV无线通信及专用视频系统需求安全生产视频监控类需求港机RCMS及设备管理需求岸边智能理货码头三维全景应用智慧港口解决方案5自动化码头AGV/跨运车/无人集卡无线接入港机远控视觉及冗余无线通信视觉集卡防吊起系统集装箱码头岸边智能理货港机RCMS系统无线接入港机智能化管理(无线高清视频监控、一键报警、远程抄表系统)港口拖轮无线接入岸边溢油监测系统TD-LTE覆盖及业务终端接入港口生产管理系统港口可视化集群调度港口GiNMS综合网络设备智能管理全球作业效率最

zuoan1993的博客 2128

如何在 SAPGUI 里显示上传到 ABAP 服务器的 PDF 文件

在 SAPGUI 里显示 PDF 文件是实际项目中一个很有用的需求。因为在 SAP 实际业务场景中,有大量的流程会生成 PDF 格式的数据。把这种类型的数据输出显示在 SAPGUI 里,方便最终用户查看。本教程后续步骤,还会向大家介绍如何使用 ABAP 代码生成 PDF 格式的数据。本步骤只是简单的将本地 PDF 文件,上传到 ABAP 系统并显示在 SAPGUI 里。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2686

实现一个简单的表达式计算工具

import java.math.BigDecimal; import java.util.*; /** * 简单的公式计算工具,仅支持+ 、-、*、/、() * @author ningyongli * @date 2020-07-13 */ public class CalculateUtils { private static final Map<String, Integer> PRIORITY_MAP = new HashMap<>(); p..

流浪的神明 370

LDRA Testbed(TBrun)软件单元测试_实例讲解(对多次调用的函数打桩)

在之前的文章《LDRA Testbed(TBrun)软件单元测试_操作指南》中,已经讲解了如何使用TBrun进行软件单元测试的基本操作步骤。本篇文章将结合实例进一步讲解被测函数中包含多次调用其他函数时,如何对其打桩来实现测试目的(详细的操作流程本文不再重述,若有不清楚的,可以结合之前的操作指南一起来看)。本文以一个被测函数作为示例,讲解了如何使用Testbed(TBrun)对涉及到多次调用其他函数的被测函数进行单元测试。本文的示例可能比较简单,但是思路、方法和流程都是通用的,希望对大家有所帮助。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1462

一个不错的java的表达式计算的工具

在我们的项目中,如果是做流程或者是一些涉及到计算的模块时,是不是有动态进行计算的需求呀。   比如,我们从配置里读取到一个公式,比如最简单的 sin(A) + cos(B) 你会怎样实现呢,   这个实现上没有多大的困难,从最简单的hard code的解析,到正则表达解析,或者是AST语法树解析,或者用bsh,jython,jruby/groovy等脚本引擎,或者更有甚者直接用sql执行,...

1892

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

一个表达式计算工具

可以计算: 加减乘除,余数,括号 , 结果为整数,操作数全部为整数。 中间应该有考虑不周的地方,请给我留言。附上计算表达式。 转载,请注明本地址 测试: public static void main(String[] args) throws Exception { String exp = "-1*((24+8)/(6+2)*5-10)/2*2+10/2+200...

qfjiang的专栏 199

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Avitor一个强大且轻量的表达式计算工具

/自定义方法名称//重写call方法 call重载了很多 具体重写哪一个要根据自己的需求@Override/*** 在此处进行自定义逻辑*/@Override//这里的方法名 就是表达式要用到的方法名 如果不一致则找不到方法无法计算。

这是一条默认简介 788

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java表达式计算三方件_一个不错的java的表达式计算的工具

在我们的项目中,如果是做流程或者是一些涉及到计算的模块时,是不是有动态进行计算的需求呀。比如,我们从配置里读取到一个公式,比如最简单的 sin(A) + cos(B) 你会怎样实现呢,这个实现上没有多大的困难,从最简单的hard code的解析,到正则表达解析,或者是AST语法树解析,或者用bsh,jython,jruby/groovy等脚本引擎,或者更有甚者直接用sql执行,等等方法多种多样。不...

weixin_39702639的博客 569

Java 为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数ABC的表达式

Java 第三次课作业 为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数ABC的表达式。 现有两种工具:Car007和Plane,其中Car007的速度运算公式为A*B/C,Plane的速度运算公式为A+B+C 需要编写三类,ComputeTime.java Plane.java Car007.java 和接口 Comm...

什么都学不会 1万+

Java 计算数学表达式(字符串解析求值工具)

Java字符串转换成算术表达式计算并输出结果,通过这个工具可以直接对字符串形式的算术表达式进行运算,并且使用非常简单。 这个工具中包含两个类 Calculator 和 ArithHelper Calculator 代码如下: import java.util.Collections; import java.util.Stack; /** * 算数表达式求值 * 直接调用Calculator的类方法conversion() * 传入算数表达式,将返回一个浮点值结果 * 如果

诚的博客 3042

基于java的Cron表达式工具类

cron表达式命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。

qq_30713721的博客 1331

[JDK17]逆波兰计算器的简单实现(含一般表达式转逆波兰表达式)

【代码】[JDK17]逆波兰计算器的简单实现(含一般表达式转逆波兰表达式)

weixin_44429641的博客 542

表达式的动态解析和计算,Flee用起来真香

这个解析用着感觉不错哦

zyq025的专栏 495

java 表达式计算器_Java实现简单的表达式计算器功能示例

本文实例讲述了java实现简单的表达式计算器功能。分享给大家供大家参考,具体如下:读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。output对每个测试用例输出1行,即该表达式的值,精确到小数点后...

weixin_30666313的博客 623
上一篇: 绕过杀毒软件之一
下一篇: 解除远程dll,屏蔽GP的方法
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值