PspCreateProcessNotifyRoutine,PspCreateThreadNotifyRoutine,PspLoadImageNotifyRoutine表全部清空

Win64 驱动内核编程-30.枚举与删除线程回调 枚举与删除线程回调 进程回调可以监视进程的创建和退出,这个在前面的章节已经总结过了。某些游戏保护的驱动喜欢用这个函数来监视有没有黑名单中的程序运行,如果运行则阻止运行或者把游戏退出。而线程回调则通常用来监控远程线程的建立,如果发现有远程线程注入到了游戏进程里,则马上把游戏退出。现在来详细讲解如何绕过这个两个监控。 我们注册的进程回调,会存储在一个名为PspCreateProc... 阅读详情

RtlInitUnicodeString(&name,L"PsSetCreateProcessNotifyRoutine");
RemoveNotifyRoutine((PVOID)MmGetSystemRoutineAddress(&name));

RtlInitUnicodeString(&name,L"PsRemoveCreateThreadNotifyRoutine");
RemoveNotifyRoutine((PVOID)MmGetSystemRoutineAddress(&name));

RtlInitUnicodeString(&name,L"PsRemoveLoadImageNotifyRoutine");
RemoveNotifyRoutine((PVOID)MmGetSystemRoutineAddress(&name));

__declspec(naked) void DisableWPBitAndCli()
{
__asm
{
   cli
   mov     eax, cr0
   and     eax, 0xFFFEFFFF
   mov     cr0, eax
   retn
}
}

__declspec(naked) void EnableWPBitAndSti()
{
__asm
{
    mov eax, cr0
    or eax, 0x10000
    mov cr0, eax
    sti
    retn
}
}
NTSTATUS
MydrvDispatch (
      IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp
      )
{
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0L;
IoCompleteRequest( Irp, 0 );
return Irp->IoStatus.Status;
}

