随笔分类 - Security:软件安全&逆向
摘要:LLVM项目 LLVM是一个开源的项目,是一个编译器框架,是一系列模块化、可重用的编译器以及工具链技术的集合。 LLVM的核心是LLVM库。同时LLVM还实现了一些周边工具。 LLVM的一个设计思想是优化可以渗透在整个编译流程中各个阶段,比如编译时、链接时、运行时等。 你可以基于LLVM提供的功能开
阅读全文
摘要:资料 USENIX Security 21: DeepReflect: Discovering Malicious Functionality through Binary Reconstruction ,相关代码开源在 DeepReflect Github 。 本文实验工作量十分丰富,篇幅所限这里
阅读全文
摘要:概述 传统符号执行是一种静态分析技术,最初在1976年由King JC在ACM上提出。即通过使用抽象的符号代替具体值来模拟程序的执行,当遇到分支语句时,它会探索每一个分支, 将分支条件加入到相应的路径约束中,若约束可解,则说明该路径是可达的。符号执行的目的是在给定的时间内,尽可能的探索更多的路径。根
阅读全文
摘要:注意 这条博客目前还非常不完善,可能存在一些错误,待后续完善 动机 编译时的优化。 编译器可以只根据本地信息进行一些优化。例如,考虑以下代码。 x = a + b; x = 5 * 2; 优化器很容易识到,x的第一个赋值是一个 "无用的 "赋值,因为为x计算的值从未被使用(因此第一个语句可以从程序中
阅读全文
摘要:1. 污点分析的基本原理 污点分析可以抽象成一个三元组<sources, sinks, sanitizers>的形式。sources:污点源,代表直接引入不受信任的数据或者机密数据到系统中。sink:污点汇聚点,代表直接产生安全敏感操作或者泄露隐私数据到外界。sanitizer:无害处理,代表通过数
阅读全文
摘要:概述 Motivation: dynamic taint analysis也被称为dynamic data flow tracking (DDFT)。State-of-the-art 的动态污点分析工具通常建立在动态二进制插桩之上,对每条可能的指令进行插桩并依靠运行时信息来决定指令是否需要进行污点传播
阅读全文
摘要:文章 Liang H, Pei X, Jia X, et al. Fuzzing: State of the art[J]. IEEE Transactions on Reliability, 2018, 67(3): 1199-1218. 综述 Fuzzing技术可以概括为通过自动化生成并执行大量
阅读全文
摘要:OWASP TOP10 2021 https://owasp.org/Top10/
阅读全文
摘要:0.原文 Scalable graph-based bug search for firmware images https://github.com/qian-feng/Gencoding 1.Raw-feature-extractor 模块复现 1.1 生成 二进制文件的acfg。存储到.ida
阅读全文
摘要:参考论文 Scalable graph-based bug search for firmware images https://github.com/qian-feng/Gencoding windows 1.1 安装python2.7 https://www.python.org/downloa
阅读全文
摘要:9.1 交叉引用 Xref 即一个地址引用另一个地址 分为 代码交叉引用 数据交叉引用 函数调用图 控制流图 从9.2看出,流程图以基本块为单位,流为边 而调用图以函数为单位,函数调用为边 右方注释 代码xref Main函数中第0x2A字节处提出引用。。 箭头向下表示在高地址。 P表示类型,见后面
阅读全文
摘要:IDA不提供撤销操作 大部分操作可以通过 菜单//工具栏//热键,鼠标右键实现 5.1 IDA主要的数据显示窗口 ESC关闭窗口 5.1.1 反汇编窗口 IDA-VIEW /disassembly 空格切换列表、图形视图 图形视图将 一个函数 分解成基本块(基本块是连续执行的指令序列,通常开头是分支
阅读全文
摘要:2.1 分类工具 拿到文件后第一步,确定文件类型。注意文件扩展名可能是不正确的,所以要使用工具 2.1.1 file 在*nix风格的操作系统,和cygwin /mingw 工具都提供 通过识别幻数(magic number)判断文件类型。如Windows PE的magicnumber 为 MZ(M
阅读全文
摘要:1.1 四代语言:机器语言(机器语言程序被称为二进制文件) 汇编语言 第三代语言(C,JAVA,...) 第四代语言 1.2 反汇编器 机器语言输入,输出汇编语言 反编译器 汇编语言/机器语言输入,输出高级语言 1.4 反汇编算法 线性扫描反汇编 gdb windbg objdump 递归下降反汇编
阅读全文
摘要:buildroot简介 1. 概述 https://buildroot.org/downloads/manual/manual.html#_getting_started 目前我的理解是,buildroot是一个可以自动化的构建完整Linux系统的工具。 一般来说,要构建一个系统,需要配置 a cr
阅读全文
摘要:一.首先安装虚拟机ubuntu20.04 在VirtualBOX安装ubuntu20.04(amd64,这里最好用amd64版的linux),并安装增强功能。 并更换下载源为阿里云(在settings->about->software update) < 解决Unable to locate pac
阅读全文
摘要:title: 十分简单的宏病毒 date: 2019-04-14 categories: security tags: 宏 功能是发送邮件,内容为对方打开这个文件的路径。 用了ActiveDocument.FullName获取当前文档的path。 不知道为什么Dim mail As New CDO.
阅读全文
摘要:实验环境、代码、及准备 https://www.cnblogs.com/lqerio/p/12870834.html vul6 Vul6和vul2类似,可以覆盖foo的ebp的一字节。而这里有一个exit(0),需要绕过。绕过思路见3.6exploit6 shellcode(构造过程) 原理是运行/
阅读全文
摘要:实验环境、代码、及准备 https://www.cnblogs.com/lqerio/p/12870834.html vul5 Snprintf函数,百度百科: 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中。 (1) 如果格式化后的字符串长度 < size,则将此字符
阅读全文
摘要:实验环境、代码、及准备 https://www.cnblogs.com/lqerio/p/12870834.html vul4 观察foo函数,可见问题在于最后一次tfree(q)。由于之前已经tfree了q,现在相当于tfree一个不存在的空间,导致出错。 再看自定义的函数 CHUNK结构体占8个
阅读全文