程序逆向

PWN入门:GLibC堆请UAF

01.堆与内存在使用使用内存大致有两种常见且合规的方式,一是使用局部变量,操作局部变量一般是对栈进行操作,除非局部变量被static关键字修饰(此时位于全局变量区),栈空间是由编译器控制的,在编译时栈...
阅读全文
安全开发

10x程序内存模型

关注公众号,后台回复 找书+ C++Primer 获取C++相关电子书。面向对象编程技术的核心和精髓。内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系...
阅读全文
安全开发

C/C++堆栈指引

前言    我们经常会讨论这样的问题:什么时候数据存储在堆栈(Stack)中,什么时候数据存储在堆(Heap)中。我们知道,局部变量是存储在堆栈中的;debug时,查看堆栈可以知道函数的调用顺序;函数...
阅读全文
程序逆向

栈溢出[Stack Overflow]

栈溢出原理图在DEBUG程序中ebp会入栈,非调试版本ebp是可以优化掉的。我们的栈溢出主要是就是产生在函数堆栈中的局部变量区,例如我们在局部变量区定义了一个Buffer,我们在向这个Buffer拷贝...
阅读全文
程序逆向

IDA 技巧(66) 反编译器注释

当你在反编译器中处理伪代码时,可能会注意到变量声明和提示中有一些内容略显神秘的注释。那么它们是什么意思呢?Image虽然有些注释的含义显而易见,但有些则不那么明显,还有一些仅在罕见情况下出现。变量位置...
阅读全文
CTF专场

PWN入门之二进制基础

二进制基础程序的编译与连接从C源代码到ELF可执行文件的生成过程编译由C语言代码生成汇编语言汇编由汇编代码生成机器码链接将多个机器码的目标链接成一个可执行文件Linux下的可执行文件格式ELFSect...
阅读全文