草庐IT

LLVM_Binaries

全部标签

iOS启动优化 —— LLVM编译流程 & Clang插件开发

1.LLVM1.1LLVM概述LLVM是架构编译器的框架系统,以C++编写而成,用于优化任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time)。对开发者保持开放,并兼容已有脚本。目前LLVM已经被苹果IOS开发工具,XilinxVivado,Facebook,Google等各大公司采用。1.2传统编译器设计源码SourceCode+前端Frontend+优化器Optimizer+后端Backend(代码生成器CodeGenerator)+机器码MachineCode,如下图所示前端Fronte

O-MVLL:支持ARM64的基于LLVM的代码混淆模块

O-MVLL介绍O-MVLL的开发灵感来自于另一个著名的基于LLVM的代码混淆项目ollvm,并在其基础上做了创新和改进。O-MVLL的混淆逻辑实现方式也是通过LLVMPass,支持也仅会支持ARM64架构,根据作者所说,这是由于当初的设计选择。此外,作者还使用了pybind11,用户可以使用python脚本来对O-MVLL进行配置,从而灵活的运用作者封装好的各种代码混淆方式。混淆后的可执行文件相比于正常编译的可执行文件来说,抵抗逆向工程的能力增强,但与源代码的功能相同,能够在一定程度上保护源代码和程序,增加逆向工程的分析成本。作者的介绍文档: O-MVLLDocumentation(obfu

O-MVLL:支持ARM64的基于LLVM的代码混淆模块

O-MVLL介绍O-MVLL的开发灵感来自于另一个著名的基于LLVM的代码混淆项目ollvm,并在其基础上做了创新和改进。O-MVLL的混淆逻辑实现方式也是通过LLVMPass,支持也仅会支持ARM64架构,根据作者所说,这是由于当初的设计选择。此外,作者还使用了pybind11,用户可以使用python脚本来对O-MVLL进行配置,从而灵活的运用作者封装好的各种代码混淆方式。混淆后的可执行文件相比于正常编译的可执行文件来说,抵抗逆向工程的能力增强,但与源代码的功能相同,能够在一定程度上保护源代码和程序,增加逆向工程的分析成本。作者的介绍文档: O-MVLLDocumentation(obfu

iOS 编译过程 - LLVM

苹果官方资源opensource相关文献:iOS分析dyld本章节探究:1.了解LLVM架构2.编译流程3.IR与bitcode4.静态链接一、相关概念1.编译器编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码(sourcecode)→预处理器(preprocessor)→编译器(compiler)→目标代码(objectcode)→链接器(Linker)→可执行程序2.传统编译器的设计编译器前端(Frontend)任务是解析源代码。词法分析、语法分析、语义分析、检查源代码是否存在错误、构建抽象语法树AST(Abstr

iOS 编译过程 - LLVM

苹果官方资源opensource相关文献:iOS分析dyld本章节探究:1.了解LLVM架构2.编译流程3.IR与bitcode4.静态链接一、相关概念1.编译器编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码(sourcecode)→预处理器(preprocessor)→编译器(compiler)→目标代码(objectcode)→链接器(Linker)→可执行程序2.传统编译器的设计编译器前端(Frontend)任务是解析源代码。词法分析、语法分析、语义分析、检查源代码是否存在错误、构建抽象语法树AST(Abstr