ICode9

精准搜索请尝试: 精确搜索
  • 浅谈「内存调试技术」2021-01-04 15:02:42

    浅谈「内存调试技术」 浅谈「内存调试技术」 一、影子内存(shadow memory)- 比例+偏移的映射算法 内存问题在 C/C++ 程序中十分常见,比如缓冲区溢出,使用已经释放的堆内存,内存泄露等。 程序大了以后,查找起来又特别的难。即使我们在写程序时非常的仔细小心,代码一多,还是难以保证没有

  • CSAPP第三章之条件码、跳转指令2020-12-19 18:00:48

    控制 机器代码提供 测试数据值根据测试结果改变控制流 条件码 CPU维护着一组条件码寄存器 CF:进位标志。可以检查无符号操作的溢出。ZF:0标志SF:符号标志。最近的操作结果为负数。OF:溢出标志。检查有符号操作的溢出。 leaq不改变任何条件码——它是用来进行地址计算的 除此之外,

  • CSAPP实验——BombLab2020-12-15 22:32:36

    CSAPP — BombLab Bomb Lab 实验任务 是“拆炸弹”。所谓炸弹,其实就是一个二进制的可执行文件,分为六个阶段每个阶段要求输入一个字符串。如果字符串输入错误,系统就会输出 BOOM!!!。 实验目的 通过观察用汇编语言描述的程序行为来猜测符合条件的

  • System: The Stack - Push and Pop2020-12-13 06:01:07

    The Stack: Push and Pop CS 301: Assembly Language Programming Lecture, Dr. Lawlor "The Stack" is a frequently-used area of memory designed for functions to use as temporary storage.  This is normally where you store values while calling another

  • csapp attack lab level52020-12-09 20:01:24

    做完了第一个ROP来看看第二个,当然这个显然很难。 显然这个和touch3一样,但是无法注入,所以只能用ret来连接gadget,我刚开始看第一个建议很疑惑,为啥要复习movl。直到我从farm这个函数反汇编后所能用到的指令真是少的可怜。如图类似grep抓取关键字然后对照下图表发现能用的指令太

  • csapp attack lab level42020-12-08 20:01:07

    完成了Part1前三个缓冲区注入代码改变返回地址的实验,现在来看看Part2.因csdn新手,所以上传pdf并不会。直接截图把 这里是介绍部分,大致说明了因为两个原因不能进行代码注入而写shellcode,一个是ALSR栈上地址随机化,一个是NX就是栈没有执行的权限。这样怎么攻击呢?有些聪明的人

  • 利用dmesg排查段错误原因(Geant 4程序)2020-11-28 18:30:52

    参考博文: 【1】段错误原因分析和查找. 【2】段错误排查 —— 利用dmesg. 【3】linux调试:dmesg 查看程序崩溃原因分析方法之一 . 下面的内容为博主在Geant 4程序设计中遇到的问题。 问题描述 Geant 4 分析闪烁体荧光光子的相关问题,程序计算到某一个event时,程序自动终止,输出错

  • Redis5设计与源码分析 (第8章 Stream)2020-11-01 14:04:36

    Redis在最新的5.0.0版本中也加入了消息队列的功能,这就是Stream。 8.1 Stream简介 图8-1 Redis Stream结构图 命令: xadd mystream1 * name hb age 20 mystream1为Stream的名称; *代表由Redis自行生成消息ID; name、age为该消息的field; hb、20则为对应的field的值。 每个消息都由

  • 对象的创建2020-08-15 09:02:06

    Java对象创建的流程大概如下: 检查对象所属类是否已经被加载解析; 为对象分配内存空间; 将分配给对象的内存初始化为零值; 执行对象的<init>方法进行初始化。 举个例子如下: public class Test { public static void main(String[] args) { Test obj = new Test();

  • rax学习(一):第一个rax应用程序程序HelloWorld2020-08-09 21:31:31

    仓库地址:rax-helloworld 简单介绍一下rax rax即是一个开发兼容多端(包括web,mobile web,小程序以及android或ios等app页面)的前端应用框架。 第一个rax应用程序:rax-helloworld 环境 macOS 10.15.1 node 12.10.0 其他环境基本下面操作相同。 创建 npm init rax rax-helloworld 脚手

  • C++ lambda 分析2020-01-30 17:06:55

    lambda 表达式分析 构造闭包:能够捕获作用域中变量的匿名函数的对象,Lambda 表达式是纯右值表达式,其类型是独有的无名非联合非聚合类类型,被称为闭包类型(closure type),所以在声明的时候必须使用 auto 来声明。 在其它语言如lua中,闭包的格式相对更为简单,可以使用 lambda 表达式作用

  • C++ 引用分析2020-01-27 22:01:35

    引用 左值引用,建立既存对象的别名 右值引用,可用于为临时对象延长生命周期 转发引用,保持函数实参的类别 悬置引用,对象生命周期已经结束的引用,访问改引用为未定义行为 值类别,左值,纯右值,亡值 std::move, std::forward 类型推导 引用塌缩(折叠) 可以通过模板或者 typedef 中的类型操作

  • 汇编指令:lea2019-10-06 21:57:15

    lea指令变种(按大小分类): leaw #2个字节leal #4个字节leaq #8个字节 lea的用法: leaq a(b, c, d), %rax 首先lea指令是mov指令的变种,据说,lea指令是x86体系结构中,是一条最古老但是从某个方面来讲又是最神奇的指令。 表面上看,它做的事情非常简单,根据括号里的源操作数来计算地址

  • macOS上的汇编入门(七)——字面量与局部变量2019-07-17 13:35:25

    在上一篇文章中,我们分析了第一个汇编程序。 # exit.s .section __TEXT,__text .globl _main _main: movq $0, %rax retq 这个汇编程序是我们所有汇编程序的框架,因为它实现了程序进入和程序退出的功能。我们接下来所有的程序都是在这个程序的基

  • bug诞生记——不定长参数隐藏的类型问题2019-04-25 21:55:19

            这个bug的诞生源于项目中使用了一个开源C库。由于对该C库API不熟悉,一个不起眼的错误调用,导致一系列诡异的问题。最终经过调试,我们发现发生了内存覆盖问题。为了直达问题根节,我将问题代码简化如下(转载请指明出于breaksoftware的csdn博客) #include <iostream> #inc

  • SUCTF 2016 : dMd2019-04-10 20:43:03

    这个题可以说是比较坑了(还不是我很弱...) Linux跑一下: 要输密码 ida打开看看: int __cdecl main(int argc, const char **argv, const char **envp){ __int64 v3; // rax __int64 v4; // rax __int64 v5; // rax __int64 v6; // rax __int64 v7; // rax __int64 v8; // rax _

  • Linux X64下汇编学习:C语言调用汇编代码,汇编中调用C语言函数2019-03-12 21:47:53

    Table of Contents hello world hello.asm makefile float circle_fpu_87c.c circle_fpu_87.asm makefile stack stack.asm makefile string reverse.asm makefile sum sum.asm makefile C语言与汇编之间调用 casm1 - call C function from asm casm.c casm.asm makefile casm

  • [读书笔记]程序的机器级表示2019-02-06 16:37:51

    汇编指令 x86-64 CPU有16个寄存器,每个寄存器都能存储一个64位(即8个bytes)的值,每个寄存器的名字都以%r开头,并且不同的寄存器有约定上的不同的用途。下图以%rax为例,这个寄存器专门用于存放返回值,其中的“子部分”%rax、%ax、%al也能作为指令的operand(操作数),但是他们分别能表示的数据长

  • golang的加法比C快?2019-02-02 20:00:56

    1.31 晚上的火车回家,在公司还剩两个小时,无心工作,本着不虚度光阴的原则(写这句话时还剩一个半小时~~),还是找点事情干。决定写一下前几天同事遇到的一个golang与c加法速度比较的问题(现在心里在想我工作不饱和的,请大胆的把你的名字放到留言区!)。 操作系统信息: $uname -a Linux 35d4aec21d

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有