首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
职场驿站
» “恶作剧软件”原来那么简单
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
“恶作剧软件”原来那么简单
发短消息
加为好友
wxg1988
当前离线
UID
856476
帖子
3055
精华
0
积分
1528
阅读权限
70
在线时间
146 小时
注册时间
2011-10-5
最后登录
2014-6-11
金牌会员
UID
856476
1
#
打印
字体大小:
t
T
wxg1988
发表于 2013-1-24 08:53
|
只看该作者
“恶作剧软件”原来那么简单
软件
,
恶作剧
被朋友彻底恶作剧了一把……来了个简单的VB设计的小软件,前面就是一些问题加选项没什么……到最后当你点下一步后就弹出个对话框:
我当时丝毫没有怀疑是这个小软件造成的,以为是电脑某处**了!(按自我的常识理解,微软怎么可能允许软件可调用强制关机这种功能!!)到后来才知道……原来是真的……
吃一堑长一智吧。于是自己就花了点时间研究了下这个“恶作剧软件”,发现它竟然是这么的简单!!
首先,不管别的那些个铺垫功能,这都是用来让你放松警惕的,设计上可以充分发挥大家的想象力~
我们直接看看强制关机部分的实现,其实在我们C盘里面就有一个强制关机的exe:
所以,只要我们调用这个exe就可以了~
下面我用VC试了试这样的方法。先建了个对话框的工程,加了个按键“shutdown”,按键单击处理函数如下:
void CShutdownDlg::OnClickedButtonShutdown()
{
// TODO: 在此添加控件通知处理程序代码
FILE *f;
if(f=fopen("c:\\windows\\system32\\shutdown.exe","r"))
system("c:\\windows\\system32\\shutdown.exe -s -t 30");//30秒以后关机
fclose(f);
}
shutdown.exe有着很多的参数,比如上面用到了-s和-t,作用就是强制关机和关机时间设定,单位是秒。另外的一些的参数如下:
-f:强行关闭应用程序
-m \\计算机名:控制远程计算机
-i:显示图形用户界面,但必须是Shutdown的第一个选项
-l:注销当前用户
-r:关机并重启
-t 时间:设置关机倒计时
-c "消息内容":输入关机对话框中的消息内容(不能超127个字符)
这里还要重点介绍下另一个参数-a——取消关机操作,在调试的时候这个很有用,毕竟总不能我们自己试的时候要频繁关机了~
void CShutdownDlg::OnClickedButtonCancel()
{
// TODO: 在此添加控件通知处理程序代码
FILE *f;
if(f=fopen("c:\\windows\\system32\\shutdown.exe","r"))
system("c:\\windows\\system32\\shutdown.exe -a");//取消注销关机
fclose(f);
}
通过上面的部分可以看出,其实Windows操作系统里,exe也是一种文件,我们可以通过对文件操作的方式来控制exe的运行,个人的一点感觉就是,好比我们数字电路处理数据时,不管是什么样的数据形式,其实都是一段二进制码流;在操作系统中也是一样的,不管是什么样的格式,其实都是数据文件。
之后,自己又在网上找了找别的“恶作剧软件”发现还真是层出不穷,大家有兴趣也可以找找看。
自己想到一个算是比较有用的“恶作剧”——让鼠标消失不见!
个人想到的有两种实现方法,一是将鼠标功能关闭;二是让鼠标一直停在我们看不到的地方。这里采用第二种方法,这样稍微简单一些。
让鼠标停在我们看不到的地方就得先确定,哪里是我们看不到的地方?自己试试就会发现,在下边界和右边界的时候,我们人眼是看不到的。这样就简单了。代码如下:
void CShutdownDlg::OnClickedButtonMouse()
{
// TODO: 在此添加控件通知处理程序代码
CPoint mouse_position;
tagMSG msg;
mouse_position.x = 0;
mouse_position.y = 65535;
while (1)
{
::SetCursorPos(mouse_position.x,mouse_position.y);//设定鼠标所在位置
if(:
eekMessage(&msg, m_hWnd, WM_KEYFIRST,WM_KEYLAST, PM_REMOVE))
//获取键盘按下事件响应
{
if(msg.message == WM_KEYDOWN && msg.wParam == VK_UP)
//判断是否是“向上”按键按下
break;
}
}
}
这里同样是用了一个按钮响应函数来实现。首先,
SetCursorPos
这个函数就是用来设定鼠标的位置,我们可以通过试验来看看放在哪个坐标位置时是我们看不见的,对于屏幕来说,左上角的顶点是坐标(0,0),所有坐标都是正数。
如上,凡事都不能做死了,必须留有后路。于是就在死循环里加了一个break的判定,当键盘按下“UP”键的时候,就退出死循环。如果要作为一个“恶作剧”的话,这个键值可以改成别的,这样不容易被人发现,呵呵~
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议