![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++逆向技术揭秘笔记
文章平均质量分 56
weixin_55178828
这个作者很懒,什么都没留下…
展开
-
8 继承和多重继承
单一继承 父类先构造!析构的时候是反着的! 尽量把析构函数定义成虚函数,因为将基类的析构函数定义为虚函数后,当利用delete删除一个指向派生类定义的对象指针时,系统会调用相应的类的析构函数。而不将析构函数定义为虚函数时,只调用基类的析构函数。 本类中成员是其他自定义类,根据顺序构造。 根据上图可以看出 子类 *b = (子类*)a是错误的,因为子类的指针访问越界了 【a是父类】 根据上图可以看出 子类的内存布局,那么this+0处的虚表最后被修改成子类的虚表了 如果子类重写了虚函数,.原创 2021-02-08 20:07:41 · 96 阅读 · 0 评论 -
7 虚函数的虚表
class A { public: A(){ printf("A()\n"); }; ~A(){ printf("~A()\n"); } virtual void vir() { printf("vir "); } }; 只要类中有虚函数,那么编译器一定会给分配默认的构造函数,在构造函数内部,会把this指针的第一个4字节数据修改为虚表地址 虚表地址是一个指针 指向了虚表 虚表中存放的是虚函数的地址 虚表存放的是虚函数地址 如果想要间接调...原创 2021-02-08 16:34:32 · 68 阅读 · 0 评论 -
6 构造函数和析构函数
构造函数原创 2021-02-07 14:09:14 · 115 阅读 · 0 评论 -
5 类和结构体
class A { public: A() { a=1; b=2; } char c; int a; int b; }; int main(int argc, char* argv[]) { A a; printf("%d",a.b); return 0; } 看构造函数 返回this指针 空类的占1个字节 用来实例化 class A { public: A() { a=1; b=2; } char c; i...原创 2021-02-06 20:28:08 · 73 阅读 · 0 评论 -
4 数组和指针的寻址 and 局部静态变量
数组在内存中是一个连续地址的变量 void shuzu(int a[],char *b) { a[0]=1; a[1]=2; b[0]='c'; b[5]=0; return ; } int main(int argc, char* argv[]) { int a[]={0,1,2,3,4,5,6}; char b[]="12345678910111"; printf("%d",a[2]); prin...原创 2021-02-06 13:07:49 · 120 阅读 · 0 评论 -
3 流程控制结构的识别
if ese流程控制语句在汇编中的结构 一下是IDA的一个错误: vc源代码 float c=argc*2.03,d=3.333;; float e=a(d,c); if (e>15) { int h=e; printf("%d",h); }else { int h=e-1; printf("%d",h); } if(e<15) { int i=e; printf("%d",i); }else if(e==15) { ...原创 2021-02-05 23:23:44 · 48 阅读 · 0 评论 -
1 C++反汇编 IDA sig的作用和生成方法
用到工具: ida7.5 : 链接:https://pan.baidu.com/s/104yOAxQ_LqqHC3275xjj4Q 提取码:1234 sig生成工具:链接:https://pan.baidu.com/s/1NgRVR3eQRBdYyIImWeI8Jw 提取码:1234 ida不仅可以把lib里面的函数识别出来 也可以通过exe的obj来识别自定义的函数名 ida 通过快捷键shift+F5 可以打开sig文件目录清单 可以通过lib生成OBJ文件 然后通过OBJ文件生成PAT文原创 2021-02-05 15:45:58 · 396 阅读 · 0 评论 -
2 基本数据类型的表现形式(浮点数的操作)
一 :负数的表现形式 补码:用0减去这个数值的绝对值(对应1),也可以表达为对这个数值取反加一(对应2)。 1: -1 对应的是 0xFFFFFFFF (8位) > 0-1= 0X100000000(9位) - 0x000000001(9位)=0xFFFFFFFFF(9位) >因为1个字节是8位 所以丢失掉最前面一个F 2: -2 对应的是 0xFFFFFFFE 但是not之后却变成了1 如果要找负数的取反 一定要记住+1 二 浮点数据计算 in...原创 2021-02-05 17:11:30 · 449 阅读 · 0 评论