2018 2019 20165227《信息安全系统设计基础》第三周学习总结 ======== 学习目标 理解逆向的概念 掌握X86汇编基础,能够阅读(反)汇编代码 了解ISA(指令集体系结构) 理解函数调用栈帧的概念,并能用GDB进行调试 学习任务 必学内容 阅读教材,完成课后练习(书中有参考答案) ...
分类:
其他好文 时间:
2018-10-14 23:04:40
阅读次数:
187
一、缓冲区溢出简介: 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。 二、实验具体步骤 1、准备工作 在实验楼64位的Linux环境下 ...
分类:
其他好文 时间:
2018-10-14 16:45:11
阅读次数:
205
一、Debug视图 调试中最常用的窗口是: 另外辅助的窗口有: 1)窗口全览: 2)Debug View(线程堆栈视图): debug视图允许您在工作台上管理正在调试和运行的程序,他显示了你正在调试的程序中挂起的线程的堆栈帧,程序中的每个线程作为树的节点出现。他展示了正在运行的每个目标的进程。如果线 ...
分类:
系统相关 时间:
2018-10-10 21:57:57
阅读次数:
238
栈的特点如下: 1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等) 2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等) 3. 栈属于线程私有,不能实现线程间的共享! 4. 栈的存储特性是“先进后出,后进先出” 5 ...
分类:
其他好文 时间:
2018-10-07 12:56:49
阅读次数:
187
引擎由两个主要组件组成:*内存堆 - 这是内存分配发生的地方*调用堆栈 - 这是您的代码执行时堆栈帧的位置、 事件循环和回调队列。 JavaScript是一种单线程编程语言,这意味着它只有一个Call Stack。因此,它可以一次做一件事。 调用栈是一种数据结构,它基本上记录了程序中的位置。如果我们 ...
分类:
其他好文 时间:
2018-09-25 01:09:32
阅读次数:
137
前言 前面介绍了Java内存运行时区域,其中 程序计数器、虚拟机栈、本地方法栈 三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性。在这几个区域内不需要 ...
分类:
编程语言 时间:
2018-09-24 13:41:56
阅读次数:
203
加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回传输,这类指令包括如下内容。 将一个局部变量加载到操作栈:iload、iload_<n>、lload、lload_<n>、fload、fload_ <n>、dload、dload_<n>、aload、aload_<n>。 将一个数值从操作... ...
分类:
其他好文 时间:
2018-09-22 23:23:58
阅读次数:
242
0. 前言 Java虚拟机和真实的计算机一样,运行的都是二进制的机器码;而我们将.java 源代码编译成.class 文件,class文件便是Java虚拟机能够认识的二进制机器码,Java能够识别class文件中的信息和机器指令,进而执行这些机器指令。那么,Java虚拟机是如何运行这些二进制的机器码... ...
分类:
其他好文 时间:
2018-09-22 23:23:22
阅读次数:
239
每一个独立的栈帧中除了包含局部变量表以外,还包含一个后进先出(Last-In-First-Out)的操作数栈,也可以称之为表达式栈(Expression Stack)。操作数栈和局部变量表在访问方式上存在着较大差异,操作数栈并非采用访问索引的方式来进行数据访问的,而是通过标准的入栈和出栈操作来完成一... ...
分类:
其他好文 时间:
2018-09-22 23:15:51
阅读次数:
221
后面讲的所有的东西就是对前面所总览的虚拟机栈的进一步理解。 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)[1]的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信... ...
分类:
其他好文 时间:
2018-09-22 23:13:04
阅读次数:
237