逆向C++:解析二进制中的类与对象

需积分: 49 12 下载量 7 浏览量 更新于2024-08-01 收藏 1MB PDF 举报
"这篇文档是关于逆向C++的详细指南,由Paul Vincent Sabanal和Mark Vincent Yason撰写,Hannibal509@gmail.com翻译。文档介绍了如何手动和自动化地分析C++编译后的二进制代码,以识别类、构造函数、析构函数、多态性、类关系以及成员变量。它强调了随着C++在应用程序和恶意软件开发中的广泛使用,逆向工程的重要性日益增加。" 逆向C++是逆向工程领域的一个关键技能,因为许多现代软件,尤其是恶意软件,使用C++进行编写。在反汇编过程中,理解和解析C++的面向对象特性,如类、构造函数、析构函数、运行时类型信息(RTTI)和多态性,变得至关重要。 I. 引言和必要性部分指出,逆向工程师需要识别二进制文件中的C++结构,包括类、继承关系和成员,以便理解程序的工作原理。这需要识别类、类关系和成员变量的能力。 II. 手工方法详细阐述了识别C++特性的步骤。这部分包括: - A. 识别类及其构造函数,这是理解对象创建和初始化的关键。 - B. 进一步探讨了如何识别构造函数和析构函数,以及利用RTTI识别多态类。 - C. 通过分析构造函数和RTTI来判断类与类之间的关系。 - D. 辨别类的成员,这是理解对象行为的基础。 III. 自动化部分介绍了名为OOP_RE的自动化工具,讨论了为什么选择静态分析,以及采用的不同策略和算法,如利用RTTI和虚函数表识别多态类,通过搜索构造/析构函数识别类,以及识别继承关系和成员变量。这部分还提到了结果的可视化,如生成UML图,以帮助理解程序结构。 IV. 小结部分总结了整个过程,强调了学习逆向C++的重要性和应用价值,特别是在应对越来越多的C++恶意软件分析时。 这篇文档提供了从基础到高级的逆向C++技术,旨在帮助读者提升逆向工程能力,以应对日益复杂的软件逆向挑战。通过手动分析和自动化工具的结合,逆向工程师可以更有效地理解并解构C++程序,这对于安全分析、漏洞挖掘和软件调试等领域都具有重要意义。
2012-09-03 上传
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《游戏编程精粹8》一书的随书光盘代码:共两部分,这是第2部分 游戏编程精粹8 基本信息 中文名: 游戏编程精粹8 原名: Game Programming Gems 8 作者: Adam Lake 图书分类: 软件 资源格式: PDF 版本: 插图版 出版社: Course Technology 书号: 1584507020 发行时间: 2010年03月01日 地区: 美国 语言: 英文 内容简介 本书为《Game Programming Gems》系列的第八卷。在这一版当中,我们将广泛地探讨重要的实时图形方面,如Larrabee, PlayStation 3, 以及DirectX 11计算着色器。此外在本书中, 处在第一线的业内顶级开发商如:Blizzard,id, Bizarre Creations, Nexon,以及Intel's Advanced Visual Computing group,还分享了他们如何以最佳的方式利用图形硬件为游戏创建高品 质视觉效果的真知灼见。 目录 Face -15 Contents -12 Preface -6 Contributors -1 Section 1 Graphics 1 Introduction 1 1.1 Fast Font Rendering with Instancing 3 1.2 Principles and Practice of Screen Space Ambient Occlusion 12 1.3 Multi-Resolution Deferred Shading 32 1.4 View Frustum Culling of Catmull-Clark Patches in DirectX 11 39 1.5 Ambient Occlusion Using DirectX Compute Shader 50 1.6 Eye-View Pixel Anti-Aliasing for Irregular Shadow Mapping 74 1.7 Overlapped Execution on Programmable Graphics Hardware 90 1.8 Techniques for Effective Vertex and Fragment Shading on the SPUs 101 Section 2 Physics and Animation 119 Introduction 119 2.1 A Versatile and Interactive Anatomical Human Face Model 121 2.2 Curved Paths for Seamless Character Animation 132 2.3 Non-Iterative, Closed-Form, Inverse Kinematic Chain Solver (NCF IK) 141 2.4 Particle Swarm Optimization for Game Programming 152 2.5 Improved Numerical Integration with Analytical Techniques 168 2.6 What a Drag: Modeling Realistic Three-Dimensional Air and Fluid Resistance 183 2.7 Application of Quasi-Fluid Dynamics for Arbitrary Closed Meshes 194 2.8 Approximate Convex Decomposition for Real-Time Collision Detection 202 Section 3 AI 211 Introduction 211 3.1 AI Level of Detail for Really Large Worlds 213 3.2 A Pattern-Based Approach to Modular AI for Games 232 3.3 Automated Navigation Mesh Generation Using Advanced Growth-Based Techniques 244 3.4 A Practical Spatial Architecture for Animal and Agent Navigation 256 3.5 Applying Control Theory to Game AI and Physics 264 3.6 Adaptive Tactic Selection in First-Person Shooter (FPS) Games 279 3.7 Embracing Chaos Theory: Generating Apparent Unpredictability through Deterministic Systems 288 3.8 Needs-Based AI 302 3.9 A Framework for Emotional Digital Actors 312 3.10 Scalable Dialog Authoring 323 3.11 Graph-Based Data Mining for Player Trace Analysis in MMORPGs 335 Section 4 General Programming 353 Introduction 353 4.1 Fast-IsA 355 4.2 Registered Variables 363 4.3 Efficient and Scalable Multi-Core Programming 373 4.4 Game Optimization through the Lens of Memory and Data Access 385 4.5 Stack Allocation 393 4.6 Design and Implementation of an In-Game Memory Profiler 402 4.7 A More Informative Error Log Generator 409 4.8 Code Coverage for QA 416 4.9 Domain-Specific Languages in Game Engines 428 4.10 A Flexible User Interface Layout System for Divergent Environments 442 4.11 Road Creation for Projectable Terrain Meshes 453 4.12 Developing for Digital Drawing Tablets 462 4.13 Creating a Multi-Threaded Actor-Based Architecture Using Intel® Threading Building Blocks 473 Section 5 Networking and Multiplayer 485 Introduction 485 5.1 Secure Channel Communication 487 5.2 Social Networks in Games: Playing with Your Facebook Friends 498 5.3 Asynchronous I/O for Scalable Game Servers 506 5.4 Introduction to 3D Streaming Technology in Massively Multiplayer Online Games 514 Section 6 Audio 539 Introduction 539 6.1 A Practical DSP Radio Effect 542 6.2 Empowering Your Audio Team with a Great Engine 553 6.3 Real-Time Sound Synthesis for Rigid Bodies 563 Section 7 General Purpose Computing on GPUs 573 Introduction 573 7.1 Using Heterogeneous Parallel Architectures with OpenCL 575 7.2 PhysX GPU Rigid Bodies in Batman: Arkham Asylum 590 7.3 Fast GPU Fluid Simulation in PhysX 602 Index 616 A 616 B 616 C 617 D 618 E 618 F 619 G 619 H 619 I 619 J 620 K 620 L 620 M 620 N 621 O 622 P 622 Q 623 R 623 S 623 T 624 U 625 V 625 W 625 X 625 Y 625 Z 625