- 1.在IDA中跳转到指定地址的快捷键是()
- 2.List类模版中内存布局描述错误的是()
- 3.vector类模版中内存布局描述错误的是()
- 4.map类模版中内存布局描述错误的是()
- 5.以下对这两条指令的描述错误的是()
- 6.对于全局对象,以下描述错误的是()
- 7.string类模版中内存布局描述错误的是()
- 8.vector的原理描述正确的是()
- 9.List的原理描述正确的是()
- 10.map的原理描述正确的是()
- 11.从逆向角度讲,以下不属于构造函数的特点的是()
- 12.从逆向角度讲,以下属于析构函数的特点的是()
- 13.从逆向角度讲,不属于成员函数的特点()
- 14.静态函数与友元函数的特点描述错误的是()
- 15.关于虚函数表描述错误的是 ()
- 16.关于初始化和访问虚函数表错误的是()
- 17.在MFC界面程序中如何快速有效的定位到关键代码调用处()
- 18.不能用来识别一个程序是什么编译环境()
- 19.逆向分析的方法有那些()
- 20.OD中使用那个快捷键复制二进制代码()
1.在IDA中跳转到指定地址的快捷键是()
2.List类模版中内存布局描述错误的是()
初始化0Ch个字节的空间
第二个字段直接指向添加的数据
第一个字段是一个指向自己的指针
第三个字段存放着元素的个数
3.vector类模版中内存布局描述错误的是()
初始化10h个字节的空间
第一个字段是一个指向自己的指针
第三个字段存放着元素的个数
第二个字段直接指向数据的数组
4.map类模版中内存布局描述错误的是()
第三个字段存放着元素的个数
初始化10h个字节的空间 0c
第二个字段指向数据的结构体
第一个字段是一个指向自己的指针
5.以下对这两条指令的描述错误的是()
Lea ecx,[ebp-0x24];
call 00401168;
mov edx,eax;
Edx保存函数的返回值
这是c++类成员函数的调用
这函数使用thiscall约定
选项都是错误的
6.对于全局对象,以下描述错误的是()
构造函数会早于main函数的开始
析构函数会在main函数结束后调用
构造只能在main函数内被调用
构造函数会在_initterm中被调用
7.string类模版中内存布局描述错误的是()
第二个字段是一个联合体,保存指向字符的指针或字符
初始化1Ch个字节的空间
选项都是错误的
第一个字段是一个指向自己的指针
8.vector的原理描述正确的是()
9.List的原理描述正确的是()
10.map的原理描述正确的是()
11.从逆向角度讲,以下不属于构造函数的特点的是()
没有返回值
全局对象的构造在_initterm函数完成。
返回值是this指针
初始化缓冲区(清0)
12.从逆向角度讲,以下属于析构函数的特点的是()
析构函数一般作用释放资源
选项都是对的
局部对象,会在函数返回前,调用析构
全局对象的析构是在exit函数中完成的
13.从逆向角度讲,不属于成员函数的特点()
访问或者修改成员变量,一般都是使用this指针加上偏移来实现。
获取成员变量的函数,一般返回值是从 this 指针指向的内存空间中获取的。
this指针存一般放在edx中 ecx
设置成员变量的函数,一般参数传递进去之后会修改 this 指针所指向的内存空间。
14.静态函数与友元函数的特点描述错误的是()
友元函数一般参数都是某个对象,或对象指针。
静态函数,没有this指针,没有ecx传参。
静态函数的两种调用在反汇编都是一样的
友元函数,会传递this指针,ecx传参。 传递的是对象指针
15.关于虚函数表描述错误的是 ()
程序编译时,会自动生成虚函数表。
一个类对象的内存中可能存在多个虚表指针 虚函数表=虚表
如果类中存在继承时且都有虚函数,那么只会共用一个虚函数表。
虚函数表一般存在只读数据段(.rdata)
16.关于初始化和访问虚函数表错误的是()
当父类指针指向子类对象时,虚函数调用才会访问虚函数表。
如果有继承关系,父类和子类虚函数一样,也会有两个虚函数表,他们的虚函数表指针都是在各自的构造函数中初始化的。
构造函数中会初始化本类的虚函数表指针。
直接调用本类中虚函数,也会使用虚函数表访问虚函数。
// 006_菱形继承.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
using namespace std;
class A {
public:
virtual void fun()
{
std:cout << "A:fun\n";
}
virtual void funA()
{
std:cout << "A:funA\n";
}
};
class B1 : public A {
public:
virtual void fun()
{
std:cout << "B1:fun\n";
}
virtual void fun1()
{
std:cout << "B1:fun1\n";
}
virtual void fun2()
{
std:cout << "B1:fun2\n";
}
};
class B2 : public A {
public:
virtual void fun()
{
std:cout << "B2:fun\n";
}
virtual void fun3()
{
std:cout << "B2:fun3\n";
}
virtual void fun4()
{
std:cout << "B2:fun4\n";
}
};
int main()
{
A* p1 = new A;
A* p2 = new B1;
A* p3 = new B2;
p1->fun();
p2->fun();
p3->fun();
p1->funA();
return 0;
}
17.在MFC界面程序中如何快速有效的定位到关键代码调用处()
18.不能用来识别一个程序是什么编译环境()
19.逆向分析的方法有那些()
① 自上而下,单步跟踪
② 自下而上,下断栈回溯
③ 字符串分析
④ 源码对比
20.OD中使用那个快捷键复制二进制代码()
Shift+X
Shift+B
Ctrl+X
Ctrl+S