美文网首页
从llvm编译过程看马甲混淆

从llvm编译过程看马甲混淆

作者: 改变1 | 来源:发表于2022-12-09 22:25 被阅读0次

跟苹果审核打交道时间也挺久了,市面上工具基本也都了解完了。无非是正则匹配混淆修改和修改ats代码调用逻辑树。了解llvm的初衷也是为了混淆方案,看看编译期间到底做了什么,以及混淆的时候重点应该放在哪里。通过.ll文件看下中间过程,因为.ll文件是最终生成汇编代码的最后一个过程。通过研究其可以有一些混淆方面的思路
先看下llvm编译器对我们代码做了什么


3671670579616_.pic_hd.jpg

图片中是我们写的一个方法还有里面的局部变量,右边是在.m文件在打包生成最终的二进制文件的中间态,经历了代码语法分析和语意检测后的中间编译文件。我们可以看到我们命名的部分局部变量已经被替代了
在研究过程中还发现了一个比较有意思的事情,做下记录,就是xcode提供了对编译完成代码的优化选项,下图中就是通过配置,对最后形成的二进制代码的影响


3681670580018_.pic_hd.jpg
LLVM的优化级别 -O0 -O1 -O2 -O3 -Os。llvm通过此几种级别的设置,最终呈现的二进制文件是有所不同的。所以在如果你有方案或者其他,可以通过.ll文件暂时比对下混淆前后的文件。侧重点应该放在方法执行中的修改。
最近还在看app启动优化的二进制重排,带来了一个思考就是应用类的加载顺序是不是也是一个特征。

相关文章

  • 解决 LLVM 错误提示 may only occur zero

    使用 LLVM 混淆器添加参数进行编译提示如下错误:clang (LLVM option parsing): fo...

  • LLVM 编译过程 ②

    前面一个章节已经简单介绍了LLVM。该章节主要介绍LLVM的编译过程。 1. OC源文件 2. 编译过程 命令...

  • 利用Obfuscator-LLVM在iOS中实现混淆

    1.整体流程开源项目Obfuscator-LLVM是一个带有混淆功能的编译器,是在编译阶段做混淆。我们需要下载并编...

  • Swift 编译过程

    Swift 编译过程 LLVM:LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任...

  • LLVM、REPL

    编译过程 C、OC、Swift,用到的后端都是LLVM,LLVM是架构编译器的框架系统,用C++编写而成。 swi...

  • iOS 编译过程 - LLVM

    苹果官方资源opensource[https://opensource.apple.com/releases/] ...

  • 下载与编译LLVM和Clang

    最近写编译器,要用到LLVM,记录一下在Linux下编译和安装的过程。 准备 LLVM编译器架构的前端是Clang...

  • 代码混淆

    LLVM编译过程: 预处理,词法分析,token,语法分析,AST,代码生成,LLVM IR,优化,生成,汇编代码...

  • iOS 代码混淆的新进展

    最近研究了基于LLVM的混淆工具 Hikari 、中文文档 ,从编译器层面完成了代码的安全加固,可以说是非常牛了...

  • 2019-04-11 iOS 代码混淆的新进展

    最近研究了基于LLVM的混淆工具Hikari、中文文档,从编译器层面完成了代码的安全加固,可以说是非常牛了。但作者...

网友评论

      本文标题:从llvm编译过程看马甲混淆

      本文链接:https://www.haomeiwen.com/subject/ddltqdtx.html