VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1186|回复: 4

[求助] HOOK ExitProcess 问题

[复制链接]
42_avatar_middle
在线会员 发表于 2016-7-8 10:40:37 | 显示全部楼层 |阅读模式
3驿站币
如何使用detours或者直接勾住ExitProcess/TerminateProcess API 使其进程无法自动终止?!
搞了2天了,能勾住其他API函数,就是不能勾住ExitProcess/TerminateProcess 。。

最佳答案

查看完整内容

ExitProcess 是結束本進程 由本進程 調用 你hook掉 ExitProcess就沒用了 不過你可能是想 不讓其他進程 結束掉自己的 進程 如果是這樣 hook ExitProcess 就沒用了 (如果你是想讓 進程不自己結束 這可能沒意義 它不一定是調用了 ExitProcess TerminateProcess結束自己 直接退出主線程 進程就結束了 不需要調用ExitProcess TerminateProcess 如果某個程序sb的 是通過 ExitProcess TerminateProcess 結束 你hook成功也不一定 有 ...




上一篇:如何在VS2010中实现类似易语言中超级列表框的功能
下一篇:关于数据库Update更新的问题
74_avatar_middle
在线会员 发表于 2016-7-8 10:40:38 | 显示全部楼层
ExitProcess 是結束本進程 由本進程 調用 你hook掉 ExitProcess就沒用了
不過你可能是想 不讓其他進程 結束掉自己的 進程 如果是這樣 hook ExitProcess 就沒用了
(如果你是想讓 進程不自己結束 這可能沒意義 它不一定是調用了 ExitProcess TerminateProcess結束自己
直接退出主線程 進程就結束了 不需要調用ExitProcess TerminateProcess
如果某個程序sb的 是通過 ExitProcess TerminateProcess 結束 你hook成功也不一定 有用 因為 一般在 結束前都會 停止邏輯 處理釋放資源 你強制使之不結束 也不會正常工作的)

TerminateProcess 一般是由其它進程 調用 結束掉 本進程  比如 其它進程為進程B 你的進程為A
被調用的TerminateProcess在 進程B的內存中 你如果是 hook的 進程A的 TerminateProcess 當然就沒用了
不過 win ring3環境下 每個進程的 運行環境都是獨立的
所以如果你期望進程不能被 TerminateProcess 掉 必須 為所有進程 都 hook掉TerminateProcess

一般這樣的操作 最好是 在ring0下 hook掉 內核代碼 然win7 及以後版本的 64位os 微軟加強了安全措施 驗證了內核完整 如果你hook內核掉 可能會被os自動修復 或 導致os重啟...
如果32位 下需要為不過同版本 寫好兼容代碼
如果非要在ring3下
方案一 你可以劫持系統中TerminateProcess實現的 dll 不過現代win系統(vista及以後版本) 對dll劫持進行了一些 安全措施 要劫持系統dll 需要 修改下註冊表 ...
方案二 將所有進程的 TerminateProcess 包括新啟進程的 TerminateProcess 都hook掉 (可以使用 SetWindowsHookEx 註冊個 全局的 鉤子)

评分

参与人数 1威望 +2 驿站币 +2 热心值 +3 收起 理由
51_avatar_small Syc + 2 + 2 + 3 赞一个!

查看全部评分

42_avatar_middle
ico_lz  楼主| 发表于 2016-7-8 14:52:13 | 显示全部楼层
首先,感谢楼上的详细回答。
我就是不想让某个程序被关闭,(运行运行着,突然就没了)。我的钩子都是SetWindowsHookEx。
如果按照一般思路该hook这个程序的哪个api?
小白,请多多指教,谢谢。
74_avatar_middle
在线会员 发表于 2016-7-9 00:03:27 | 显示全部楼层
Chigco.Orc 发表于 2016-7-8 14:52
首先,感谢楼上的详细回答。
我就是不想让某个程序被关闭,(运行运行着,突然就没了)。我的钩子都是SetW ...

這個沒什麼一般思路好hook 只能具體問題具體分析
你首先 應該調試下 看下 程序是為什麼結束掉的 之後 hook掉相關代碼
17_avatar_middle
online_supermod 发表于 2016-7-9 10:09:41 | 显示全部楼层
干掉进程有无数种方法,你本地HOOK ExitPro或TerProc只能防进程内部的
GetProcAddress(hKernel,"exitproc")...
WriteProc, \xC3

这样就干掉了内部直接调用的,write之前备份字节,不然自己正常的也关不了~~
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-7-19 23:29

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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