如何禁止某个程序运行(50)

  • 主题发起人 主题发起人 siaosa
  • 开始时间 开始时间
S

siaosa

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何禁止某个程序被装入内存并禁止它运行? (注意:是不运行某个程序,而不是运行了之后再终断掉程序)1.注意是禁止被装入内存和禁止运行. 不是已经运行了再把它终断掉, 是不运行某个程序2.不能修改注册表和组策略
 
不知我的系统是什么,XP, 2003在组策略中可以设置系统不运行那个程序(.EXE)
 
我想通过程序实现,就是自己做一个后台服务,只要系统准备运行exe,就判断是否运行运行就是不知道怎么获取系统准备运行exe的消息
 
1: 用安全策略:http://blog.csdn.net/zp_mouse/archive/2009/02/12/3880482.aspx2:利用ShellExcuteHook:http://msdn.microsoft.com/en-us/library/bb775101(VS.85).aspxhttp://www.2ccc.com/article.asp?articleid=18933:最安全的,用IFSHook,但难度大些,反病毒软件都差不多用这个
 
var RegTemp : TRegistry; i : Integer;begin RegTemp := TRegistry.Create; Try RegTemp.RootKey := HKEY_CURRENT_USER; if Not RegTemp.KeyExists('Software/Microsoft/Windows/CurrentVersion/Group Policy Objects/本地User/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer') Then RegTemp.CreateKey('Software/Microsoft/Windows/CurrentVersion/Group Policy Objects/本地User/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer'); if RegTemp.OpenKey('Software/Microsoft/Windows/CurrentVersion/Group Policy Objects/本地User/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer', False) Then Begin RegTemp.WriteBool('DisallowRun',True); RegTemp.CloseKey; End; if Not RegTemp.KeyExists('Software/Microsoft/Windows/CurrentVersion/Group Policy Objects/本地User/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/DisallowRun') Then RegTemp.CreateKey('Software/Microsoft/Windows/CurrentVersion/Group Policy Objects/本地User/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/DisallowRun'); if RegTemp.OpenKey('Software/Microsoft/Windows/CurrentVersion/Group Policy Objects/本地User/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/DisallowRun', False) Then Begin RegTemp.WriteString('**delvals.', ' '); i :=0; Repeat i := i+1; Until RegTemp.ReadString(IntToStr(i))=''; RegTemp.WriteString(IntToStr(i), '要禁止运行的程序文件名'); RegTemp.CloseKey; End; if RegTemp.OpenKey('Software/Microsoft/Windows/CurrentVersion/Policies/Explorer', False) Then Begin RegTemp.WriteBool('DisallowRun',True); RegTemp.CloseKey; End; if Not RegTemp.KeyExists('Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/DisallowRun') Then RegTemp.CreateKey('Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/DisallowRun'); if RegTemp.OpenKey('Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/DisallowRun', False) Then Begin i :=0; Repeat i := i+1; Until RegTemp.ReadString(IntToStr(i))=''; RegTemp.WriteString(IntToStr(i), '要禁止运行的程序文件名'); RegTemp.CloseKey; End; Finally RegTemp.Free; End;
 
不想用修改注册表或者组策略的方式,这些方式很容易被用户修改。还有别的什么方法没有啊
 
'要禁止运行的程序文件名'...若我修改程序名 你的代码顶鸟用.
 
来自:Kingron, 时间:2010-1-15 9:32:09, ID:3986188试试这个
 
定时判断进程中有没有,如果有就杀掉进程
 
To:buir 可以从exe的 文件名+HAS码 来判断的,即使改名也不怕To:husion 你发的什么东东啊?空的To:李翔鹏 如果判断进程里有没有,这个时候程序已经被运行了.我想exe在load时就限制住暂停exe的执行
 
“可以从exe的 文件名+HAS码 来判断的,即使改名也不怕”末尾或者头改掉一bit,完事了。
 
To:白河愁 一般的用户还是不知道怎么修改EXE文件的 有什么办法可以实现这种禁止程序运行的需求啊?
 
现在这里越来越冷清了,以后好热闹的,一个问题一天就能得到回复解决
 
[:D]你这个要求只能在r0下实现
 
ring hook createprocess
 
To:mosker 可以说下怎么做吗?没接触过这方面的东西 如果分不够可以加分 如果有相关的例子请发到我邮箱: tonny2003@163.com 谢谢了
 
自己顶一下
 
就象楼上有人说的,你没有办法准确判断那个就是你要禁用的程序。如果你觉得你的判断够用了,那可以写API勾子,把createprocess等API拦截,插入你的代码判断通过后才继续执行。至于全局API Hook怎么搞,驱动程序怎么写,这就你自己要google或baidu一下了,相信很多例子可以用。
 
xianjun 我已经在google和baidu上看了,没一个能用的
 
我有 全局API Hook 驱动程序 例子可以实现你的功能
 
后退
顶部