程序分析及调试
文章平均质量分 83
js0huang
这个作者很懒,什么都没留下…
展开
-
mpg321 堆溢出分析过程
1 前言在使用Vuzzer重现其论文中的实验时,对mpg321的fuzzing发现三个crash,其中一个为segementation fault.下文为对这个segmentation fault的分析过程。2 环境准备mpg321编译:mpg321_0.3.2.orig.tar.gz (-g -O0编译)依赖库编译安装:libao-1.2.0(-g -O0编译) libmad-0.15.1b(-g -O0编译) libid3tag-0.15.1b (-g -O0编译) lib原创 2021-03-06 19:04:37 · 406 阅读 · 0 评论 -
向正在运行的Linux应用程序注入代码
原作者:Gregory Shpitalnik翻译:0×801、简介假设Linux上正在运行某程序,像Unix守护程序等,我们不想终止该程序,但是同时又需要更新程序的功能。首先映入脑海的可能是更新程序中一些已知函数,添加额外的功能,这样就不会影响到程序已有的功能,且不用终止程序。考虑向正在运行的程序中注入一些新的代码,当程序中已存在的另一个函数被调用时触发这些新代码。也许这种转载 2018-05-09 14:10:24 · 1400 阅读 · 0 评论 -
automake:version unmatch 问题解决
问题:jshuang@ubuntu:~/Vuzzer-test/mpg321$ make cd . && /bin/bash /home/jshuang/Vuzzer-test/mpg321/missing --run automake-1.10 --gnu configure.ac:23: version mismatch. This is Automake 1.10.3,configur原创 2018-03-12 10:36:03 · 2610 阅读 · 0 评论 -
gdbinit 使用(转)
使用gdb调试程序的时候,有时候需要设定多个断点,重复执行某些操作,而这些操作写起来比较麻烦,这个时候就应该想起来用gdb命令脚本了,它能够很好的完成这些工作。以设置多个断点为例,我写的命令脚本为---------------------------------------------------#filename: .gdbinit#gdb will read it wh转载 2015-04-23 15:26:30 · 974 阅读 · 0 评论 -
GDB调试中动态显示执行的代码
在GDB调试中, 大家都知道使用list命令来显示代码:例如:显示main.c中的main函数附近的代码: list main.c:main显示main函数附近的代码: list main显示main.c中的第2到20行的代码: list main.c:2,20显示第10到20行的代码: list 10, 20虽然list已经很方便了, 但还是不尽人意. 如果能够在运行的同时显示代码就好了, 答案...转载 2018-05-29 14:38:53 · 16717 阅读 · 0 评论 -
显示 (gcc)make时实际执行命令
转载问题:调试编译问题,如何获取,GCC(或许make)时,实际编译器和链接器正在执行的命令?解决方法:方法一:通用方法使用dry run,如下 $ make -n 这将显示make 命令正在试图做的事情。 通过 $ make -h 命令,查看帮助可知,make -n实际并不运行任何命令,只是把make试图做的事情显示出来。同一命令的等价参数-n, --just-print, --dr转载 2018-03-26 13:30:02 · 7550 阅读 · 0 评论 -
折腾gcc/g++链接时.o文件及库的顺序问题
转自 http://www.cnblogs.com/OCaml/archive/2012/06/18/2554086.html折腾gcc/g++链接时.o文件及库的顺序问题Table of Contents1 gcc/g++链接时.o文件以及库的顺序问题1.1 写在前面1.2 几个名词1.3 技术铺垫1.3.1 编译动态库时的符号解析1.3.2 linux下查看一个可执行文件或动态库依赖哪些动态库...转载 2018-03-14 20:32:25 · 3095 阅读 · 1 评论 -
core文件设置及使用
开启或关闭Core文件的生成关闭或阻止core文件生成原创 2018-03-13 13:21:27 · 1674 阅读 · 0 评论 -
Ubuntu 安装GDB peda插件
git clone https://github.com/longld/peda.git ~/pedaecho "source ~/peda/peda.py" >> ~/.gdbinit原创 2018-03-12 15:06:18 · 5541 阅读 · 0 评论 -
多线程环境死循环定位
你的软件在某个时刻停止服务,CPU占用达到100%+,这种问题一个可能的原因是产生了死循环,假设程序某处存在潜在的死循环,并在某种条件下会引发,本文以一个示例来定位出现死循环的位置。 当程序某处存在死循环,通常定位问题及缩小范围的方法是,在可疑的代码处加log,或者注释掉可疑代码,这对于容易重现问题的程序来说还好,但对于“偶尔”才会产生问题程序却很难调试,因为我们很难重现程序故障。本文所述的调试...转载 2018-09-10 16:19:40 · 474 阅读 · 0 评论 -
转 ELF节区 elf32_Shdr
什么是节区? 节区保存着用于不同目的的数据,从链接角度看,包括指令、数据、符号表和重定位信息等等。这些数据可能被其他部分所使用.因为不同节中数据的用途不同,节也被分成不同的类型。每个类型的节区都有自己组织数据方式,说白了就是数据结构不一样.另外每一个节区在节区头部表中都有一个条目用来描述节的一些属性信息,具体信息后面会提到什么是节区头部表? 包含了描述节区的信息,每个节区在这个表中都有...转载 2018-05-16 11:08:18 · 1052 阅读 · 0 评论 -
ELF文件头结构
转自 https://blog.csdn.net/tangyuesb/article/details/54630787ELF文件头结构定义在“/usr/include/elf.h”头文件下,ELF文件有32位版本和64位版本,故其头文件结构也有32位结构和64位结构,分别定义为Elf32_Ehdr和Elf64_Ehdr。两种版本文件内容一样,只是有些成员的大小不一样。以下是32位版本的文件头结构E...转载 2018-05-16 11:04:24 · 11196 阅读 · 0 评论 -
The Art Of ELF: Analysis and Exploitations
The Art Of ELF: Analysis and ExploitationsPosted on October 20, 2011 by FlUxIuS New systems make attackers life hard and common exploitation techniques get harder to reproduce. The purpose of this ...转载 2018-05-15 17:24:04 · 846 阅读 · 0 评论 -
CatchConv 分析
CatchConv完成的工作主要有:VEX IR 到 STP表达式的转换污点分析整数类型推理关于”IR到STP表达式”以及“污点分析”的部分暂时不予讨论 。整数类型推理的部分,主要思想是:将程序中的变量位置标记为 signed unsigned unknown contradictory 四种 signed 表示这块地址的操作一直是有符号的,unsigned则是无符号的,unknown则原创 2015-03-30 18:37:23 · 625 阅读 · 0 评论 -
Building LLVM on Ubuntu 12.04 32bit and Ubuntu 13.04 64bit ——LLVM安装编译手记
阿萨德发送到分原创 2013-12-08 20:31:02 · 3198 阅读 · 0 评论 -
(转)LLVM IR 简介
作者:snsn1984在介绍LLVM IR之前,我们需要先了解下LLVM的结构。传统的静态编译器分为三个阶段:前端、优化和后端。LLVM的三阶段设计是这样的:这样做的优点是如果需要支持一种新的编程语言,那么我们只需要实现一种新的前端。如果我们需要支持一种新的硬件设备,那我们只需要实现一个新的后端。而优化阶段因为是针对了统一的LLVM IR,所以它是一个通用的阶段,不论是转载 2013-12-10 19:48:04 · 2776 阅读 · 0 评论