LLVM
江西省遂川县常驻深圳大使
南唐保大元年(943年),析泰和龙泉乡什善镇置龙泉场;南唐李璟十八年(960年)升场为县,名龙泉县;民国三年(1914年)改名,是为遂川县。
遂川县最大的镇是泉江镇; 遂川县有火车站吗?正在建渝长厦高铁遂川站
遂川三大特产金桔、板鸭、狗牯脑; 遂川县好玩的地方有源头湖公园、龙泉公园、东江源水上乐园、聚满源农庄等等;遂川县是吉安市面积最大、人口最多的县;
遂川县人口2021年遂川县人口常住户籍51万+;江西吉安遂川县;江西吉安遂川教育局官网百度自己搜
展开
-
自己动手实现基于llvm的字符串加密
前置要求对C++/C的入门知识 高中及以上的英语水平 一台电脑 对命令行的基础使用 对垃圾代码的忍耐能力 会用Google 会下载安装编译LLVM这篇文章来源于我在实现自己的产品级混淆器中遇到的现有实现方案的各种问题,编写过程中可能会出现各种中英文混用导致无法Google到相关信息,另外我是个非常糟糕的老师,文章的各种问题还望海涵。基础知识每个源码文件(大致上)对应一个翻译单元(Translation Unit), LLVM体系中每个Module对应一个翻译单元 Module是L转载 2020-10-13 15:38:47 · 972 阅读 · 0 评论 -
LLVM学习总结与OLLVM项目分析
学习了一段时间的LLVM后,难免需要对其做一个总结,同时准备下一阶段的学习工作——基于LLVM自定制代码混淆器。在此只记录学习内容,不表达实现方式。LLVM、clang、IR概述对于LLVM,个人认为可以将它理解为是一个编译器,或者是一个完整的编译架构。它将源代码(.c或者.cpp或者.m等文件代码)生成与机器无关的中间代码,称之为IR。然后对产生的IR进行优化,生成对应的机器汇编语言。这和传统编译器前端,中间优化,后端的设计模式很相似。而不同之处在于,可以通过自定制前端或者后端来使之支持编译你的语转载 2020-10-12 11:15:00 · 1437 阅读 · 1 评论 -
【教程】ollvm移植到最新的llvm10.0.1或更高版本
环境: ubuntu 14一、准备1、下载 最新版本的llvm并解压https://releases.llvm.org/2、下载最新的 ollvm 并解压https://github.com/obfuscator-llvm/obfuscator3、上诉两步完成后,下载Obfuscation.sh 放到llvm-project-10.0.1----------------------------../ollvm4.0/obfuscator./llvm-project-10.原创 2020-10-10 15:08:41 · 1555 阅读 · 1 评论 -
gcc编译参数-fPIC的一些问题
fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。gcc -shared -fPIC -o 1.so 1.c这里有一个-fPIC参数 PIC就是position independent code PIC使.so文件的代码段变为真正意义上的共享如果不加-fPIC,则加载转载 2020-06-23 14:40:24 · 487 阅读 · 0 评论 -
【LLVM】LLVM架构介绍
本文主要介绍了LLVM的架构设计。LLVM命名源自于底层虚拟机(Low Level Virtual Machine)的缩写。它并不是针对于某一种语言的编译器工具,它是一种提供支持与保护的一系列底层的工具链程序集合。让LLVM与其它编译器不同的是它的内部架构。下面就介绍LLVM的内部架构。从2000年的11月开始,LLVM被设计为一系列拥有清晰接口并且可重用的库,在那时候,开源的编程语言的实现被用作特别目的,而且经常是进行庞大的独立执行。这样的话,复用静态库(例如GCC)做静态分析或者代码重构时就会变得特转载 2020-06-18 15:33:47 · 1135 阅读 · 0 评论 -
架构编译器的感悟
所谓的编译器就是将c语言代码编译为机器代码的,先将C编译为汇编代码,再由汇编器将汇编代码编译为机器代码,CPU执行的是机器代码突然发觉好像很多书都这么说,很多人也这么说,于是很自然的记住了,但是,我突然想起了,这可是隐藏着一些道理。1,C编译为汇编,对于这个过程,应该是平台无关的,具体是怎么实现的?这个是由C编译器开发商来处理,总之,如果我用IAR ARM的话,那么同样的main函数,编译出来应该是得到 ARM 格式的汇编代码,也就是说,使用的是 ARM 指令集,同样道理,如果是 GCC..转载 2020-06-18 14:21:28 · 240 阅读 · 0 评论 -
利用LLVM,Clang制作自己的编译器
最近找到国外一大神做的利用LLVM和Clang写的修改源代码的例子,恰好项目需要做一个source-to-source的编译器与此相关,所以部分翻译一下这位大神的文章。原文地址: http://eli.thegreenplace.net/2014/05/01/modern-source-to-source-transformation-with-clang-and-libtooling/在几年前Eli-Bendersky在博客上写过一篇关于如何利用Clang制作source-to-source编译器转载 2020-06-17 11:08:31 · 806 阅读 · 0 评论 -
【深入阅读】关于LLVM,这些东西你必须知道!
原文出处: Alone_Monkey(@Alone_Monkey) http://ios.jobbole.com/92875/ 只要你和代码打交道,了解编译器的工作流程和原理定会让你受益无穷,无论是分析程序,还是基于它写自己的插件,甚至学习一门全新的语音。通过本文,将带你了解LLVM,并使用LLVM来完成一些有意思的事情。一、什么是LLVM?The LLVM Projec...转载 2018-08-02 17:01:40 · 9085 阅读 · 0 评论 -
三、llvm各种格式文件转换图、定义个pass 将指令部分 a+b 替换成 a-(-b)
一、基础知识:llvm各种格式文件转换图llvm主要具有以下几种格式的文件,其转换和关系图图中所示。1) a.c,源代码。2) a.bc,llvm的字节码的二进制形式。3) a.ll,llvm字节码的文本形式。4) a.s,机器汇编码表示的汇编文件。5) a.out,可执行的二进制文件。使用clang可以直接把源代码(a.c)编译为本机可执行文件(a.out)...原创 2018-08-02 16:08:26 · 1568 阅读 · 0 评论 -
二、在LLVM中编写pass的详细教程
.../llvm/lib/Transforms 中创建一个子文件夹,例如名字叫做MyPass。然后在此文件夹下创建如下三个文件:CMakeLists.txt、MyPass.exports、MyPass.cppCMakeLists.txt内容如下:# If we don't need RTTI or EH, there's no reason to export anything#...原创 2018-08-02 14:46:46 · 2649 阅读 · 3 评论 -
一、手把手编译OLLVM(obfuscator-llvm),并应用到Android NDK
一、要获取最新版本的obfuscator-llvm分支,可以使用以下命令:$ git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git$ mkdir build$ cd build$ cmake -DCMAKE_BUILD_TYPE=Release ../obfuscator/$ make -j7...原创 2018-07-28 17:02:53 · 6260 阅读 · 4 评论