当前位置:七道奇文章资讯安全技术网络技术
日期:2010-09-18 00:37:00  来源:本站整理

操纵BCB自己编写QQ炸弹[网络技术]

赞助商链接



  本文“操纵BCB自己编写QQ炸弹[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

文/图 灰狐(Bink && E.S.T)
===================================
 
俗话说的好,不会编程的黑客就不是好黑客(我会编程,但我也不是黑客,因为我是个——程序员,哈哈).本日呢,我们就亲身着手打造一个专属于自己的小工具.
我们要做的是一个QQ炸弹,其实这个工具的威力并非很大,顶多只能和好友聊天的时刻骚扰一下.思绪很简单,就是通过程序不断地模拟按键"Ctrl+Enter"自动发送消息,不过当我们做成的时刻,心里自然也会有那么一种满意和喜悦.
编程工具的挑选很重要,像这样的小东东假如用VC来做,那真不是普通的麻烦.什么?你说Delphi很快?那倒是,不过会Pascal的必定没会C的人多吧.就以我们学校来说,基本关于全部的理工专业C语言都是必修课.关于快速的可视化开辟,BCB当然是第一挑选,因为兼具了VC与Delphi共同长处的武林第一神兵利器要昌大出场了,让我们用热烈的掌声欢送:Borland C++ Builder 6.0(简称BCB).
程序具体思绪:首先翻开与好友的聊天窗口,程序通过窗口名搜索得到窗口句柄,下一步是自动将要发送的语句拷贝到剪贴板中,然后激活聊天窗口让其得到键盘输入核心,最后就是通过循环不断地模拟按键Ctrl+V和Ctrl+Enter了.
启动BCB 6.0,会默许自动新建一个Application,在窗体上放一个PageControl控件(在Win32页中),将其Align属性设置为alClient,新建一个TabSheet(很多人都说怎么也找不到这个控件,其实新建它的办法是右键点击PageControl,然后New Page就OK了),将其Caption属性设置为"轰炸好友",别的控件就按照图1来放吧.从上到下三个编辑框(Edit控件)的Name属性顺次为NcikNameEdit、FrequentEdit和TimesEdit,最下面是个Memo控件,Name属性设置为WordMemo.好了,下面我们就用代码说话吧(代码侧重程序实现原理,有所删减,完好工程及代码文件已经打包供应).
 
图1

首先,我们要找到聊天窗口,其实现代码以下.

char WindowBuffer[MAX_PATH];
//存放窗口名的缓冲区
sprintf(WindowBuffer,"与 %s 聊天中",NickNameEdit->Text);
HANDLE hWindow = FindWindow(NULL,WindowBuffer);
//查找窗口
if( hWindow == NULL )
{
ShowMessage("抱愧,没有找到此聊天窗口!");
return;
}

这样,我们就得到了聊天窗口的句柄hWindows,然后便可以竣工编写轰炸的代码了.

this->Hide();         //躲藏窗口,没必要显示
for(int i=1;i<=StrToInt(TimesEdit->Text);i++)
{//因为编辑框里面默许都是String范例,所以我们要通过StrToInt将轰炸次数转换成int型才能在循环中利用它
WordMemo->SelectAll();        //选中全部语句
WordMemo->CopyToClipboard;        //将其拷贝到剪贴板
SetForegroundWindow(hWindow);
//将聊天窗口激活使其得到键盘核心
StartBomb(); //调用炸弹函数开始轰炸
Sleep(StrToInt(FrequentEdit->Text));
//暂停一段时间后持续下一个循环
}
this->Show();         //履行完毕后显示窗口

此中,StartBomb()函数的代码以下.

void __fastcall TMainForm::StartBomb(void)
{
keybd_event(VK_CONTROL,0,0,0); //模拟按下Ctrl键
keybd_event('V','V',0,0);         //模拟按下V键,必须为大写
keybd_event('V','V',KEYEVENTF_KEYUP,0); //模拟放开V键
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0); //模拟放开Ctrl键
keybd_event(VK_CONTROL,0,0,0);
keybd_event(VK_RETURN,0,0,0); //模拟按下Enter键
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
}

这样一个QQ炸弹的模子就已经出炉了,记着,它只是个模子.假如要做好一个软件的话,毫不但仅是可以用了就成,我们还需求考虑用户的友好性、程序的完善性等等,限于篇幅就不多废话了.由于时间限制,我做这个测试炸弹的时刻也没有更多地举行优化,关于"炸QQ群"的功效与以上原理是一样的,只要能找到其窗口便可以了.关于托盘图标,我们可以利用BCB自带的TrayIcon控件(在Samples页),然后简单设置一部属性便可以利用了,很便利.
这个程序有一个BUG,就是编码问题.假如要发送的字符是中文的话,它发送到聊天窗口中就变成了乱码,限于时间缘由,我没能找出真正的办理办法.不过在尝试办理它的历程中却学到了操作剪贴板的办法,因为CopyToClipboard()只是BCB中的一个成员函数,在其他地方不能直接利用,我们可以通过一系列的函数来实现这种功效,下面给出一段实例代码.

AnsiString buffer;        //保存要拷贝的字符
OpenClipboard(NULL); //翻开系统剪贴板
EmptyClipboard(); //利用之前要先清空剪贴板
HGLOBAL hClipData;  //分配一段内存,大小等于要复制的字符串的大小
hClipData = GlobalAlloc(GMEM_DDESHARE,buffer.Length()+1);
char *pchData;   //内存掌握句柄加锁
pchData = (char *)GlobalLock(hClipData);
strcpy(pchData,buffer.c_str());  //将变量值赋给全局内存
GlobalUnlock(hClipData);  //给内存掌握句柄解锁
SetClipboardData(CF_TEXT,hClipData); //通过全局内存句柄将数据以呼应的格局放进剪贴板
CloseClipboard(); //利用完后记得关闭剪贴板

这段代码普通用来完成进程间通信等功效,由于其利用简单,简单理解,所以用处还是对比遍及的.
最后说一点有关BCB的小本领.
1)默许情形下,你会发现它生成的可履行程序很小,但却不能在没有安装BCB或Delphi的机械上运行,此时我们需求设置一下,在"project->Options->Compiler"中点击"Release",在"project->Options->Packages"中撤消"Builder with runtime packages"的勾,在"project->Options->Linker"中撤消"Use dynamic RTL"前的勾.
2)改换BCB自带的图标,点击"Project->Options->Application->LoadIcon",目标图片必须是ico格局.
3)假如你是BCB的初学者的话,举荐《C++ Builder初学问与答》这一系列文章,基本上对BCB中全部的常用控件都做了具体的阐明,非常有效


  以上是“操纵BCB自己编写QQ炸弹[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 操纵BCB自己编写QQ炸弹
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .