注册表文件解析完整解决方案
UESTC 鹿剑
开始是看大米的那个增删改方案,不过,由于好多GUI处理干扰,头很大,最后到网上找到了下面这个库,大米那个其实就是基于这个改写的,最近要用到这个,所以好好看了看,做了良好的封装,支持几乎所有操作:
枚举子键、枚举键值,修改、删除、增加键值、子键,关键是接口良好,移植使用相当方便,就算不懂注册表格式的程序员移植也很简单。
注册表格式虽然已经可以找到相对完整资料,但是自己来解析的话难度还是有难度,现今比较完整的资料都是英文,这个对于英文不太好的同学来说是个不小的挑战,另外要读懂那些资料然后自己写出完整代码来也不是一件容易的事,最简单的做法就是在前人的代码上来进行二次开发。网上比较完整的资料就是这个了:
NTREG - Window registry file reader / writer library
作者是 Petter Nordahl-Hagen.
下载地址可以使用谷歌搜索引擎来获取,输入关键字Ntreg.h之后前几页都是,请不要使用百度,然后找不到时问我要下载地址,相信外事问谷歌,内事问百度这句话你还是知道的。下载回来之后一般直接编译成静态库就可以了,附件里有我编译好的静态库。原作者的代码是使用运行时C写的,所以在使用时请使用extern “C” 包含头文件。废话不多说,接下来正式编程,首先遇到的问题是访问被系统独占的文件,XP下可以枚举系统句柄表,DuplicateHandle句柄过来,原因就是xp下可以用复制句柄权限打开system进程,到了Windows7下就完全不行了,用复制句柄权限无法打开system进程(我很意外,为什么资源监视器还是能看到system进程打开的文件呢?自己逆向水平太差了,没本事去分析资源监视器,还望高手指点一二^_^),所以为了通用,我写了一个驱动来实现句柄权限修改,都到了驱动,可以访问注册表文件的方法很多了,直接使用驱动读写文件等等,我之所以选择修改句柄权限的方法是因为方法稳定,比较简单,首先获取进程句柄表,遍历句柄表,找到目标句柄,修改权限,为了通用(其实是我也真的不知道到底那个权限域和SDK里面的权限对应关系),用户态传入两个句柄,目标句柄会获取到源句柄相同的访问权限,这样就不需要关心在各个系统下SDK里面的权限和句柄对象权限的对应关系了,我也没有能力像别人一样实现句柄表的手工解析,资料倒是很多,读起来头大,我又比较懒,所以使用系统提供的ExEnumHandleTable函数了,一句足以搞定,手动解析还要分层次,麻烦。驱动代码大致如下:
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
