在那遥远的MSDN上,有那么一只被隐藏的函数,它掌管着Windows内核威力不容小觑~

本教程仅作为学习研究,禁止其他用途!

富强、民主、文明、和谐, 自由、平等、公正、法治, 爱国、敬业、诚信、友善

一、准备工作

首先我们需要准备4只dll:需要引用using System.Runtime.InteropServices;

 [DllImport("ntdll.dll")]
private static extern uint NtSuspendProcess([In] IntPtr processHandle);//冻结术 [DllImport("ntdll.dll")]
private static extern uint NtResumeProcess([In] IntPtr processHandle);//解冻术 [DllImport("kernel32.dll", SetLastError = true)]
private static extern IntPtr OpenProcess(
uint desiredAccess,
bool inheritHandle,
int processId);//打开线程并获取Handle [DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool CloseHandle([In] IntPtr handle);//释放之前的OpenProcess

接下来我们把它封装起来

  public static void SuspendProcess(int processId)
{
IntPtr hProc = IntPtr.Zero;
hProc = OpenProcess(0x800, false, processId);
if (hProc != IntPtr.Zero) {
NtSuspendProcess(hProc);
CloseHandle(hProc);
}
} public static void ResumeProcess(int processId)
{
IntPtr hProc = IntPtr.Zero;
hProc = OpenProcess(0x800, false, processId);
if (hProc != IntPtr.Zero){
NtResumeProcess(hProc);
CloseHandle(hProc);
}
}

二、编码工作

以C#WinForm为例,将这段代码放在Form的Loaded或Button_Click事件里

var data = Process.GetProcesses();//获取所有进程
foreach (var p in data) { try { if (p.ProcessName != "Freeze") //注意不要把自己冻结了!!此处“Freeze”可以换成你的进程名,一般就是项目名称
ProcessMgr.SuspendProcess(p.Id);//[滑稽]冻结大法
} catch { } }

三、运行调试

千万不能在VisualStudio里调试

千万不能在VisualStudio里调试

千万不能在VisualStudio里调试

因为程序也会冻结VS,而VS关联这程序,所以冻结vs自己也动不了了

但如果你想在vs里调试可以在上方加入if判断

前方高能

好了,我要关电脑了。。。

感兴趣的小伙伴可以自己下载来玩一玩:https://github.com/TwilightLemon/Freeze

"HK"日常之冻结术的更多相关文章

  1. "HK"日常之制作一只QQ刷屏

    刷屏器是什么?可以吃吗?如果可以吃它好吃吗? um. 刷屏器就是可以定时发生信息的东西 刷屏器可以应用于很多方面,例如别人不理你了或者在QQ斗图的时候.警告:本教程仅作为学习研究,禁止其他用途!--- ...

  2. "HK"日常之用C# Process写一只小病毒

    众所周知,Process可以启动和关闭电脑上的进程,命名空间位于 System.Diagnostics,本次的教程就是利用其中的GetProcesses和Kill方法来实现的. 一.编码工作 首先我们 ...

  3. 技术债务(Technical debt)的产生原因及衡量解决

    第一次发布代码,就好比借了一笔钱.只要通过不断重写来偿还债务,小额负债可以加速开发.但久未偿还债务会引发危险.复用马马虎虎的代码,类似于负债的利息.整个部门有可能因为松散的实现,不完全的面向对象的设计 ...

  4. “HK”的日常之ARP断网攻击

    ARP断网攻击是什么?可以吃吗?如果可以吃它好吃吗? ARP断网攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响 ...

  5. .NET框架设计(高级框架架构模式)—钝化程序、逻辑冻结、冻结程序的延续、瞬间转移

    阅读目录: 1.开篇介绍 2.程序书签(代码书签机制) 2.1ProgramBookmark 实现(使用委托来锚点代码书签) 2.2ProgramBookmarkManager书签管理器(对象化书签集 ...

  6. Linux-shell-算术运算{expr、bc、dc、(( ))和[ ]}

    Linux-shell-算术运算{expr.bc.dc.(( ))和[ ]} 摘自: https://www.cnblogs.com/snowsolf/p/3325235.html 在Linux下做算 ...

  7. PostgreSQL 日常数据库维护工作

    日常数据库维护工作定期备份,定期”清理“数据库,周期性的日志文件管理check_postgres可用于检测数据库的健康并报告异常情况 1. 日常清理 PostgreSQL数据库要求周期性的清理维护.对 ...

  8. VERITA Netbackup日常巡检详细说明

    VERITA备份日常监控 一. 相关检查方法.命令 1.1 启动NBU的图形管理界面: /usr/openv/netbackup/bin/jnbSA & 1.2字符界面命令: 1.2.1cat ...

  9. Spring cloud 项目———酷派手机商城 (话术)1.0

     酷派电商网站 描述: 随着电子商务的发展,网上购物正在趋于一种时尚,电子商务网站也逐渐成为企业顺应潮流的标配.大多数人知道可能在电子商务网站前端有查询,注册登录,购物车等等功能.可是您知道建设电子商 ...

随机推荐

  1. python基础之变量和简单数据类型

    1.1 变量的命名和使用规范 变量名可以包含数字.字母.下划线,但是不能以数字开头. 变量名不能包含空格,可使用下划线来分割其中的单词. 不要将Python关键字和函数名用作变量名. 变量名应既简短又 ...

  2. JAVA基础学习之路(八)[1]String类的基本特点

    String类的两种定义方式: 直接赋值 通过构造方法赋值 //直接赋值 public class test2 { public static void main(String args[]) { S ...

  3. 我的Vscode配置

    "editor.fontSize": 17,//字体大小 "editor.wordWrap": "on",//软换行 "files ...

  4. Alpha发布——视频展示

    一.视频链接 http://v.youku.com/v_show/id_XMzEyODQzNzQ2MA==.html 二.视频文案说明 你是不是还在为软工作业奋笔疾书? 你是不是无法及时查看最新博客信 ...

  5. Java中 Auto-boxing/unboxing

    Java 中 Auto-boxing/unboxing 机制,在合适的时机自动打包,解包. 1. 自动将基础类型转换为对象: 2. 自动将对象转换为基础类型: Demo_1: import java. ...

  6. <Effective C++>读书摘要--Resource Management<一>

    1.除了内存资源以外,Other common resources include file descriptors, mutex locks, fonts and brushes in graphi ...

  7. Spring Boot(七)扩展分析

    前面的章节在分析SpringBoot启动过程中,我们发现SpringBoot使用Spring框架提供的SpringFactoriesLoader这个类,实现检索META-INF/spring.fact ...

  8. Python ZKPython 安装

    1.由于python客户端依赖c的客户端所以要先安装c版本的客户端cd zookeeper-3.4.5/src/c./configuremake make install 2.下载python扩展包, ...

  9. 【TCP】- TCP协议简介

    转载:https://blog.csdn.net/ningdaxing1994/article/details/73076795 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议 ...

  10. JDK版本Java SE、Java EE、Java ME的区别

    想在win7 X64上搭建JAVA开发环境来着(只是尝试下),打开JAVA 官网下载JDK,发现好多版本懵了,百度了下找到这些版本的区别,故有了下文 1.JAVA SE Java2平台标准版(Java ...