首页 > 其他分享 >【加密与解密】第四章⑤

【加密与解密】第四章⑤

时间:2023-01-16 22:24:03浏览次数:39  
标签:虚表 继承 子类 解密 基类 加密 抽象类 第四章 构造函数

3.多重继承虚表

多重继承是指一个类同时继承多个父类。多重继承与单重继承相比,可以有多个父类。




可以看出main函数与单重继承无区别。在cderived构造函数中,首先按继承顺序调用两个基类的构造函数,然后执行自己的构造函数代码。
因为两个基类都有虚函数,在这种情况下编译器会为派生类生成两个虚表,在构造函数时初始化。虚表项的构造顺序和上一个例子基本一致,唯一的区别在于派生类新增的虚函数挂在了第一个虚表后面。

4.菱形继承虚表

两个子类继承自同一个父类,又有子类同时继承这两个子类(在子类的子类中出现)。在内存布局会出现两个相同的父类内存结构。







main函数中的构造函数调用有点特殊,多传递了一个标识是否调用基类构造函数的标志参数。按语法B的构造函数要先构造A,这样编译器就要在B类的构造函数里调用A类的构造函数。顺序没有问题,然而在BC的构造也要先构造B构造C,在BC的构造函数里调用了B类的构造函数和C的构造函数。这里就有问题,因为这样子A的构造函数就被调用了两次。而这是多传递了一个参数就是用来表示是否调用虚基类的构造这样就可以防止虚基类被调用两次。
在调用虚基类构造函数之前,出现了一个初始化虚基类偏离表的操作。这是因为存在徐继承,虚基类对象的内存在派生类的内存中只保留一份,所以在编译器方便定位虚基类在对象内存中的位置,做一个虚基类偏移表。
所以我们在逆向分析时,如果发现构造函数有初始化虚基类偏移表的操作就可以怀疑这个类继承层次带有虚继承。

5.抽象类虚表

在C++中,含有纯虚函数的类称为抽象类,它不能实例化对象。面向对象设计中常用抽象类给子类规范接口,接口的功能通常都是重要功能。它最大的特点就是没有实现代码。如果在逆向分析时找到一个类的抽象类那么就可以通过他的构造函数就可以定位它的所有子类,得到重要功能。



可以看出父类为抽象类的实现代码和单重继承没有太大区别,唯一的别就是虚表。由于纯虚函数没有实现代码,编译器默认填充_purecall函数地址。
如果发现一个类的虚表里面有_purecall虚表项。

小结

标签:虚表,继承,子类,解密,基类,加密,抽象类,第四章,构造函数
From: https://www.cnblogs.com/Corax0o0/p/17056427.html

相关文章

  • PHP简单的字符串加密与加密代码
    PHP简单的字符串加密与加密代码代码//加密算法functionencode($string='',$skey='cxphp'){$strArr=str_split(base64_encode($string));$strCount=cou......
  • nginx&http 第四章 ngx http代理 && 转载
    Nginx访问上游服务器的流程大致分以下几个阶段:启动upstream、连接上游服务器、向上游发送请求、接收上游响应(包头/包体)、结束请求。upstream相关的两个重要数据结构ngx_......
  • jmeter 使用AES-GCM 模式 加解密 性能测试及 加解密过程 笔记
    加解密过程 步骤1:明文参数(parm1)----key1明文密钥加密(明文密钥),加密后生成密文(parm2)步骤2:-aeskey(对明文密钥key1加密,因为考虑到安全因素防止暴力破解,对明文密钥进行加......
  • 【加密与解密】第四章④
    4.整数的取模取模运算可以通过除法指令实现。一般的优化做法是将其转换成等价的位运算或者除法运算,再由除法运算进行优化。虚函数C++的三大核心机制是封装,继承,多态,而虚......
  • Python爬虫-第四章-1-多线程多进程并发爬取Ⅰ
    多线程多进程用的方式#DemoDescribe:多线程写法fromthreadingimportThread#线程frommultiprocessingimportProcess#进程#start--------1,多线程调用的方式一......
  • Python爬虫-第四章-1-多线程多进程并发爬取Ⅱ
    线程池使用案例:一次性开辟一些线程,用户直接给线程池提交任务,线程任务的调度交给线程池#DemoDescribe:线程池和进程池fromconcurrent.futuresimportThreadPoolExecutor,......
  • Python爬虫-第四章-1-多线程多进程并发爬取Ⅲ-爬取某菜市场批发价数据
    #DemoDescribe:爬取北京新发菜地数据importrequestsimportcsvfromconcurrent.futuresimportThreadPoolExecutorfromfake_useragentimportUserAgent'''本章内容:......
  • 玩转云端 | 天翼云数据加密,护航企业数据安全
    有交流就会产生信息,为了防止信息泄露,人们通常会采取一些特殊的措施来保护信息。很早以前,“数据加密”就出现在人类的生活中。比如:由姜子牙创造的历史上最早的密钥——阴符(兵......
  • 非对称加密算法
    非对称加密密钥是成对出现的公钥:publickey,公开给所有人,主要给别人加密使用私钥:secretkey,privatekey自己留存,必须保证其私密性特点:用公钥加密数据,只能使用与之配对......
  • 对称加密算法
    Alice-->Bob对称算法:key1=key2data--->加密(key1)--->data’--->解密(key2)--->data特性:(1) 加密key1、解密key2相同,即使用同一个密钥,效率高,易实现,适合加密大量数据,如加......