/*
NTSTATUS RemoveNotifyRoutine(PVOID RemoveFunPointer)

can remove all of the Routine of CreateThread and CreateProcess and LoadImage
注意传入参数为下面三者之一
PsSetCreateProcessNotifyRoutine
PsRemoveCreateThreadNotifyRoutine
PsRemoveLoadImageNotifyRoutine
===========
by xp sp2
*/
NTSTATUS RemoveNotifyRoutine(PVOID RemoveFunPointer)
{
ULONG AddrFun;
ULONG* pRoutineList;
ULONG i;

pRoutineList = 0;
AddrFun = (ULONG)RemoveFunPointer;
DbgPrint("RemoveNotifyRoutine = %08X/n",RemoveFunPointer);
//
//the RemoveFunPointer could
//only be PsRemoveLoadImageNotifyRoutine
//or PsSetCreateProcessNotifyRoutine
//or PsRemoveCreateThreadNotifyRoutine
//find code bf 00975680      mov     edi,offset nt!PsThreadType+0x44 (80569700)
//
for(i = AddrFun;i<AddrFun + 0x20;i++)
{
   if( 0xbf == *(PBYTE)i )
   {
    i++;
    pRoutineList = (ULONG*)( *(ULONG*)i );
    break;

   }
}

if( 0 == pRoutineList)
{
   DbgPrint("Can not find the RoutineList/n");
   return STATUS_UNSUCCESSFUL;
}

if( TRUE != MmIsAddressValid((PVOID)pRoutineList) )// memory is valid
{
   DbgPrint("Access Memory is not Valid %08X/n",pRoutineList);
   return STATUS_UNSUCCESSFUL;
}

//
//Zero the PspCreateThreadNotifyRoutine;
//
DisableWPBitAndCli();
for(i=0;i<8;i++) //这里写成0x40也没有问题,我看他这个表应该长度为0x40,但网上说PspCreateProcessNotifyRoutine表长

度在win2K下为8,xp下为多少,我没有找到资料,懒得去分析代码找出他的长度
{
   //if( 0 == pRoutineList[i] )break;
   pRoutineList[i] = 0;//清空
}
EnableWPBitAndSti();

DbgPrint("RemoveNotifyRoutine STATUS_SUCCESS %08X/n",RemoveFunPointer);
return STATUS_SUCCESS;

线程的创建过程——PspCreateThread逆向分析 通过之前的分析NtCreateThread函数,可以看到线程的创建实际是在PspCreateThread中。在IDA交叉引用中可以看到仅仅被NtCreateThread和PsCreateSystemThread这两个函数调用,分别用于创建用户线程和系统线程对象。...... 阅读详情

相关推荐

扩展内核函数 PsSetCreateProcessNotifyRoutine 等的蹲坑数量

扩展内核函数 PsSetCreateProcessNotifyRoutine 等的蹲坑数量

遍历创建进程、创建线程、加载模块的回调函数

今天我们首先来看一下最简单的,关于遍历PspCreateProcessNotifyRoutine数组,PspLoadImageNotifyRoutine也同理 这两个数组保存了两组函数地址,它们将在有进程被创建或销毁,有镜像被装载或映射入内存的时候被依次调用, 当然了这两个符号都是未导出的,而且它们的数量在xp和win7下也有所不同,xp<2k3>下最大数...

weixin_34360651的博客 298

精选_枚举并删除系统上PsSetCreateThreadNotifyRoutine回调_源码打包

枚举并删除系统上PsSetCreateThreadNotifyRoutine回调

[原创]通过PsSetCreateProcessNotifyRoutineEx和PsSetCreateThreadNotifyRoutine实现进程与线程监控

PsSetCreateProcessNotifyRoutineEx是Windows提供得一个可以通过设置回调函数实现进程监控的内核API。其在文档的定义如下: 1 2 3 4 5 NTSTATUS PsSetCreateProcessNotifyRoutineEx( INPCREATE_PROCESS_NOTIFY_ROUTINE_EXNotifyRoutine, INBOOLEAN...

追逐光芒,追随内心 2356

FPGA:UART串口接收(高干扰情况)

在上一篇文章中介绍过UART串口接收模块,其中一个需要优化的方向就是在高干扰情况下,如何实现可靠的UART串口接收任务。

weixin_50164178的博客 1672

别再纠结了!车规MCU选M7还是R52?一张图看懂你的车身控制器/域控制器该用谁

本文深入探讨车规MCU选型中Cortex-M7与Cortex-R52的核心差异,提供基于安全等级与实时性需求的选型决策图。通过对比ASIL认证、实时性能及成本效益,帮助工程师在车身控制器/域控制器设计中做出精准选择,避免潜在风险与隐性成本。

weixin_42628688的博客 398

PsSetCreateProcessNotifyRoutine监控进程创建

PsSetCreateProcessNotifyRoutine函数用来注册一个进程创建的回调函数,当有新从进程被创建时,就把父进程的ID,和子进程(被创建的进程)ID传给回调函数,通过回调函数,可以监控新创建的进程 NTSTATUS PsSetCreateProcessNotifyRoutine( _In_ PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRouti...

Sven的忘却日记 5930

【已解决】WorkBuddy 国内版与国际版共存 + 关闭自动更新 教程

本文介绍在Windows系统中同时安装并共存WorkBuddy国内版与国际版的完整方案,通过修改product.json文件关闭启动自动更新,修复缓存配置污染问题,确保两版本互不干扰、数据独立。重点解决因共享身份标识导致的更新源错乱、进程锁冲突及自动覆盖风险,提供命令行备份与修改步骤,并强调手动升级时需避免使用应用内更新功能,以规避平台参数错位缺陷。

人生是一场修行 1573

Windows内核模式回调机制详解:基于TelemetrySourcerer的研究视角

Windows内核模式回调机制是操作系统安全体系的重要组成部分,它允许内核组件在特定系统事件发生时接收通知。TelemetrySourcerer作为一款专注于枚举和禁用常见遥测源的工具,为我们研究这些回调机制提供了独特视角。本文将深入解析Windows内核回调的工作原理、主要类型及其在遥测系统中的应用。 ## 什么是内核模式回调机制? 内核模式回调本质上是一种特殊的函数指针,当特定系统事件(如

gitblog_00444的博客 551

EXCEL VBA从入门到精通 第一章:VBA入门

在VBA中,需要使用关键字Dim来定义一个变量,后面跟上变量名和变量的数据类型。例如,下面的代码定义了一个整型变量x和一个字符串变量name在VBA中,使用关键字Const来定义常量,后面跟上常量名和常量的值。例如,下面的代码定义了一个整型常量MAX_NUM和一个字符串常量MESSAGE需要注意的是,常量一旦被定义,其值就不能被改变。

1万+

手把手教你RK3588 NPU驱动与RKNN Toolkit,AI开发不迷路!

本文详细介绍了RK3588 NPU驱动安装与RKNNToolkit使用方法。首先阐述了RK3588芯片在嵌入式AI领域的优势,包括6TOPS算力和混合量化支持。随后分步骤讲解了NPU驱动安装流程,包括准备工作、编译安装、验证调试及常见问题解决。接着全面介绍了RKNNToolkit的环境搭建、基本使用流程和图像分类实战案例,涵盖模型转换、推理优化等关键环节。最后展望了RK3588在智能安防、工业自动化等领域的应用前景,为开发者提供了完整的嵌入式AI开发指南。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 434

创建/结束进程回调 PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutine PsSetCreateProcessNotifyRoutine添加或者移除一个驱动支持的回调例程(也可以成为函数)。 当一个进程被创建或者删除时,一系列的例程将会被调用。PS:相当于把例程加入到一个链表中,当进程被创建或者删除时,所有的例程都会被调用(应该是这个意思) NTSTATUSPsSetCreateProcessNo...

dingji2919的博客 650

ResNet改进(51):基于轴向注意力机制的改进ResNet模型

本文介绍了一种结合轴向注意力机制的改进ResNet模型。 通过在传统CNN中引入轴向注意力,我们能够在保持计算效率的同时,增强模型对图像全局上下文的理解能力。这种混合架构结合了CNN的局部特征提取优势和注意力机制的全局建模能力,在图像识别任务中表现出色。 轴向注意力机制的应用不仅限于ResNet,也可以灵活地集成到其他CNN架构中。 未来可以探索更多注意力变体,或将其应用于特定领域任务,如医学图像分析、自动驾驶等需要精确空间理解的场景。 希望本文能帮助你理解如何将注意力机制与传统CNN结合,为你的计

2401_82355416的博客 361

驱动开发:内核监控进程与线程创建

监控进程的启动与退出可以使用 `PsSetCreateProcessNotifyRoutineEx` 来创建回调,当新进程产生时,回调函数会被率先执行,然后执行我们自己的`MyCreateProcessNotifyEx`函数,并在内部进行打印输出。而检测线程操作与检测进程差不多,检测线程需要调用`PsSetCreateThreadNotifyRoutine` 创建回调函数,然后就可以检测线程的创建了。

微软技术分享 1万+

视觉Transformer实战 | Cross-Attention Multi-Scale Vision Transformer(CrossViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准 ViT 结构在处理不同尺度的视觉特征时存在局限性。双分支 ViT (Cross-Attention Multi-Scale Vision Transformer, CrossViT) 通过引入双分支结构来解决这一问题,能够同时捕获局部和全局视觉特征。本文将详细介绍 CrossViT 的技术原理,并使用 PyTorch 从零开始实现 CrossViT 模型。

盼小辉丶的博客 724

【报错解决】OpenClaw 报错 `openclaw: command not found`:全局命令未加入系统 PATH 的深度排查与修复指南

在国产AI工具链开发中,OpenClaw作为关键命令行工具常出现command not found报错。本文深度分析该问题的根源——Linux环境变量PATH未包含用户级安装目录(~/.local/bin)。通过四种解决方案(临时PATH修改、永久配置、软链接、虚拟环境处理)和排错Checklist,揭示"命令存在却找不到"的本质是路径配置问题,特别适用于Docker/国产Linux/非root环境。文中强调理解Linux工具链机制对国产AI开发的重要性,并指出这是开发者掌握环境

博客 5385

回调监控初步研究

windows提供了API用来监控我们的线程进程的创建和销毁。主要是下面几个函数//进程线程//模块先从最简单的PsSetCreateProcessNotifyRoutine开始。

m0_68259687的博客 857

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Windows动态沙箱实现--进程回调监控

下面是我们的回调代码实现,核心功能是获取当前创建的进程PID、全路径、命令行、父进程PID、父进程全路径信息。需要注意的是,这里获取的父进程信息有可能是假的,最常见的就是启动服务、shellcode注入启动或者借助UpdateProcThreadAttribute伪造父进程启动。这类的伪装,我们需要在后续的InfinityHook里实现发现并进行关联标注。前面讨论了沙箱的目标,今天开始落实代码实现,从功能实现的先后顺序上,我们优先实现4个回调:进程回调、镜像回调、线程回调、注册表回调,今天实现进程回调。

wangmin1944的专栏 589

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC中sqlite的使用

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

反模块、线程、进程回调(PsSetXXXXX)

参考资料: 1、模块、进程、线程回调函数的逆向 2、一字节anti创建进程线程等回调 1、清空全局变量PspNotifyEnableMask PsSetCreateThreadNotifyRoutine、PsSetCreateProcessNotifyRoutine、PsSetLoadImageNotifyRoutine 2、注册无用回调函数占坑,因为注册回调有最大限制 例如PsSetLoadImageNotifyRoutine最大拥有8个回调 ...

u014738665的博客 658

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

枚举和移除进程和线程回调

进程回调可以监视进程的创建和退出,这个在前面的章节已经讲过了。 某些游戏保护的 驱动喜欢用这个函数来监视有没有黑名单中的程序运行,如果运行则阻止运行或者把游戏退 出。而线程回调则通常用来监控远程线程的建立,如果发现有远程线程注入到了游戏进程里, 则马上把游戏退出。 我们注册的进程回调,会存储在一个名为 PspCreateProcessNotifyRoutine 的数组里。 PspCreatePr...

liuhaidon1992的博客 898

驱动开发之二:ntddk.h文件中函数的使用 如:PsSetCreateProcessNotifyRoutine

笔者曾在网上搜索进程监视,大家都在使用PsSetCreateProcessNotifyRoutine,这个函数,但是在笔者的环境中使用时,总是出现未声明的标示符,查了下MSDN,是说在 文件中进行定义的,但是计算包含进来也是不能使用的!!!!于是进一步查看ntddk.h文件的使用,于是发现了,这个头文件仅仅使用#include还是不可以的 查了些资料,发现其使用方法如下 //////////

dasgk的专栏 2953

Windbg查看PsSetCreateProcessNotifyRoutine进程创建回调

kd> dd nt!PspCreateProcessNotifyRoutineCount L1 fffff803`6defadcc 00000006 kd> dd nt!PspCreateProcessNotifyRoutineExCount L1 fffff803`6defadc8 00000002

q6771020的博客 555

系统回调介绍

使用   设置 PspNotifyEnableMask 为 0 CreateProcess CreateThread LoadImage 回调函数都不会起作用 目的: 遍历系统中的回调 类型: 与Xuetr遍历到的类型相同 如有雷同,还望见谅。。。有错误或者不恰当的地方请指正。 附件中代码大量冗余,可以将相同的部分写成一个函数,...

231

内核进程回调遍历【记录】

通过WinDbg手动进行内核进程回调表遍历【记录】

WorryFree 673

安全稳定的实现进线程监控

关于清除线程创建监视例程这个问题,我以前在水木清华问过了。那时候2k源代码好像还没被hack出来,但高手就是高手啊,看看这个回答:文章出处:水木清华发信人: soycola (酱油可乐), 信区: MSDN标  题: Re: 关于PsSetCreateThreadNotifyRoutine的问题发信站: BBS 水木清华站 (Mon Nov 24 22:53:32 2003), 转信这个确实比较搞

971
上一篇: SSDT原始地址, 现在地址
下一篇: windbg 使用
普通网友
博客等级 码龄17年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值