开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 13628|回复: 72
收起左侧

[易源码分享] 【升级】易语言文件解锁(关闭句柄法)

[复制链接]

结帖率:100% (4/4)
发表于 2019-5-1 13:45:39 | 显示全部楼层 |阅读模式   四川省宜宾市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -

前言

正文

  • 对于怎么枚举文件句柄,上一帖子对此有介绍,核心代码大概如下:
    如果 (ZwQueryObject (handle, #ObjectTypeInformation, unicode, 0, size) ≠ #STATUS_INVALID_HANDLE )  ' 只要不是无效的,为什么,详细看下面的注释
    ' 参数
    ' Handle
    ' 对象的一个句柄来获取信息。
    ' ObjectInformationClass
    ' 指定一个OBJECT_INFORMATION_CLASS返回值的类型决定了信息在ObjectInformation缓冲区。
    ' ObjectInformation
    ' 一个指向caller-allocated缓冲接收请求的信息。
    ' ObjectInformationLength
    ' 指定的大小,以字节为单位,ObjectInformation缓冲区。
    ' ReturnLength
    ' 一个指向变量的指针,接收的大小,以字节为单位,请求的关键信息。如果NtQueryObject STATUS_SUCCESS返回,返回的变量包含的数据量。如果NtQueryObject返回STATUS_BUFFER_OVERFLOW或STATUS_BUFFER_TOO_SMALL,您可以使用变量的值来确定所需的缓冲区大小。
    ' 返回值
    ' NtQueryObject返回STATUS_SUCCESS或适当的错误状态。可能的错误状态码包括以下:
    ' 返回代码 描述
    ' STATUS_ACCESS_DENIED
    ' 有足够的权限来执行该cha询。
    ' STATUS_INVALID_HANDLE
    ' 提供对象句柄无效。
    ' STATUS_INFO_LENGTH_MISMATCH
    ' 信息长度不足以容纳数据。
    unicode = 取空白字节集 (size)
    ZwQueryObject (handle, #ObjectTypeInformation, unicode, size, 0)  ' 读取信息的unicode文本
    RtlUnicodeStringToAnsiString (ansi, unicode, 真)  ' 编码转换
    ' RtlUnicodeStringToAnsiString例程将给定Unicode字符串转换成一个ANSI字符串。
    str = 指针到文本 (ansi.Buffer)
    ' RtlFreeAnsiString常规版本存储由RtlUnicodeStringToAnsiString分配。
    ' 参数
    ' AnsiString
    ' 指针ANSI字符串缓冲区由RtlUnicodeStringToAnsiString以前分配的。
    RtlFreeAnsiString (ansi)
    str = “无法获取”  ' 无效的怎么获取……
    返回 (str)
  • 这一次呢更新了一个RemoteCloseHandle,大概的原理是什么呢?

流程1.png

  • 同时也采用了一些比较骚的方法,这种方法的限制较多,但是对于32位进程就很有效果。

流程2.png
背景.png
结果.png
  • NtClose在MSDN的大概介绍
1. NtClose is a generic routine that operates on any type of object.
2. Closing an open object handle causes that handle to become invalid. The system also decrements the handle count for the object and checks whether the object can be deleted. The system does not actually delete the object until all of the object's handles are closed and no referenced pointers remain.
3. A driver must close every handle that it opens as soon as the handle is no longer required. Kernel handles, which are those that are opened by a system thread or by specifying the OBJ_KERNEL_HANDLE flag, can be closed only when the previous processor mode is KernelMode. This requirement applies both to system threads and to dispatch routines for IRPs that were issued from kernel mode. (For more information about the previous processor mode, see ExGetPreviousMode.) For example, a handle that NtCreateKey returns to a DriverEntry routine cannot subsequently be closed by the same driver's dispatch routines. A DriverEntry routine runs in a system process, whereas dispatch routines usually run either in the context of the thread issuing the current I/O request, or, for lower-level drivers, in an arbitrary thread context.
4. A nonkernel handle can be closed only if one of two conditions is met: The previous processor mode is KernelMode, or the calling thread has sufficient permission to close the handle. An example of the latter occurs when the calling thread is the one that created the handle.
5. Callers of NtClose should not assume that this routine automatically waits for all I/O to complete prior to returning.

1. NtClose是一个在任何类型的对象上运行的通用例程。
2. 关闭打开的对象句柄会导致该句柄无效。系统还会减少对象的句柄计数,并检查是否可以删除该对象。在关闭所有对象的句柄并且不保留引用的指针之前,系统实际上不会删除该对象。
3. 一旦不再需要句柄,驱动程序必须关闭它打开的每个句柄。内核句柄是由系统线程打开或通过指定OBJ_KERNEL_HANDLE标志的句柄,只有在先前的处理器模式为KernelMode时才能关闭。此要求适用于系统线程和分配从内核模式发出的IRP的例程。 (有关先前处理器模式的更多信息,请参阅ExGetPreviousMode。)例如,NtCreateKey返回到DriverEntry例程的句柄随后不能由相同的驱动程序的调度例程关闭。 DriverEntry例程在系统进程中运行,而调度例程通常在发出当前I / O请求的线程的上下文中运行,或者对于较低级别的驱动程序在任意线程上下文中运行。
4. 只有满足以下两个条件之一时,才能关闭非内核句柄:先前的处理器模式是KernelMode,或者调用线程有足够的权限来关闭句柄。当调用线程是创建句柄的线程时,会发生后者的示例。
5. NtClose的调用者不应该假设此例程在返回之前自动等待所有I / O完成。

  • 增加命令
增加命令 备注 参数
RemoteCloseHandle1 远程关闭句柄,基本通吃 ProcessId和Handle
RemoteCloseHandle2 NtClose法,不支持64位进程! ProcessId和Handle

结尾语

最后还是那句老话:源码回复下载!!

最后说一句:如果你觉得可以的话,请:

附件下载:


扫描进程占用.zip (717.66 KB, 下载次数: 507)

评分

参与人数 4好评 +4 精币 +11 收起 理由
易语言资源网 + 1 + 5 支持开源~!感谢分享
ffsfdsa + 1 + 2 支持开源~!感谢分享
a135123 + 1 + 2 新技能已get√
就是那个秋 + 1 + 2 感谢发布原创作品,精易因你更精彩!

查看全部评分


本帖被以下淘专辑推荐:

  • · 精品|主题: 114, 订阅: 10
结帖率:100% (1/1)

签到天数: 9 天

发表于 5 天前 | 显示全部楼层   浙江省温州市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 4 天

发表于 2024-8-21 18:02:38 | 显示全部楼层   江苏省泰州市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2024-6-20 03:43:27 | 显示全部楼层   贵州省遵义市
正好需要这个试试
回复 支持 反对

使用道具 举报

发表于 2024-6-15 23:05:48 | 显示全部楼层   湖北省十堰市
易语言文件解锁(关闭句柄法)
回复 支持 反对

使用道具 举报

签到天数: 13 天

发表于 2024-4-7 23:24:06 | 显示全部楼层   河北省石家庄市
支持开源
回复 支持 反对

使用道具 举报

签到天数: 14 天

发表于 2023-11-17 07:49:55 | 显示全部楼层   山东省临沂市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 5 天

发表于 2023-10-26 00:04:57 | 显示全部楼层   河南省商丘市
看看6666666666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:17% (5/30)
发表于 2023-10-12 17:42:11 | 显示全部楼层   四川省成都市
666666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2023-1-27 00:28:54 | 显示全部楼层   广东省佛山市
学习感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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