llvm pass】的更多相关文章

1. 下载和编译 LLVM LLVM 下载地址 http://releases.llvm.org/download.html,目前最新版是 6.0.0,下载完成之后,执行 tar 解压 llvm 包:   1 2 tar -xzvf llvm-6.0.0.src.tar.xz   再下载 Clang 解压:   1 2 tar -xzvf cfe-6.0.0.src.tar.xz   将 cfe-6.0.0.src 目录复制到 llvm-6.0.0.src/tools,重命名为 clang.通过…
https://polly.llvm.org/docs/Architecture.html#polly-in-the-llvm-pass-pipeline…
之前的工作一直集中在clang中,最近有点空闲时间,又重新熟悉了一下Pass的书写过程.(参考LLVM CookBook和http://llvm.org/docs/WritingAnLLVMPass.html) 比如要实现一个基本的读取函数名的Pass,比如FuncBlockCount.cpp #include "llvm/Pass.h" #include "llvm/IR/Function.h" #include "llvm/Support/raw_os…
#include "llvm/IR/CallSite.h" #include "llvm/IR/Instruction.h" #include "llvm/IR/IntrinsicInst.h" #include "llvm/IR/Intrinsics.h" #include "llvm/IR/Module.h" #include "llvm/IRReader/IRReader.h" #…
我们编写LLVM Pass或者将LLVM嵌入自己的项目时,需要用到CMake来组织自己的项目目录. Documents [1] http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project [2] http://llvm.org/docs/CMake.html#developing-llvm-passes-out-of-source Common Issues [1] https://github.com/sysrel/PROMPT…
https://github.com/google/sanitizers/wiki https://github.com/google/sanitizers/wiki/AddressSanitizer AddressSanitizer (aka ASan) is a memory error detector for C/C++. It finds: Use after free (dangling pointer dereference) Heap buffer overflow Stack…
好久没弄ollvm了,可以继续了,今天给ollvm新增了一个pass,用来加密字符串,这个pass是从别的库里面扒出来的. 本文是基于在Windows 上使用VS2017编译出来的ollvm,在这个基础上来添加. 第一步: 寻找两个pass的代码 头文件 #ifndef _STRING_OBFUSCATION_H_ #define _STRING_OBFUSCATION_H_ // LLVM include #include "llvm/Pass.h" #include "l…
一.前言 <iOS编译过程的原理和应用>文章介绍了 iOS 编译相关基础知识和简单应用,但也很有多问题都没有解释清楚: Clang 和 LLVM 究竟是什么 源文件到机器码的细节 Linker 做了哪些工作 编译顺序如何确定 头文件是什么?XCode 是如何找到头文件的? Clang Module 签名是什么?为什么要签名 为了搞清楚这些问题,我们来挖掘下 XCode 编译 iOS 应用的细节. 二.编译器 把一种编程语言(原始语言)转换为另一种编程语言(目标语言)的程序叫做编译器. 大多数编…
目前市面上的许多安全公司都会在保护IOS应用程序或安卓APP时都会用到OLLVM技术.譬如说顶象IOS加固.网易IOS加固等等.故而我们今天研究下OLLVM是个什么.将从(1)OLLVM是什么?OLLVM与LLVM的关系:(2)OLLVM的三大功能:(3)OLLVM的配置过程:(4)OLLVM源码分析.(4)OLLVM使用四个方面进行说明. (一)OLLVM是什么? OLLVM是一款是由瑞士西北科技大学开发的一套开源的针对LLVM的代码混淆工具,旨在加强逆向的难度,整个项目包含数个包含独立功能的…
近来,ollvm在国内移动安全,尤其是安全加固上的使用越来越广泛,ollvm的混淆和反混淆也被视为比较高等的知识之一,让很多人感到无从下手,望尘莫及.如果你在google上搜索ollvm,你会发现第一页都是中文的搜索结果.其实,llvm和ollvm在国外是比较传统的东西,说到底也只是C++代码,难度大概等同于ART系统源码的程度. 本篇文章目地是为了从另一个从未出现的角度来让一个完全不懂llvm的新手快速上手ollvm,大神请直接跳过. 注意:本文因角度不同,若引起误会,纯属个人理解不同,本人不…