
基础
smb_yy
一枚来自无名的it男
展开
-
多态vptr指针思考一
0x01多态是c++的灵魂之处,c++实现多态就是使用vptr指针,实现多态的三个条件, 1. virtual 关键字 2. 子类重写父类的虚函数 3. 父类指针调用子类对象虚函数0x02 vptr的存储问题 —vptr是属于类的,而不是属于对象的直接附上代码 —>发现vptr是存储在父类中class A { virtual void func() { co...原创 2020-03-20 01:36:29 · 287 阅读 · 0 评论 -
intel专用寄存器EFLAGS标志寄存器
0x01之前在上一篇文章说到ZF,CF,SF,OF,这几个位,这几个控制位是上一条语句的执行结果的状态,这些状态对于执行是非常重要的,那么是什么来保存和控制着这些值呢? 答案就是EFLAGS寄存器,两个专用寄存器之一,一个是eip,一个就是eflags了eflags组成6个状态寄存器OFZFSFCFAF :辅助进位标志 ;若加法时,低四位向前进位,或者减法时错位,AF = 1...原创 2020-03-09 22:19:06 · 647 阅读 · 0 评论 -
06 08x86汇编编程
汇编纲领:与硬件进行交互,将其他语言转换成汇编Hello World以. 开头的都是汇编指示,指导汇编器如何进行汇编 其中.file 和 .def用于调试(通常可以忽略) .text 代码段 .p2align a,b,c 指定下一行代码的对齐方式 a: 2^a次幂对齐 b: 使用b来填充 c: 最多填充多少字节 ...原创 2020-03-09 22:00:15 · 296 阅读 · 0 评论 -
使用函数指针实现类函数重载
函数指针注:该汇编使用intel格式,及与AT&T相反的操作方式0x01 指针无法区分数据还是代码1. 我们知道c/c++之所以伟大是因为很多方面,其中就是因为指针可以操作内存中的任意数据,理论上只要是在内存中,都可以操控。2. 那么指针可以指向操作码吗???这个就可以打开潘多拉的魔盒了。其实是可以的,而且还可以打印机器码,因为操作指令是存在内存中的,然而寄存器算是和cpu最紧密...原创 2020-03-08 23:54:33 · 655 阅读 · 0 评论 -
04 指令及其表示
大纲汇编与c之间的数据类型常见的汇编语法(AT&T)汇编语言的数据格式 字 2bytsc声明Intel数据类型汇编代码后缀大小(字节x86-32)char字节b1short节w2int双字l4unsigned双字l4char *双子l4long int双字l4double双精度...原创 2020-02-27 11:00:34 · 1705 阅读 · 0 评论 -
03c语言中数组和结构体
汇编中的数据类型ascii 文本字符串asciz 以空字符结尾的字符串byte 字节值double 双精度浮点值float 单精度浮点值int 32 32位整数long 32 32位整数,和int相同octa 16字节整数quad 8字节整数short 16位整数single 单精度浮点数(与float相同...原创 2020-02-27 10:56:13 · 202 阅读 · 0 评论 -
02 寄存器和描述符
描述符GDT;全局描述符表:主要存放操作系统和个任务公用的描述符非常重要:在计算机转换成保护模式之后,gdt就用来表示内存中的位置 公用的数据和代码段描述符,各任务的TSS描述符和LDT描述符 tss是任务状态段,存放各个任务私有运行状态信息描述符GDTR : ,48位LDT;局部描述符表,主要存放各个任务的私有描述符段寄存器:高13位表示索引号,低2位表示特权级别寄存...原创 2020-02-25 22:46:00 · 535 阅读 · 0 评论 -
一.汇编基础知识
ISA:指令系统—>是程序员看到的计算机属性CISC:x86 80X86处理器 16位 80386 1985年第一个32位的处理器80386有三种工作模式 实模式:相当于一个可以进行32为快速运算的8086 保护模式:主模式,通过对程序使用的存储区采用分段,分页的存储管理机制,达到分级使用,互不干扰的保护目的,能为每个认为提供一台虚拟处理器,使每个任务单独执行...原创 2020-02-24 09:39:22 · 315 阅读 · 0 评论 -
c语言内存申请函数
几个常用的内存分配函数void* malloc(size_t size)void* calloc(size_t memb,size_t size)void* realloc(void *p,size_t size)void* aligned_alloc(siee_t alignment, size_t size)所引发的错误1.初始化错误2.未检查返回值3.对空指针或无效...原创 2019-11-27 13:17:09 · 298 阅读 · 0 评论 -
C++的Memcpy与Memcpy_s函数解析
Memcpy函数一. 函数内容** 1.1函数原型 **void * Memcpy(void * dest,const void * src,size_t count)这是一个函数指针 接收的是一个地址 dest是接收地址的首地址,src是源首地址,count是接收目标的大小单位为字节 位于cstring或memcpy.h头文件中。windows中Memcpy的函数原型 ...原创 2019-10-10 22:03:11 · 14515 阅读 · 0 评论 -
c++11特性原始字符串字面量
前景带入大三第一个学期学过半吊子的python了解到,python中为了避免程序员过多的使用转义字符‘\’ 例如“C:\\inetpub\\wwwroot”,如果使用python的原始字符串就是 r"C:\inetpub\wwwroot" 这个样子的身为c++11这个绝对不会缺席,作为modern c++然后他也有这个鬼,不过用的式R而且要用()起来如#include #inclu...原创 2019-06-09 11:27:05 · 340 阅读 · 0 评论