首页 新闻 会员 周边

C#如何让电脑蓝屏

0
悬赏园豆:30 [已解决问题] 解决于 2013-04-02 11:40

求大神出现,在win7试过,杀死所有进程,可以实现。

XP不行,求高手详解原理。

WILL WIN的主页 WILL WIN | 初学一级 | 园豆:104
提问于:2012-09-29 11:44
< >
分享
最佳答案
0

真正的蓝屏很难弄。

可以最大化窗口,背景颜色设为蓝色,然后加上蓝屏代码,边框样式为NONE,不显示在任务栏

开个线程关闭任务管理器,屏蔽alt+f4,修改注册表屏蔽系统快捷键(例如:win+D)

用api将鼠标和键盘屏蔽。

差不多就达到模拟蓝屏的效果了。

收获园豆:10
花开花又落 | 菜鸟二级 |园豆:357 | 2012-10-08 08:42
其他回答(7)
0

肯定不行,楼主,就不要这么纠结了吧,你去试试c或者c++

chenping2008 | 园豆:9836 (大侠五级) | 2012-09-29 13:38
0

哈哈,这里有人提出了一种解决方式 http://wenwen.soso.com/z/q175278778.htm

itaozi | 园豆:1055 (小虾三级) | 2012-09-29 18:17
0

内核级别的驱动开发才会引起蓝屏,WIN的普通开发基本都是调用API都是在用户模式很难引发蓝屏,只有进入内核模式才无所不能.

收获园豆:10
56180825 | 园豆:1756 (小虾三级) | 2012-09-29 21:55
0

楼主是在写病毒吗? C#写病毒不太现实, 虽然有先例...

Y2zz | 园豆:393 (菜鸟二级) | 2012-09-29 23:06

N年前我就看到国外一个17岁的美女用C#写病毒了,这有什么不现实的。

支持(0) 反对(0) happydaily | 园豆:301 (菜鸟二级) | 2012-09-30 16:13
0

很难。。。一个比较简单的方法是写一个内核驱动,然后安装,完成后用csharp调用这个内核驱动。

 

内核驱动可以很简单,将一些乱七八糟的核心数据结构改掉就可以了……几秒中之后,你会发现蓝屏了。

收获园豆:10
荣耀属于跪拜猫 | 园豆:832 (小虾三级) | 2012-10-07 10:59
0

@花开花又落

非常不错的想法,另类的蓝瓶

云中飞杨 | 园豆:229 (菜鸟二级) | 2012-10-08 10:40
0

C#蓝屏代码:
命名空间:
using System.Runtime.InteropServices;
声明引用:
[DllImport("ntdll.dll", SetLastError = true)]
private static extern int NtSetInformationProcess(IntPtr hProcess, int processInformationClass, ref int processInformation, int processInformationLength);
蓝屏代码:
int isCritical = 1; // we want this to be a Critical Process
int BreakOnTermination = 0x1D; // value for BreakOnTermination (flag)

    Process.EnterDebugMode();  //acquire Debug Privileges

    // setting the BreakOnTermination = 1 for the current process
    NtSetInformationProcess(Process.GetCurrentProcess().Handle, BreakOnTermination, ref isCritical, sizeof(int));

完整代码:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

public class CriticalProcess
{
[DllImport("ntdll.dll", SetLastError = true)]
private static extern int NtSetInformationProcess(IntPtr hProcess, int processInformationClass, ref int processInformation, int processInformationLength);

static void Main(string[] args)
{
    int isCritical = 1;  // we want this to be a Critical Process
    int BreakOnTermination = 0x1D;  // value for BreakOnTermination (flag)

    Process.EnterDebugMode();  //acquire Debug Privileges

    // setting the BreakOnTermination = 1 for the current process
    NtSetInformationProcess(Process.GetCurrentProcess().Handle, BreakOnTermination, ref isCritical, sizeof(int));
}

}

刘火火学电脑 | 园豆:202 (菜鸟二级) | 2021-08-28 18:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册