第七下载是国内最新、最齐、最安全的软件下载基地!

关于我们最近更新热门排行

首页 入库 软件 游戏 安卓 MAC 文章 专题

新闻资讯软件应用软件教程 电脑百科编程开发操作系统游戏娱乐游戏攻略手机相关游戏视频
当前位置:首页 ›› 软件教程 ›› 如何使用HOOK技术防止进程被访问

如何使用HOOK技术防止进程被访问

2014-12-25 10:32   作者:佚名   来源:本站整理   浏览:244   评论:3  

在之前的一篇文章中,小编有跟大家提到过“通过HOOK方式来实现监控进程启动”的方法,接下来小编在这里就跟大家说说使用HOOK技术防止进程被访问。使用HOOK可以让进程不被访问,也就可以起到更加安全的效果。

同理可以监控进程结束 打开 我之前使用ssdt+inline的方式保护我自己的进程不被结束

但是显然太单薄了 这只能拦截r3的动作 以及r0直接使用ZWopenprocess的动作

一旦使用了更底层的 将无能为力

所以我尝试跟踪NTopenprocess来看看他到底怎么获取句柄的

一开始 我们就不通过ssdt + 服务号的方式了

使用windbg直接 u NTopenprocess

我们一直跟踪到 NTopenprocess+0x224的地方 发现这里是一个e8的call

我这里通过指令dd看到的代码是fefe7de8 各个机器可能不一样

但是末尾肯定是个e8

u看到的是

805c261c e87dfefeff call nt!ObOpenObjectByPointer (805b249e)

也就是说 这是call到ObOpenObjectByPointer这个函数

我记得之前有个函数是通过函数名取得地址的 但是我这里还是通过自己算到然后取出来的方式

e8这种call的规律是 自己的地址+代码地址+5=目标地址

也就是说这里 是0x805c261c+0xfffefe7d + 5,得到的是1805B249E

一个address是4个字节 也就是8个16位的数 所以最高的那个1 会溢出

也就是说会被无视掉,最终我们得到的是805B249E这个地址

这与windbg算到的地址是相同的 为了验证 我们u过去

u 805B249E

nt!ObOpenObjectByPointer:

805b249e 8bff mov edi,edi

805b24a0 55 push ebp

805b24a1 8bec mov ebp,esp

805b24a3 81ec94000000 sub esp,94h

好的 符号文件告诉我们这里确实是ObOpenObjectByPointer的地址

而我们通过逆向n多程序得到的经验告诉我们编译器喜欢在开头加上

mov edi,edi 来执行一次空操作 然后保存ebp 并将esp作为新的ebp

而这里也符合这个特征

额这里 这三个加一起 也是5个字节 如何修改 我上一篇也有写 参照着来就行了

ObOpenObjectByPointer的原型是:

NTSTATUS

ObOpenObjectByPointer

(

__in PVOID Object,

__in ULONG HandleAttributes,

__in_opt PACCESS_STATE PassedAccessState,

__in ACCESS_MASK DesiredAccess,

__in_opt POBJECT_TYPE ObjectType,

__in KPROCESSOR_MODE AccessMode,

__out PHANDLE Handle

);

第一个参数是一个指向一个EPROCESS类型的结构体的指针,

系统版本来获取进程pid成员所在偏移直接读出来就可以了

Tags:责任编辑:xinxl
    1. 管理工具管理工具

      进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,那么电脑应用进程开多了就会影响我们的电脑运行速度,第七下载提供了多款进程清理工具和管理软件...

    软件评论

    请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!

        登录   注册