看你的意思,主要是不想让程序A被修改,那么以下情况给你参考吧:
1、在当前的win中,程序A被系统加载并运行后,会有一部分基本上是固定不变的,这主要是代码区,还有一部分是根据需要不停地变的,这是变量区,及其它缓冲区。
2、如果你想的是让代码区不被改动,这个要求很容易达到,因为它是固定的,你只要把这个区域的数据时行一下MD5码的计算,或是使用更快速的某种方法进行一次校验便可。但是基本上你要进行一次完全校验,占用的时间一定是不短的(至少1秒以上),这种做法能保护程序的应有功能不被乱改,但不能保证变量不变乱改。此外相当的低效,很少有人这么做。
3、监视程序的启动,一旦启动把自己的dll hook进去 并拦截teProcessMemory API 看起来是有理的,但存在这样几个问题,首先这种程序一定需要管理员权下才能正常运行,其次,程序X可不可以先对付程序B,再对付程序A呢? 另外,程序B一但起动,某些正常的程序也可能受影响,比如金山快译等。
4、最常见的做法是针对程序X的行为对关键部分的代码进行监控,这样监控的范围就能大大地减少,可以达到001秒内完成任务,使用户不会感觉到什么,但这样做的前提是知道程序X的行为具体是什么。
5、其它的通用的做法是针对程序X的特点在内存现运行的程序中进行查找,一但发现进行处理。
6、以上两个方法是最常用的做法。
7、破解与反破解始终是一对死冤家,在当前来说,似乎没有好的解决方法,只能说设法让破解的难度加大!
PS:“程序运行后如何md5效验,这不开玩笑吗?”不是开玩笑,MD5码校验并不专指对一个未运行的文件,MD5码校验是一种算法。将内存中的数据抓出来进行MD5码计算也并不是不可以的,当然,上面说过了,这种计算对机器要求过高,在实时运行中是不科学的,也是不可取的。
APP-2每1分钟发一个心跳包给APP-1。APP-1如果超过1分钟没收到,可以累计记录x++,收到心跳包x清零。当x=2时,可以发送一个ack包给APP-2,如果APP-2还是没有回应,即x=3时,可以确定APP-2down掉。x在1~3直接时是网络阻塞。具体 *** 作时间还需要自行确定。
以记事本为例
Public Class Form1
Public Sub ShellAndWait(ByVal ProcessPath As String)
Dim objProcess As SystemDiagnosticsProcess
Try
objProcess = New SystemDiagnosticsProcess()
objProcessStartInfoFileName = ProcessPath
objProcessStartInfoWindowStyle = ProcessWindowStyleNormal
objProcessStart()
objProcessWaitForExit()
objProcessClose()
Catch
MessageBoxShow("无法执行文件 " & ProcessPath, "错误")
End Try
End Sub
'监视程序就可以了,若果监视别的窗体的话,用SPY++ 找到句柄,配合FindWindowEx,SendMessage根据其属性做
Private Sub Button1_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles Button1Click
ShellAndWait("Notepadexe")
MessageBoxShow("笔记本被关闭后我才会出现")
End Sub
End Class
1启用Win7审核策略
Win+R打开运行,输入“gpeditmsc”,回车运行,打开组策略编辑器。
2依次找到“计算机配置”-“Windows设置”-“安全设置”-“本地策略”-“审核策略”,从右边细节窗口中,打开“审核对象访问”。
以上就是关于关于监控一个指定的exe程序全部的内容,包括:关于监控一个指定的exe程序、c语言编程,一个应用程序如何判断另外一个被监控的应用程序的存活与否若用心跳实现,如何设置心跳机制、vb.net中如何设计一个监控程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)