C++逆向分析
文章平均质量分 87
揭秘C++底层机制
yeweiouyang
这个作者很懒,什么都没留下…
展开
-
前置和后置运算符
这是迅雷一问一答的题目:#include int main(void) { int a, b; a = 5; a = a + a++; printf("a = %d\n", a); a = 5; b = a + a++; printf("b = %d\n", b); return 0;}输出的结果是:反汇编过程:PUBL原创 2013-03-22 16:20:09 · 4473 阅读 · 2 评论 -
extern "C"的理解
extern "C"的引入是为了解决C++函数重载的问题,C++之父在设计C++语言的时候,考虑到对C的兼容,引入了extern "C",使得在C++中能够无误地使用C的库函数(大部分的库函数都是由C编写的)在编译期间,C和C++为函数生成修饰名的方式是不一样的,这一点可以认为是C++实现函数重载的机制,考虑这样一段C代码:int fun(int x){ return 0原创 2013-04-10 19:16:27 · 4212 阅读 · 0 评论 -
从逆向分析角度看C++虚函数
从逆向分析角度,粗略地分析了虚拟表的结构,本人才疏学浅,有误之处,望各位指正原创 2013-07-28 09:31:09 · 6083 阅读 · 1 评论 -
__stdcall 和 __cdecl 的区别
1. __cdecl__cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,由调用者负责把参数压入栈,最后也是由调用者负责清除栈的内容,一般来说,这是 C/C++ 的默认调用函数的规则,MS VC 编译器采用的规则则是这种规则2. __stdcall_stdcall 是StandardCall的缩写,是原创 2013-03-05 09:29:22 · 4738 阅读 · 1 评论 -
从逆向分析角度看C++的析构函数
有这么一段C++代码:#include class CExample { int x, y; public: CExample(int va, int vb) { x = va; y = vb; } CExample(const CExample& C) { x = C.x; y = C.y; } ~CExample() { prin原创 2013-03-08 16:58:14 · 3908 阅读 · 0 评论 -
从逆向分析角度看C++拷贝构造函数
一段C++代码://: HowMany_2.cpp#include using namespace std;class HowMany { static int objectCount; public: HowMany() { ++objectCount; print("HowMany()"); } ~HowMany() { --ob原创 2013-03-09 16:57:45 · 4196 阅读 · 1 评论 -
从逆向分析角度看C++ 中的引用
几个问题:1. 引用变量占有内存空间吗?2. 引用是怎样工作的?3. 指针是怎样工作的?4. 引用和指针有什么区别?1. 何为引用《C++ Primer》里面是这样说的“引用(Reference)就是对象的另一个名字,引用只是它绑定的对象的另一个名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上”,这句话概括得很彻底2. 引用占有内存空间吗?原创 2013-03-13 22:00:12 · 4309 阅读 · 0 评论