频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

5.4 案例研究:NTDLL.DLL中的Generic Table API

作者: [美]Eldad Eilam 著 韩琪 等译 出处:电子工业出版社博文视点  2008-01-07 08:47    砖    好    评论   进入论坛
阅读提示:《Reversing:逆向工程揭密》第五章主要讨论的是为获得互操作性的逆向工程。并通过演示相对比较极端的案例剖析API中的各个函数。本文主要介绍的是案例研究:NTDLL.DLL中的Generic Table API。

5.4  案例研究:NTDLL.DLL中的Generic Table API

现在我们就进入我们的第一个逆向工程任务吧!在这个任务中我们将以一组未公开的Windows API函数为例进行分析,直到我们能够在自己的代码中使用这些APIs。实际上,为了证明这一想法是确实可行的,我还特意写了一个使用这些APIs的小程序。当然,我写这一章的目的不是教大家怎样使用这些特定的API,而是向大家生动地演示如何对真实的代码实施逆向工程。

这一章我们选择generic table API函数进行逆向。这组API是Windows本地API(Native API)的一部分。(至于什么是Windows本地API,请参见第3章)。

在系统本地API中有很多冠以不同前缀的API函数组。在本例中,我们选择RTL组中的一个函数集合。这组运行库函数不是用来与操作系统通信的而是作为提供操作系统最常见服务的一个工具包而存在的,这些最常见的服务包括字符串处理、数据管理,等等。

一旦你锁定generic table API,下一步就该通览一下NTDLL.DLL的导出表(generic table API是在NTDLL.DLL中实现的)以便找到所有可能的相关函数。在本例中任何以Rtl开头并涉及generic table的函数都是我们可能感兴趣的。在用DUMPBIN(见第4章关于DUMPBIN一节的内容)转储了NTDLL.DLL的导出表之后,根据上面的要求,我们得到了如下的函数列表:

如果你自己做一下,并观察NTDLL.DLL的导出表,你可能会注意到上面绝大多数API函数还有一个带Avl后缀的版本,所以实际的generic table API函数组比上面列出来的还要大,我们只是为了方便讨论而有意忽略了一些基本重复的函数。

译注:“generic table”指的是一种通用数据类型的数据结构,本章大部分的篇幅都是在研究这是一种什么样的数据结构,是链表?还是二叉树?还是……还是留给你去寻找答案吧。鉴于此,译者保留了原文中出现“generic table”和“table”,未作翻译。

我们根据函数名做一点基本的猜测:显然这是一组用于管理某种通用链表的函数(通用就是意味着链表中的每一个成员可以是任何一种类型的数据)。有一些API是用来进行插入、删除及查找一个链表中的成员的。RtlNumberGenericTableElements API可能是用于返回链表中成员总数的。而RtlGetElementGenericTable则很可能是用来按索引来访问链表中特定成员的。在你开始使用这个通用表单之前,很可能要用RtlInitializeGenericTable来初始化某种根数据结构。

一般来说,逆向工程都是从数据开始的——你必须找到代码管理的关键数据结构。有鉴于此,我们从RtlInitializeGenericTable开始是个不错的主意。我们希望从中找到破译通用表单的数据结构的线索。

就像我已经解释过的,我们下面会仅对代码进行逐行分析,而不是动态调试它。如果你还是想要在一个调试器中分析generic table的代码,你可以使用我自己根据对generic table API的逆向工程结果写的名为GenericTable.EXE的小程序。如果你没有这个小程序,那么你可能只有依靠静态分析来进行分析了,当然你还是可以试着找一找其他使用这组API的代码。我大致搜索了一把,我发现使用这组API的代码只出现在Windows内核模式的代码中,而在用户态运行的代码中我还没有找到类似符合条件的代码。(generic table也是在Windows内核中的一个内核态的实现)GenericTable.EXE可以在本书的网站www.wiley. com/go/eeilam上下载。

下面几节里我们分别深入研究generic table API中的每一个重要的函数,并展示每个函数的内部实现细节。你也许会注意到,我会钻研得比较深,比破解必要的实现细节更深入一些。这主要是为了向大家展示高级的逆向工程技巧的威力,如果这是一个真实的为了使用generic table API而进行的逆向工程,你可能在获得必要的信息后,就会停止有关逆向工程的工作。但这次,为了展示高级逆向工程技巧,我们要搞清楚generic table数据结构的细节。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
专题
网络工程师职业规划与现状
艰难的WAPI标准之路
网络工程师快速的成长路线
综合布线工程案例
软件工程与管理
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
世纪枭雄比尔盖茨的王者传奇
世纪枭雄比尔盖茨的王者传奇
虚拟化技术还有点“虚”
虚拟化技术还有点“虚”
ASP.NET开发教程
ASP.NET开发教程
· ASP.NET开发教程
· 专题:ASP.NET 2.0基础..
· LAMP技术精解
· 服务器节能与绿色IT
· ARP攻击防范与解决方案
· Linux 集群技术专题
· Windows集群服务应用
· CISSP认证成长之路
· SQL Server 2008/2005..
· SQL Server入门到精通
· 网络工程师职业规划与..
· 浏览器的战国时代
· 运营商封堵ADSL共享 中..
· 微软出价446亿美元收购..
· 技术人求职简历完备手册
· 开源虚拟化技术Xen
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Apache技术专题
· Windows集群服务应用
· 国际文档格式标准开战
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
· 了解统一威胁管理(UTM)..
· 专题:AIX操作系统管理..
· 访问控制列表(ACL)介绍
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· 三层交换技术专题
· Apache技术专题
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用
· 访问控制列表(ACL)介绍
· ASP.NET开发教程
· PHP开发应用手册