自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 在binary环境下的函数类型推断(一)

个人模型设计

2022-10-27 14:11:33 413 1

原创 docker容器获取gpu的全部计算资源

docker中使用gpu计算资源

2022-06-28 10:49:32 1105

翻译 2021 NDSS

NDSS summer移动安全:2区块链安全:1As Strong As Its Weakest Link: How to Break Blockchain DApps at RPC ServiceKai Li, Jiaqi Chen, Xianghong Liu, and Yuzhe Tang (Syracuse University); XiaoFeng Wang (Indiana University Bloomington); Xiapu Luo (The Hong Kong Polytec

2022-01-18 15:46:26 942

原创 test %eax %eax

今天反汇编碰见了cmp test and几个指令作为跳转的条件有一些弄混了,所以来详细了解一下这几个指令的区别。首先详细了解该指令的时候需要首先熟悉几个标志位,在and指令按位逻辑与两个操作数(accumulator, reference)结果会借用commonBits和ZF(zero flag), SF(sign flag), PF(parity flag)来展示引用accumulator和reference的按位逻辑的结果不同设置了ZF(zero),SF(sign),PF(parity)这三个标记

2022-01-18 09:24:43 1110

原创 基于NLP的软件分析和程序漏洞挖掘(二)

找到NLP在软件分析和漏洞挖掘的契合点之后,我们需要去调研这方面现有的研究情况。发现已经有人使用NLP来对二进制代码进行分析,主要有3种方向上使用NLP分析二进制代码,但大多数都是对二进制代码进行静态分析,以下就这三种分析方向进行介绍。Code Similarity Detection至今,已经有两篇文章使用NLP做代码相似性检测,分别是 Safe: Self-attentive function embeddings for binary similarity 发表在2019 Detection of

2021-12-01 14:33:27 1377

原创 基于NLP的软件分析和程序漏洞挖掘(一)

1.前言由于深度学习模型对数据较高的依赖性,需要大量标注好的数据,数据量少必定会造成模型过拟合和泛化能力差。因此,NLP领域开始关注海量未标注的数据。预训练模型的最初探索主要致力于浅层语义表示和上下文语义表示。最早关注的浅层语义表示是Word2Vec等,为每个单词学习一个固定的单词编码,而后在多个任务上都用相同的编码,这样表示方法必定带来无法表示一词多义的问题,所以NLP开始探索具有上下文语义的单词词嵌入。而现今病毒,网络攻击不再是攻击单一的攻击面,可能对整个系统的所有部件进行修改最后形成攻击者想执行的

2021-11-24 11:39:47 955

原创 二进制级别自动漏洞检测(四)

关于SMT(Satisfiability Modulo Theories)学习SAT解决器是自动的、有效的。所以它们通常被用于软件检测的“引擎”。但是通常系统以一种比布尔要高级的语言形式来设计,并且将这种逻辑转化到布尔逻辑的做法是很昂贵的。所以SMT(Satisfiability Modulo Theories)就是一种有效的推理“引擎”能在更高的抽象级别上进行本地推理,同时能保证SAT高效率和全自动的能力。将从以下的几个方面来阐述:一阶逻辑具体理论问题如何理论解决结合理论的具体解决方式联合

2021-03-09 16:07:30 241 1

原创 技术积累(1)——typedef struct与struct的区别

一、c++和c中的使用在C中定义一个结构体类型要用typedef:typedef struct Student{ int a;}Stu;于是在声明变量的时候就是:Stu stu1;注意:如果没有typedef就必须用struct Student stu1;来声明。这里的Stu实际上就是struct Student的别名。Stu==struct Student。另外这里也可以不写Student,因为typedef struct和struct就可以定义一个结构体。在C中定义一个结构体类型很简单

2021-02-23 11:45:55 511

原创 关于Intel pin的学习笔记(一)——KNOB< TYPE>构造函数的解释

关于KnobOutputFile()函数的解释对于KnobOutputFile()这个函数我在网上很少能找到对他的详细解释,今天好好的研究了一下,顺便记录下来。首先对这个函数的第一映像是,为啥文件的创建要用这么个鬼东西。如果我们回顾一下如何声明文件名变量KnobOutputFile,也会觉得我们为什么要为这种情况创建这么复杂的东西很奇怪。KnobOutputFile是一个在Intel pin内定义的类型选择器,用于自动解析和管理命令行开关。我们想在不同的测试执行中使用不同的文件名;最好的方法是用命令行发

2021-01-21 16:45:33 931

翻译 二进制级别自动漏洞检测(三)

为了更好的找到一个污点分析方案,首先了解一下动态、静态污点分析以及动静结合的污点分析。1动态污点分析1.1DAT介绍首先介绍动态污点分析(DTA),也被称作动态信息流跟踪,该方法是关于观察某些不受信任的程序在被监视的环境中执行时的行为。DTA方法的中心思想时将一些传入的数据值标记为受污染的,并在指令执行时通过操作数传播它们。这是通过将CPU寄存器或内存位置中的某些值标记为受污染的值,并在代码执行期间观察受污染的数据的传播来实现的。污染传播策略与每条指令相关联,以根据输入操作数的污染状态指定每个输出操作

2021-01-15 14:32:11 989 1

原创 二进制级别自动漏洞检测(二)

源代码在大多数软件安全分析的情况下是不可用的。因此,二进制代码分析被用于许多原因,包括软件取证,恶意软件分析,性能分析和调试。文献中有很多二进制代码分析方法,其中最常用的有符号执行、concolic执行、静态污染分析和动态污染分析为了验证我根据之前一篇文章所提出的一种想法,准备一步步进行实现。首先需要建立自己的污点分析工具,污点分析分为静态和动态。对于动态污点分析已经有一系列工具被提出,本文将进行详细介绍。为了改善符号执行中发现的一系列问题,研究者们开始污点分析,最早的污点分析是由Funnywei提出的(

2020-12-21 15:21:45 1540 1

原创 学习编写内核程序(一)kernel modules

尽管单块内核比微内核快,但它的缺点是缺乏模块化和可扩展性。在现代的单片内核上,这已经通过使用内核模块解决了。内核模块(或可加载内核模式)是一个目标文件,其中包含可以在运行时扩展内核功能的代码(根据需要加载);当不再需要内核模块时,可以卸载它。大多数设备驱动程序以内核模块的形式使用。一个kernel module例子这是一个简单的kernel module例子,载入内核时发出“hello”,再卸...

2020-11-27 10:09:11 2548

原创 二进制级别自动漏洞检测(一)

关于自动缓冲区溢出漏洞检测技术学习(MAYHEM)关于MAYHEM的总览文章利用了HTTP服务orzHttpd 来展示遇到的主要问题和MAYHEM的工作流程。(利用MAYHEM找到的一个漏洞作为例子)#define BUFFSIZE 4096typedef struct{ char buf[BUFSIZE]; int used;}STATIC_BUFFER_t;typedef struct conn{ STATIC_BUFFER_t read_buf; ...//omitted}C

2020-11-27 10:05:26 816 1

原创 经典内存漏洞简述

Type confusion类型混乱确实是一个很有趣也是很精巧的一个内存漏洞。而type confusion导致RCE(remote code execution)在最近几年也多了起来。其实就像是控制流劫持(control flow hijack)对象强制类型转换后导致虚拟页表的混乱,本来p类不能使用的经过强制类型转换后,可以使用d类的虚函数表并使用其中的函数。具体到程序中的实际使用情况...

2019-11-11 16:18:05 1766

原创 一种趣的软件隔离方式

最近读到一篇16年NDSS的文章,感觉很有趣,同时也给自己的研究方向带来了一定的帮助,给大家分享一下,希望能给大家带来帮助。废话不多说,直接开始。不需要MMU(memory management unit)的XoM所有的RISC指令集包括咱们最常用的ARM的所有内存读取操作必然是用一个加载指令,比如:ldr。但是这样对于手机这样的小型移动设备很不友好,所以需要MMU的XoM提出。大概方法是这样...

2019-11-07 11:49:55 374

原创 对于特殊数据类型如:off_t输出

最近在学习整型溢出漏洞的时候碰到off_t等这样嵌套很深的数据类型,对于理解程序带来了大量的麻烦和误解,特来记录下学习到的解决办法C 语言可以统一转换为 long long 再用 %lld 输出。如果需要更加高精度的结果可以参考cplusplus比如int64_t,但需要注意的是,此时%lld输出只适合在32位平台上。比较好的方法是使用PRId64来格式化输出,从而实现跨平台(当然首先需要提前...

2019-07-26 16:09:14 3112

转载 几种常用的gcc程序保护命令

转自PWN——GCC编译中几种保护打开和关闭的参数NX:-z execstack / -z noexecstack (关闭 / 开启) 不让执行栈上的数据,于是JMP ESP就不能用了Canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (关闭 / 开启 / 全开启) 栈里插入cookie信息P...

2019-07-22 15:12:41 996 2

翻译 JIT-ROP发展历程

过去在最早的这些目标中的许多都是通过所谓的运行时攻击(利用流行应用程序(例如浏览器或文档阅读器)中的漏洞)实现的。也就是通过正常的控制流获得高级权限。尽管在风格和实现上存在差异,但它们都有一个共同的目标:在脆弱的应用程序中重定向程序逻辑的能力。遗憾的是,使这些攻击成为可能的安全漏洞的历史现在已经延续到第三个十年,而且仍然如此。对现代系统构成严重威胁。事实上,尽管已经实现了许多防御措施来限制这些攻击...

2019-07-04 09:28:32 1247

翻译 (二)学习英特尔处理器一般架构原则

软件的特权级别在IaaS这样的云环境下(Amazon EC2)它们的CPU运行软件是在四个不同特权级别如下图。每一个特权级别都比下面一个级别有更高的权限级别,所以一个高级别权限的软件可以自由的读写在低级别权限软件上的代码和数据。也就是说,一个软件信任所有比自己权限高的软件,并且系统安全必须考虑所有特权级别的软件。系统管理模式(SMM)用于主板制造商实现风扇控制和深度睡眠等功能,以及模拟缺少...

2019-04-25 16:52:07 279

翻译 (一)学习英特尔处理器一般架构原则

前言分析软件安全的时候必然需要详细理解软件执行的环境,也就是x86。如果很熟悉的大佬可以回避。。。。为了能活着写完,我在这里忽略英特尔的其他处理器。以下提到的都是英特尔核心处理器。概览一个计算机主要资源是内存和处理器。在装有英特尔处理器的电脑里DRAM芯片作为内存,一个或多个CPU芯片用作逻辑处理器。这些资源都被系统软件管理。一般来说,一台机器里面有两个系统软件,操作系统,内核系统。英特尔架...

2019-04-24 15:22:41 437

翻译 为了挖掘智能合约的漏洞来拆解以太坊(USENIX 2018)

原文提出一种可以自动检测智能合约漏洞的工具,并且讲述了大致的设计思路(可以拆分不同多种方法使用)像比特币这样的加密数字货币不仅提供去中心化的货币流通,还给交易提供程序化方法。以太坊,紧接着比特币第二大的加密数字货币,它是首先提出用图灵完备语言去列举交易过程,因此能被称为智能合约。这就为攻击者提供很好的目标,因为安全漏洞经常跟随着金融目标。在这篇论文里,我们考虑智能合约漏洞自动识别和漏洞生成这样的...

2019-04-05 12:05:40 1029 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除