如何能在VB程序实现自身的进程保护
可以简单的避免任务管理器的结束
和逃脱cmd中的taskkill
应该最好是利用双进程保护吧。
但本身程序窗口已经隐藏了,无法使用findwindow获得窗口标题
各位大虾有什么办法实现双进程保护呢
再次多谢了
可以简单的避免任务管理器的结束
和逃脱cmd中的taskkill
应该最好是利用双进程保护吧。
但本身程序窗口已经隐藏了,无法使用findwindow获得窗口标题
各位大虾有什么办法实现双进程保护呢
再次多谢了
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long
Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long
Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPrivate Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 260
End TypeConst TH32CS_SNAPPROCESS = &H2Const TH32CS_SNAPmodule = &H8Private Type MODULEENTRY32
dwSize As Long
th32ModuleID As Long
th32ProcessID As Long
GlblcntUsage As Long
ProccntUsage As Long
modBaseAddr As Byte
modBaseSize As Long
hModule As Long
szModule As String * 256
szExePath As String * 1024
End Type
Dim i As Long
Private Sub Command1_Click() EndEnd SubPrivate Sub Form_Load() App.TaskVisible = False '不要在任务管理内显示
i = 0
End SubPrivate Sub Timer1_Timer() Dim ret As Long, lPid As Long
Dim isLive As Boolean
Dim Mode As MODULEENTRY32, Proc As PROCESSENTRY32
Dim hSnapshot As Long, hMSnapshot As Long
Dim sFilename As String
If Dir(App.Path + "\Stop.Flg") <> "" Then End '如果当前文件夹内存在stop.flg这个文件 则停止双进程保护
sFilename = App.Path + "\yourSoft.exe" '另一个进程的路径
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0)
Proc.dwSize = Len(Proc)
Mode.dwSize = Len(Mode)
lPid = ProcessFirst(hSnapshot, Proc)
Do While lPid <> 0
hMSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPmodule, Proc.th32ProcessID)
Mode.szExePath = Space$(256)
ret = Module32First(hMSnapshot, Mode)
If ret > 0 Then
If InStr(1, Mode.szExePath, sFilename, vbTextCompare) > 0 Then 'Mode.szExePath=进程路径
isLive = True '找到目标进程
CloseHandle hMSnapshot
Exit Do
End If
End If
CloseHandle hMSnapshot
lPid = ProcessNext(hSnapshot, Proc)
Loop
CloseHandle hSnapshot
If Not isLive Then
ShellExecute 0, "", sFilename, "-AUTO", "", 1 '如果目标进程不存在 则启动它
Debug.Print sFilename
End If
End Sub刚好前两天用到的你参考一下吧
至于老马的,都是加载驱动实现进程保护,但正因为如此,杀软都认为是病毒来看待!
不过还是感谢你们两个发的,还有老马的论坛。我昨天在上面已经注册了一个帐号,今天还没有成功验证,说发一个邮件,但邮件我还没有收到,我的帐号是fyjs-quan,可以帮我一下么,想在你的论坛看一下东西,或者灌灌水。
现在等待陈辉的回答了,他说有另一种方法,我很想知道他有什么方法,教教我吧,辉哥
不过,其他大虾如果有什么新招可以达到进程保护的,发出来给大家共享一下,就此感谢了
还有simon__sun你能详细一说吗,代码上有一个yourSoft.exe的文件,是不是要生成这样的文件,不过我把名字改成这个样子还是没有能双进程保护丫?所以我看都是麻烦您再详细一点了。(*^__^*) 嘻嘻
玩不转,没办法唉~~~
可以告诉你一招很阴的(对微软的有效,对其他软件无效)把进程名改成Winlogon.exe
就结束不掉了还有一种是双进程保护,不过很烦的,被结束掉以后程序的数据全部丢失,
能做到的只是被结束了自动重启而已(用来做绿坝不错)。
但如果只是对任务管理有效的进程保护,还有什么用处呢!可以用来欺骗一下小孩吧
至于程序被结束掉的数据全部丢失的问题,可以对程序的变量定义尽量少一点,或者用写入文件来缓存一下,启动的时候再读取,这个方法应该不错吧!
嘻嘻,我想要一个代码,望大虾成全,感谢!