P1umerのStudio.

P1umerのStudio.

Be Yourself

P1umer 今天又咸鱼了吗
27/12/2018昨晚重新做了个 ubuntu 虚拟机用来跑 libfuzzer,经过了几天的探索感觉对libfuzzer有点初步的认识了,然而意识到写libfuzzer最重要的还是熟悉对应代码的api,于是下一步打算好好看一看chrome ipc里面的函数调用关系(TODO)。但还是先从阅读chrome自带的ned-fuzzer。 appcache_fuzzer.cc 结构1234567891011121314151617181920212223242526namespace content{ namespace{ ··· } ...
AFL 初探
AFL 初探 源码分析1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311...
libfuzzer & LLVM 初探
libfuzzer build编译流程环境Ubuntu16.0412345git clone https://github.com/Dor1s/libfuzzer-workshop.gitsudo sh checkout_build_install_llvm.shsudo apt-get install -ymake autoconf automake libtool pkg-config zlib1g-devcd libfuzzer-workshop/libFuzzerFuzzer/build.sh libfuzzer-workship 趁着编译的时候去详细了解一下libfuzzer其...
IR's Journey
From Quads to Graphs: An Intermediate Representation’s Journey 1 介绍中间语言不是凭空产生的。中间语言是程序员的表述到具体的机器代码的转换辅助,而且必须弥合大量的语义差异,例如从一个 fortran 90 的机器码操作到一个三地址码表述的 add 语句。在高级语言到机器语言的转化过程中,一个优化编译器会执行很多次的 pass 来优化 IR 。使用者希望优化编译器能把这一过程执行的迅速而又准确;而编译器的编写者则希望优化代码能够尽可能的简单易懂且便于维护。我们的目标是设计轻量级的 IR 来使得简单语句可以得到快速优化。 本文讲...
V8 Iginition Interpreter
什么是字节码解释器?解释器是一种顺序执行源代码的引擎。在过去的V8中,源代码被立即编译到汇编程序并执行,但与之不同,解释器将源代码转换为高级字节指令并按顺序执行字节指令。感觉就像一个 高级汇编程序。 Ignition概要Ignition是一个基于寄存器的字节码解释器。与Java的堆栈基础不同,它实际上将值分配给CPU的寄存器并执行它们。在Ignition中,预先生成一个名为BytecodeHandler的字节码处理函数,从字节码中获取数组索引,并将生成的处理函数分配给索引,一个接一个地循环Bytecode数组,并使用相应索引的函数执行调用代码。简化版本的js代码如下:1234567891...
V8 Environmental Configuration

mark

linux

Pre Work

  • Install Git

    1
    apt-get install git
  • Install depot_tools

    1
    2
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools
    export PATH=`pwd`/depot_tools:"$PATH"
avatar
P1umer
witness me