移动语义使得编译器得以使用成本较低的移动操作,来代替成本较高的复制操作;完美转发使得人们可以撰写接收任意实参的函数模板,并将其转发到目标函数,目标函数会接收到与转发函数所接收到的完全相同的实参。右值引用是将这两个不相关的语言特性连接起来的底层语言机制,正是它使得移动语义和完美转发成了可能。 23:理 ...
分类:
移动开发 时间:
2018-10-31 10:38:51
阅读次数:
199
一、准备 由于内核栈不可执行(NX),栈溢出利用需用到ROP。简单回顾一下ARM ROP。 漏洞演示代码如下,网上随便找了个。 vulnerable_function函数使用read从标准输入读数据到buf缓冲区,未校验拷贝长度导致栈溢出。分析其汇编代码: 首先LR,R11寄存器压栈,接着分配0x8 ...
分类:
移动开发 时间:
2018-10-28 00:48:41
阅读次数:
248
启动工作原理 刚接触操作系统的时候觉得这个最神秘,到底里面做了什么,怎么就成了个操作系统,它到底有什么用,为什么要引进来着个东东。学了之后才知道,原来最根本的思想还是源于汇编里面的跳转和压栈,以调用一个函数为例,编译后的汇编肯定是先通过SP压入当前代码段地址然后就是保存一些寄存器的值放栈里面(51单 ...
分类:
其他好文 时间:
2018-10-12 13:43:04
阅读次数:
148
我从昨天到今天一直困在一个问题里!!!!!! 为什么b=1的时候算的好好的!!!!!!b=2的时候就不行了!!!!!!!!!!! 今天从头到尾把算法又看了一遍,又找遍文献资料,寻找b的含义,思考公式的意义!!!!!我思考!难道b就是那么小!!!!! 不!!!!!!!!!!!!! 我研究了几乎两天!! ...
分类:
其他好文 时间:
2018-10-02 22:09:21
阅读次数:
146
以上述类型为例: void a_fun_1();为基类虚函数,在派生类b中没有重新进行定义; void a_fun_2();为基类虚函数,在派生类b中被重新进行定义; void b_fun_1();为派生类中新增加的虚函数; 那么基类a和派生类b的虚函数表是这样的: 规则是: 在派生类中,如果没有重 ...
分类:
其他好文 时间:
2018-09-08 15:32:08
阅读次数:
133
好,让我们正式进入动态链接库的世界,先来看看最一般的DLL,即非MFC DLL 上节给大家介绍了静态链接库与库的调试与查看,本节主要介绍非MFC DLL。 4.非MFC DLL4.1一个简单的DLL 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功 ...
分类:
编程语言 时间:
2018-09-04 19:00:15
阅读次数:
217
句柄表跟内核对象 一丶什么是句柄表什么是内核对象. 1.句柄表的生成 我们知道.我们使用CreateProcess 的时候会返回一个进程句柄.以及线程句柄. 其实在调用CreateProcess的时候.内核中会新建一个EPROCESS结构来存储我们的进程信息. 例如如下图: 但是有一个问题.怎么给三 ...
//使用typedef给函数指针类型一个别名 //typedef没有定义新的类型,给已经有的类型起一个别名,减少输入 typedef int( PADD)(int a, int b); // 类型, PADD存储函数地址 typedef void( MEG)(char s[]); void main ...
分类:
其他好文 时间:
2018-08-27 18:32:50
阅读次数:
129
版权声明:专注于计算机网络安全学习 https://blog.csdn.net/u011672712/article/details/51586030 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
分类:
编程语言 时间:
2018-08-23 16:58:36
阅读次数:
506
1.代码在执行的过程中,遇到函数定义,初始化函数生成存储函数名,默认参数初识值,函数地址的函数对象。 2.代码执行不在初始化函数,而是直接执行函数体。 代码实例 这要从函数的特性说起,在 Python 中,函数是第一类对象(function is the first class object),换而 ...
分类:
编程语言 时间:
2018-08-20 14:37:40
阅读次数:
202