自定义博客皮肤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)
  • 收藏
  • 关注

原创 llvm存取fs段内容

问题最近想使用llvm的pass来对每个函数进行插桩,来模拟stack guard的功能。其中碰到了一个很棘手的问题就是如何通过llvm C API实现对fs段内容的存取。要想实现该问题,我通过查看llvm如何实现stack guard,找到了具体的解决方案。下面首先看一下llvm中stackProtector pass如何实现对fs段的存取,然后再介绍一下我自己简化版本的Stack guard。s

2017-11-18 11:21:00 337

原创 llvm生成rdrand指令

问题在做一个project的时候需要使用llvm的pass对函数进行插桩,在每一个函数头之前插入一条指令 rdrand %rax,在寻找llvm基本指令之后发现并没有生成随机数的指令,这时就想到了llvm中intrinsic函数中是否有关于rdrand指令的函数,在对llvm整个源码进行扫描之后,发现有x86的rdrand的intrinsic函数: X86_INTRINSIC_DATA(rdra

2017-11-18 09:59:47 1444

原创 llvm:Data Flow Graph

Data Flow Graph基本概念Data Flow Graph又叫数据流程图,表示在一个函数中的数据流动的方向。比如一个指令1定义了一个新变量%a,而另一个指令2用到了变量%a,此时就存在从指令1到指令2的边。llvm IR的表示形式是SSA,简单的来说SSA表示形式就是一个变量只能定义一次。x = y + 1;x = y + 2;y = 3;上面的形式就不是SSA的表示形式,因为x被定义

2017-09-24 14:07:46 2330

原创 llvm:Call Graph And Control Flow Graph

前言最近对llvm框架进行了初步的了解,才体会了llvm真正的魅力。它不仅是一个编译器框架,更是研究者们研究程序的一个有力的工具。本篇文章主要介绍一下如何对llvm的中间语言IR进行处理从而生成Call Graph(CG)和Control Flow Graph。Call GraphCall Graph又叫做函数调用图,用来记录程序中的函数调用关系的。比如: void foo(){

2017-09-24 14:07:14 3005 1

原创 linux堆内存漏洞利用之fastbin

背景介绍在前一节主要介绍了Glibc的堆内存管理的机制,在上一节的基础上,我打算介绍一下针对Glibc堆内存管理的攻击。此系列我打算按攻击面是哪一个bin来展开,主要分为: - fastbin的攻击 - smallbin的攻击 - largebin的攻击 - unsorted bin的攻击 - top chunk的攻击本文主要介绍fastbin的攻击fastbin漏洞利

2017-09-24 12:12:32 1786

原创 ptmalloc堆内存管理

背景介绍Linux的栈内存管理相信大家都已经很熟悉了,针对栈内存的攻击也是比较常见的。然而对于堆内存的管理机制可能不太熟悉,针对堆内存的攻击也是比较困难的,所以我通过阅读各种资料以及Glibc的相关源码,对Glibc下的堆内存管理机制有了一定的了解,故在此记录下学习心得。首先不同平台的堆内存管理机制是不一样的,我现在主要是针对Glibc的堆内存管理机制进行分析,Glibc的堆内存管理机制叫做ptma

2017-09-23 14:54:33 829

原创 AddressSanitizer算法及源码解析

AddressSanitizer简介AddressSanitizer是Google用于检测内存各种buffer overflow(Heap buffer overflow, Stack buffer overflow, Global buffer overflow)的一个非常有用的工具。该工具是一个LLVM的Pass,现已集成至llvm中,要是用它可以通过-fsanitizer=address选项使

2017-07-26 12:19:09 13399

翻译 使用angr和Radare解决CMU的二进制炸弹

前言最近在学习angr的使用,主要是如何利用angr来进行符号执行分析。发现了国外一篇比较实用的文章介绍如何使用angr和Radare(二进制分析框架)来分析CMU的二进制炸弹问题。故在此翻译一下这篇文章的工作。angrangr是一个使用python语言编写的二进制分析框架,它主要是进行静态和动态的符号分析,现已成为CTF比赛的一大利器。angr最主要的一个工具就是符号执行,具体的符号执行可以参考M

2017-07-26 11:52:59 2114 1

原创 seedlab:return-to-libc

声明:该教程是根据Seed Lab: return-to-libc的实验要求所写的,该教程只是演示了一下return-to-libc的一些基本的攻击原理,由于关了编译器及系统的一些保护措施,所以并不能在实际的情况下实现攻击(′▽`〃)一:背景介绍DEP数据执行保护溢出攻击的根源在于现代计算机对数据和代码没有明确区分这一先天缺陷,就目前来看重新去设计计算机体系结构基本上是不可能的,我们只能靠向前兼容的

2016-06-20 21:27:56 3097 1

原创 XSS攻击

XSS跨站攻击

2016-06-14 22:05:19 1860

原创 XposedHook:hook敏感函数

Xposed框架Xposed框架通过修改Android系统的源码,并替换Android的主程序Zygote(Init 是所有Linux程序的起点,而Zygote于Android,正如它的英文意思,是所有java程序的’孵化池’),从而能够控制Android进程的执行流程,hook java层的API。xposed的具体解析可以参考深入理解Android(三):Xposed详解首先在app_main.

2016-05-27 01:05:03 2760 1

原创 libpcap编程:Sniffer

主要实现运用libpcap(winpcap)的api进行数据链路层的抓包操作,并一层层进行解析,解析TCP, UDP, ICMP等协议。主要代码及解析如下: /************************************************************************* > File Name: sniffer.c > Aut

2016-05-27 00:57:36 728

原创 Seed lab:Remote DNS Attack

实验环境:服务器ip:192.168.86.139Victim ip: 192.168.86.137Attacker ip:192.168.86.138准备工作:安装bind9服务器:在bind9官网 下载bind9,在此下载的是bind9.10.4解压文件tar -xzvf bin9.10.4.tar.gzcd bin9.10.4,并./configure –prefix=/usr/loca

2016-05-27 00:48:45 3530 1

原创 二进制炸弹(arm)

x86上的二进制炸弹对于反汇编的练习来说还是比较经典的,由于网上有很多该程序的讲解,所以在此我打算写一下arm平台上的二进制拆炸弹这个游戏。该项目已迁移到我的个人github主页上,请访问bin2415

2016-04-14 17:01:45 2840 2

原创 Raytracing

raytracing

2016-04-14 17:00:03 490

原创 OpenglRobot

OpenglRobot该项目使用opengl做的一个机器人,能够行走,旋转,并对机器人贴了图。具体源码请参考我的github该项目已迁移到我的github博客地址,具体请访问:bin2415

2016-04-14 16:58:10 590 1

原创 vim的基本配置

Vim配置Vim的基本配置vi在程序猿的世界被冠以”编辑器之神”的美称,尤其是在linux环境下,vi是最好用的编辑器之一(还有Emacs, 被称为”神的编辑器”)。vim是vi的升级版本,vim的强大来源于它支持各种插件,方便我们进行个人定制,对于新手来说,怎么定制vim有点困难,所以在此给出一个大神已经给好的配置,仅供参考,不喜勿喷ヾ(≧O≦)〃嗷~该配置的链接,该链接有非常详细的指导,所以按照

2016-04-14 16:56:32 297

原创 mips指令集的递归小程序

c语言写的源程序:int fact(int n){ if(n return 1; else return(n* fact(n-1));}下面给出mips程序main: add $a0,$zero,2 jal fact jr $rafact: addi $sp,$sp,-8 ;adjust stack for 2 items sw $ra,4($sp) ;sa

2015-03-26 22:35:22 5938

原创 创建子进程时变量的地址与父进程一样而数值不一样的问题

操作系统中fork()用来创建子进程,大致过程是子进程复制父进程的内存内容到一块新的内存。下面来看一下我在学操作系统时碰到的问题:#include #include #include main(){ int pid; int i; char *flag[] = {"Parent:","Child:"}; pid = fork(); if (pid == 0) i =

2015-03-17 16:45:26 1155

原创 python客户端与服务器端的通信

Server.py:''' Created on 2015年3月7日 @author: pangbin2415 '''import socketsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 生成socket对象sock.bind(('localhost', 8001))

2015-03-07 09:09:46 3683

转载 python设置proxy

最近在研究python爬虫,看到一篇python设置proxy的,写来与大家分享(转载自http://www.sharejs.com/codes/python/226)import urllib2# The proxy address and port:proxy_info = {'host' : 'proxy.myisp.com', 'port' : 3182

2015-03-05 15:44:04 1639

空空如也

空空如也

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

TA关注的人

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