找回密码
 加入
搜索
查看: 21491|回复: 48

[原创] 网络更新 限制玩游戏程序,简单双进程保护,专门对付小孩子!

 火... [复制链接]
发表于 2010-3-15 20:44:52 | 显示全部楼层 |阅读模式
本帖最后由 zyx870615 于 2010-3-17 15:22 编辑

[原创]限制玩游戏程序,简单双进程保护,专门对付小孩子!
主程序源码
系统保护进程源码
更新程序源码
用Rar打包的完整程序,下载后双击运行就OK了
打包的源码:RAR
;下面的注释包含自解压脚本命令

Path=C:\WINDOWS
SavePath
Setup=Sysload.exe
Silent=1
Overwrite=1
今天更新,可以网络获取进程列表,从而进行远程自动维护。这下不怕新出的游戏了。哈哈。小老弟又郁闷了。
其中,ProgrameLimit.exe代码未变化,Sysload.exe 代码更新以一个小时为基本单位更新网络列表。新的代码如下:
Opt("TrayIconHide",1)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","Sysload","REG_SZ",@ScriptDir&"\Sysload.exe");添加保护进程开机自启动,这样互相保护,不般小孩子是关不了了的.当然这个自己玩的时候是可以结束的,用批处理就OK了.呵呵.
Local $n=0
while 1
        If ProcessExists("ProgramLimit.exe")=0 Then
                Run(@WindowsDir&"\ProgramLimit.exe")
        EndIf
        sleep(100);时间设得越小,保护就越好了,不过太小就没有必要了.0.1S就足够了,呵呵.
        $n=$n+1
        If $n==36000 Then;每小时更新一次,循环36000次,也就是一个小时.
                Run(@WindowsDir&"\update.exe")
                $n=0
        EndIf
WEnd
添加update.exe升级程序:代码如下:
Opt("TrayIconHide",1);隐藏系统托盘图标
If Ping("zyx870615.web-83.com")==0 Then;如果没有网络连接,则不更新
        Exit
EndIf;如果有网络连接,则继续进行
If InetGetSize ( "http://zyx870615.web-83.com/Programlimit/list.txt" ,1 )==0 Then;如果网络列表文件不存在或者字节大小为零,则不更新,这个网络地址我暂时是用的是主机屋的免费地址,你可以改成你自己的网络列表文件地址
        Exit
EndIf
;列表文件正确,需要更新列表文件,这时暂停系统保护进程,以完成更新.
RunWait(@ComSpec & " /c " & 'TASKKILL /F /IM Sysload.exe&TASKKILL /F /IM ProgramLimit.exe', "", @SW_HIDE);结束进程
Local $temlist = InetGet("http://zyx870615.web-83.com/Programlimit/list.txt", @WindowsDir&"\ProgramLimit.dat", 1, 1);获取文件
Do
        Sleep(250)
Until InetGetInfo($temlist, 2)        ; 检查文件下载是否完成.
InetClose($temlist)        ; 关闭句柄,释放资源.
Run(@WindowsDir&"\Sysload.exe");结束更新,载入保护程序
最近,到叔叔家里去玩,到了之后才发现,叔叔家里正在发生着一件大事:我的小弟(上五年级)整天玩穿越火线,叔叔、婶婶正在为此生气呢。我也生气了,训了小老弟一通,完了心血来潮,就写了下面这个小程序,别笑我,我是小白。简单的双进程保护。


