如果不是静态编译,通常不会有int 0x80。意思就是,没有int 0x80 构造的堆栈再好,也无法运行动态编译会载入整个shared librarystack overflow时可以直接构造function调用函数有了函数地址,就可以直接拿来调用Address = base + offset ...
分类:
其他好文 时间:
2018-03-04 00:24:06
阅读次数:
186
一、内存分配 1、数值型内存分配 2、字符串内存分配 3、数组内存分配 4、函数内存分配 二、引用类型和值类型总结 ...
分类:
其他好文 时间:
2018-03-03 21:28:00
阅读次数:
171
GLEW说明 GLEW(OpenGL Extension Wrangler) 是OpenGL的另一个辅助库,主要封装了从OpenGL库中获取函数地址的过程,还包含了一些可以跨平台使用的OpenGL编程方法。 本次实践是使用数据缓存绘制两个三角形,重点是缓存的创建和数据输入。数据输入后,根据数据使用方 ...
分类:
系统相关 时间:
2018-02-27 01:20:28
阅读次数:
282
动态链接库的使用有两种方式,一种是显式调用。一种是隐式调用。 (1) 显式调用:使用LoadLibrary载入动态链接库、使用GetProcAddress获取某函数地址。 (2) 隐式调用:可以使用#pragma comment(lib, “XX.lib”)的方式,也可以直接将XX.lib加入到工程 ...
分类:
其他好文 时间:
2018-02-17 00:40:01
阅读次数:
225
栈:栈是一种具有后进先出性质的数据组织方式,也就是说后存放的先取出,先存放的后取出。栈低是第一个进栈的数据所处的位置,栈顶是最后一个进栈的数据所处的位置。 根据SP指针指向的位置,栈可以分为满栈和空栈。 满栈:当堆栈指针SP总是指向最后压入堆栈的数据 空栈:当堆栈指针SP总是指向下一个将要放入数据的 ...
分类:
其他好文 时间:
2018-01-28 15:29:17
阅读次数:
151
C 语言中函数返回结构体时如果结构体较大, 则在调用函数中产生该结构的临时变量,并将该变量首地址传递给被调用函数,被调用函数返回时根据该地址修改此临时变量的内容,之后在调用函数中再将该变量复制给用户定义的变量,这也正是 C 语言中所谓值传递的工作方式。 如果结构体较小, 则函数返回时所用的临时变量可 ...
分类:
其他好文 时间:
2018-01-24 16:50:57
阅读次数:
111
临时变量存在栈里对象存在堆里 关于block c与oc最大的区别在于一个是静态语言一个是动态语言 先看看c 的写法 c语言没有block一说,叫做函数指针,其实现机制是,函数入口是固定的,我只要知道函数入口就能正确的调用该函数,因此将函数地址赋给函数指针,调用的时候直接使用该指针即可 再看看 oc ...
分类:
其他好文 时间:
2018-01-07 14:10:53
阅读次数:
147
虚函数的机制 当类中定义有虚函数时,编译器会将该类中所有虚函数的首地址保存在一张地址表中,这张表被称为虚函数地址表。编译器还会在类中添加一个虚表指针。 举例: CVirtual类的构造函数中没有进行任何操作,但是我们来看构造函数内部,还是有一个赋初值的操作: 这个地址指向的是一个数组: 这些数组中的 ...
分类:
编程语言 时间:
2017-12-19 12:39:34
阅读次数:
357
两道64位栈溢出,思路和之前的32位溢出基本一致,所以放在一起 在这两道中体现的32位和64位的主要区别在于函数参数传递的方式 在32位程序运行中,函数参数直接压入栈中 调用函数时栈的结构为:调用函数地址->函数的返回地址->参数n->参数n-1->···->参数1 在64位程序运行中,参数传递需要 ...
分类:
编程语言 时间:
2017-12-01 16:41:58
阅读次数:
549
简单利用“/bin/sh”夺权 简单看一下 放到ida中发现了“/bin/sh”串,和system函数,可以利用== 所以只要在vuln函数返回时跳转到system函数,同时添加参数“/bin/sh”就可以实现啦 此时程序流程如图 放成果图 其实这种没有PIE保护的程序,很多函数地址可以直接从ida ...
分类:
编程语言 时间:
2017-11-26 17:54:28
阅读次数:
251