我的知识记录

digSelf

C/C++逆向

C++逆向:浅谈C++的虚函数机制

C++逆向:浅谈C++的虚函数机制

虚函数是cpp中的一个重要的知识点,比较晦涩难懂。本文对cpp中的虚机制进行了简要的剖析,利用简单的代码示例,逐一对虚指针、虚表结构、虚指针的填充时机及虚函数的调用进行了分析...
2938
0
2022-01-29
C++逆向:对main函数的分析和识别

C++逆向:对main函数的分析和识别

在我们学习用C/C++写程序的时候,书上说main函数是程序执行的起点。那么实际上是这样的吗?让我们解开main函数的神秘的面纱吧。本文介绍的是VC6中的main函数在反汇编中的识别和定位的方法,对于高版本的,如:VS2019的main函数在反汇编的识别和定位可以作为作业自己完成,具体的方法与本文所示的方法是一致的。
3063
0
2021-09-02
C++逆向:基本数据类型在内存中的表现形式的分析

C++逆向:基本数据类型在内存中的表现形式的分析

在C++中分为基本数据类型(Primitive Data Types)、导出数据类型(Derived Data Types)以及用户自定义的数据类型(User-Defined Data Types),这些数据类型在内存中的表现形式是各不相同的,对于编码人员与逆向分析人员掌握其在内存中的表现形式在实际工作中是十分重要的。本篇主要着重于基本数据类型在内存中的表现形式,其余两个数据类型再另起一篇文章来进行分析和讨论。
2552
0
2021-09-02
C++逆向:循环结构的分析、识别与还原

C++逆向:循环结构的分析、识别与还原

循环结构是程序设计的三大结构之一,搞清楚它在反汇编下的代码特征对于逆向工程来说是非常重要的。对于`C/C++`来说,循环结构常见的有三种类型:`for`,`while`和`do...while`。本文会分析这三种情况分别在`VS2019`的`MSVC`或`VC6`的`MSVC`采用速度最快的优化选项后的表现形式及其还原方法
2707
0
2021-09-01
C++逆向:选择结构的分析、识别与还原

C++逆向:选择结构的分析、识别与还原

结构化程序设计的三大结构,分别是:顺序结构、选择结构和循环结构。这三种基本结构可以任意组合,形成多姿多彩的程序世界。在这其中的顺序结构是按照代码编写的顺序逐步执行;而选择结构打断了这种顺序,让程序支持了逻辑条件。因此,可以识别与还原选择结构对于C/C++逆向工程是非常重要的。
2532
0
2021-08-31
C++逆向:表达式生成汇编与表达式优化机制

C++逆向:表达式生成汇编与表达式优化机制

在学习和研究C++的编译器的工作原理时,一定要学习和了解的就是如何将一串表达式运算转换为对应的汇编以及在转换过程中,是否能进行优化以使得要么满足空间的需求,要么满足速度的需求...
2447
0
2021-08-25
C++逆向:除法的非常规优化及其识别与还原

C++逆向:除法的非常规优化及其识别与还原

本文涉及到的是除法的f非常规优化方法,包括:MagicNum溢出的情况和有符号数除以非2的幂的两种特殊情况。测试环境与编译选项均与上一篇常C/C++除法的常规优化及其识别与还原的情况相同。...
2470
0
2021-08-21
C++逆向:除法的常规优化及其识别与还原

C++逆向:除法的常规优化及其识别与还原

本文涉及到的是除法的一般优化方法,其中特殊情况暂时不列举,涉及的知识点包括除以2的幂以及除以非2的幂的常规情况...
2956
0
2021-08-20
C++逆向:switch-case逆向分析与还原

C++逆向:switch-case逆向分析与还原

switch-case的效率为什么在某些条件下会比if-else效率高,而不是在什么时候都会比if-else效率高呢?通过研究switch-case的原理就可以得到上述问题的答案...大纲case的数量小于等于3个,且case值连续case的数量大于3个,但case值较为连续,即:最大case值和最
2466
1
2021-08-07