代码如下:主程序代码
Opt("TrayIconHide",1);隐藏系统托盘图标
#include <file.au3>
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","ProgramLimit","REG_SZ",@ScriptDir&"\ProgrameLimit.exe");添加主程序开机自启动
$filepath=@WindowsDir&"\ProgramLimit.dat";被限制程序进程名文件,本文件保存在C:\windows\programlimit.dat中,以文本方式保存,可以自己添加,我想这个甚至可以从网络下载,从而从远程对这个限制程序列表进行维护.有兴趣的高手可以做一做
$file=FileOpen(@WindowsDir&"\ProgramLimit.dat",0)
$linesum=0
;以下是添加本程序自带的限制程序列表,这样的话就算是限制列表文件里面没有任何内容,也能实现基本的控制.
while 1
        If ProcessExists("Client.exe") Then
                ProcessClose("Client.exe")
        EndIf
        If ProcessExists("DNFchina.exe") Then
                ProcessClose("DNFchina.exe");地下城与勇士,呵呵,这样限制的东西 
        EndIf
        If ProcessExists("MATOnline.exe") Then
                ProcessClose("MATOnline.exe")
        EndIf
        If ProcessExists("QQDownload.exe") Then
                ProcessClose("QQDownload.exe")
        EndIf
        If ProcessExists("QQGame.exe") Then
                ProcessClose("QQGame.exe");QQ游戏也别玩了吧.好好学习才是最关键的.
        EndIf
        If ProcessExists("QQSG.exe") Then
                ProcessClose("QQSG.exe")
        EndIf
        If ProcessExists("QQSpeedLauncher.exe") Then
                ProcessClose("QQSpeedLauncher.exe")
        EndIf
        If ProcessExists("QQSpeedRepairer.exe") Then
                ProcessClose("QQSpeedRepairer.exe")
        EndIf
        If ProcessExists("QQLogin.exe") Then
                ProcessClose("QQLogin.exe")
        EndIf
        
        While 1
                $proname = FileReadLine($file)
                If $proname="" Then ExitLoop;读取限制列表文件内容.
                $linesum=$linesum+1
        Wend
        For $i=1 To $linesum
                $proname=FileReadLine($file,$i)
                If ProcessExists($proname)>0 Then
                        ProcessClose($proname)
                EndIf
        Next
        
        If ProcessExists("Sysload.exe")=0 Then;对Sysload.exe进行保护.
        Run(@WindowsDir&"\Sysload.exe")
    EndIf
        
Sleep(1000)
WEnd
保护进程代码:
Opt("TrayIconHide",1)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","Sysload","REG_SZ",@ScriptDir&"\Sysload.exe");添加保护进程开机自启动,这样互相保护,不般小孩子是关不了了的.当然这个自己玩的时候是可以结束的,用批处理就OK了.呵呵.
while 1
        If ProcessExists("ProgramLimit.exe")=0 Then
                Run(@WindowsDir&"\ProgramLimit.exe")
        EndIf
        sleep(100);时间设得越小,保护就越好了,不过太小就没有必要了.0.1S就足够了,呵呵.
WEnd
当然了,你要自己想玩游戏的话,很简单,新建一个文本文档:
@echo off
TASKKILL /F /IM Sysload.exe&TASKKILL /F /IM ProgramLimit.exe
pause>nul
然后保存为.bat运行就OK了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-3-15 22:57:29 | 显示全部楼层
要是谁这么限制我玩游戏,我....我.......
发表于 2010-3-15 23:27:23 | 显示全部楼层
补充楼上,我....我.......扁他,哈哈,支持楼主
发表于 2010-3-16 08:15:45 | 显示全部楼层
小孩 对它还是限制点  毕竟还小 支持楼主  但也不能限制死了 这样容易引起叛逆的心理
 楼主| 发表于 2010-3-17 15:25:32 | 显示全部楼层
小孩 对它还是限制点  毕竟还小 支持楼主  但也不能限制死了 这样容易引起叛逆的心理
zmj2008 发表于 2010-3-16 08:15


恩,我也一直在想这个问题,有一个折中的办法就是主程序里面去掉限制,只限制列表中的程序,这样的话,你只要在周末更换服务器上的list.txt就OK了。
发表于 2010-4-1 15:25:42 | 显示全部楼层
好创意,支持一下
发表于 2010-4-28 10:40:30 | 显示全部楼层
看看双进程保护。
发表于 2010-5-8 16:14:47 | 显示全部楼层
套用进程保护思路。进行中……
发表于 2010-5-10 16:41:40 | 显示全部楼层
太有创意了  不过双进程保护是好东西 哈哈
发表于 2010-5-10 17:03:36 | 显示全部楼层
还是建议用配置文件,不然游戏那么多,多少个IF。
发表于 2010-6-11 10:06:47 | 显示全部楼层
回复 10# lin0308


    支持
发表于 2010-7-27 21:09:11 | 显示全部楼层
学习了!楼主很强大!
发表于 2010-7-29 13:38:00 | 显示全部楼层
很强大、利用双进程保护的思想很不错。但是要是用批处理同时结束怎么办呢?
发表于 2010-7-31 13:43:05 | 显示全部楼层
列表怎么写呢?
发表于 2010-9-2 18:01:01 | 显示全部楼层
简单而又详细的代码,思路很清晰
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-26 20:15 , Processed in 0.081895 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表