惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
P
Palo Alto Networks Blog
月光博客
月光博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
aimingoo的专栏
aimingoo的专栏
腾讯CDC
T
Threatpost
D
DataBreaches.Net
Vercel News
Vercel News
F
Fortinet All Blogs
Engineering at Meta
Engineering at Meta
C
Cybersecurity and Infrastructure Security Agency CISA
Forbes - Security
Forbes - Security
U
Unit 42
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
O
OpenAI News
量子位
TaoSecurity Blog
TaoSecurity Blog
Microsoft Azure Blog
Microsoft Azure Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Visual Studio Blog
Recorded Future
Recorded Future
云风的 BLOG
云风的 BLOG
Security Archives - TechRepublic
Security Archives - TechRepublic
The Last Watchdog
The Last Watchdog
S
Security Affairs
Attack and Defense Labs
Attack and Defense Labs
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
小众软件
小众软件
S
SegmentFault 最新的问题
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
AI
AI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 聂微东
I
Intezer
Know Your Adversary
Know Your Adversary
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
博客园_首页
NISL@THU
NISL@THU
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - Samson小天

My researches during my college life. 一些底层的简单东西。 大年初一,总结一下去年的十大事件~ 解决多线程产生的“以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值” Guessing Game解题报告 (pku 2328) 分析一道08年10月12日的江苏省程序设计大赛正赛题 数学之美 C# 自定义实体类或集合的自动排序 UltraRun is released 简单的QQ游戏中大家来找茬外挂编写思路 最近写C++程序时关于GetLastError的感悟。 在Vista的UAC下检查程序是否具有Admin权限及应用程序的权限切换 从程序开发角度谈类的封装性。 教你如何解决“线程间操作无效: 从不是创建控件的线程访问它” C#中调用WIN32的API 小记delegate,简单的委托介绍 一个计算简单数学表达式值的算法。 string类型的初值不是随便赋的,记一次奇怪的访问冲突事件 对C#中ADO.NET开发的理解
IAT HOOK 实现进程保护
Samson小天 · 2009-05-13 · via 博客园 - Samson小天

这两天学校图书馆安了新的管理系统,把我一些常用的软件都禁用了。让我非常郁闷,用Ice Sword把管理软件结束进程的话,又会被服务端禁止上网。无奈之下研究了下如何保护进程。

多天的学习,发现进程保护有几种方法,一个是最简单的RING 3下的IAT HOOK,我们将系统的IAT表中的OpenProcess函数Hook住,就能实现对特定的进程保护起来。

这种方法只能对任务管理器和调用OpenProcess获取进程句柄的程序有效。如果是XP或者VISTA下的taskkill命令,这种方法是防不住的。这种情况下要用SSDT HOOK才行。SSDT只给大家提一下,本文并不深究,因为SSDT HOOK要驱动参与的。

那么现在我们来看看任务管理器是怎么结束进程的——Ring3下有一个函数叫TerminateProcess(HANDLE hProc , UINT uExitCode),后面那个参数无所谓,是退出时的返回值,前面那个参数是要结束的进程的句柄。

那么怎么获得这个进程的句柄呢?大多数程序是通过HANDLE OpenProcess(DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId),第二个参数没什么所谓,指的是句柄是否允许继承,没关系。第三个参数指的是要结束的进程的PID值。第一个参数指的是你希望获得的句柄具有哪些权限,也就是说当dwDesiredAccess & PROCESS_TERMINATE != 0时,这个句柄是具有结束进程权限的。

明白了这些后,我们可以用一个钩子,HOOKOpenProcess,我们判断调用方的第三个参数是不是我们的PID,如果不是就不用管,如果是,那么判断第一个参数是不是具有结束进程的权限,如果有,那么我们返回NULL,严谨一点还可以通过SetLastError函数设置一个错误信息。

程序截图:


接下来介绍下简单的源代码:

源代码分为2部分,程序采用Visual studio 2008,MFC、WIN32 DLL编写。一个是DLL部分,即要注入到系统的钩子,还有一个是界面程序部分。

附件中LibProcessProtector是DLL,ProcessProtector就是界面程序。

下载地址:

http://cid-856b7a1fbf560755.skydrive.live.com/self.aspx/My%20free%20softwares/ProcessProtecter.rar

版权声明:CAPI类的封装是由Jeffery richter在《windows via c/c++》中提供的。