一、简介

obfuscator-llvm 是一个开源的代码混淆编译器,能够使编译出来的文件添加垃圾代码和各种跳转流程,给逆向分析者增加难度。

二、编译

  1. 下载地址

    目前最新版的是4.0的,下载地址是 https://github.com/obfuscator-llvm/obfuscator/tree/llvm-4.0,也可以用 git 下载。

  2. 安装 cmake

    OSX 下没有 cmake,需要安装,不然是不能编译 obfuscator-llvm 的。下载地址是:http://www.cmake.org/download,我下的版本是3.4.3。下载完成之后,进入到解压之后目录下,输入以下命令进行安装

    sudo ./bootstrap && sudo make && sudo make install    
  3. 编译

    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

    编译成功之后 clang 在 build 下的 bin 目录。

三、集成到 Xcode 使用

  1. 修改 xcplugin

    首先复制一个 Obfuscator.xcplugin

    cd /Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/
    sudo cp -r Clang\ LLVM\ 1.0.xcplugin/ Obfuscator.xcplugin
    cd Obfuscator.xcplugin/Contents/
    sudo plutil -convert xml1 Info.plist
    sudo vim Info.plist

    将以下键值修改一下

    <string>com.apple.compilers.clang</string> -> <string>com.apple.compilers.obfuscator</string>
    <string>Clang LLVM 1.0 Compiler Xcode Plug-in</string> -> <string>Obfuscator Xcode Plug-in</string>
  2. 修改 xcspec

    执行如下命令

    sudo plutil -convert binary1 Info.plist
    cd Resources/
    sudo mv Clang\ LLVM\ 1.0.xcspec Obfuscator.xcspec
    sudo vim Obfuscator.xcspec

    将以下键值修改一下

    <key>Description</key>
    <string>Apple LLVM 8.0 compiler</string> -> <string>Obfuscator 4.0 compiler</string>
    <key>ExecPath</key>
    <string>clang</string> -> <string>/path/to/obfuscator_bin/clang</string>
    <key>Identifier</key>
    <string>com.apple.compilers.llvm.clang.1_0</string> -> <string>com.apple.compilers.llvm.obfuscator.4_0</string>
    <key>Name</key>
    <string>Apple LLVM 8.0</string> -> <string>Obfuscator 4.0</string>
    <key>Vendor</key>
    <string>Apple</string> -> <string>HEIG-VD</string>
    <key>Version</key>
    <string>7.0</string> -> <string>4.0</string>
  3. 修改 English.lproj

    执行如下命令

    cd English.lproj/
    sudo mv Apple\ LLVM\ 5.1.strings "Obfuscator 3.4.strings"
    sudo plutil -convert xml1 Obfuscator\ 3.4.strings
    sudo vim Obfuscator\ 3.4.strings 将以下键值修改一下

    将以下键值修改一下

    <key>Description</key>
    <string>Apple LLVM 8.0 compiler</string> -> <string>Obfuscator 4.0 compiler</string>
    <key>Name</key>
    <string>Apple LLVM 8.0</string> -> <string>Obfuscator 4.0</string>
    <key>Vendor</key>
    <string>Apple</string> -> <string>HEIG-VD</string>
    <key>Version</key>
    <string>7.0</string> -> <string>4.0</string>

    最后执行以下命令就大功告成了

    $ sudo plutil -convert binary1 Obfuscator\ 3.4.strings
  4. 去 Xcode 里看下编译设置

然后添加 obfuscation flags

四、效果

混淆之后,用静态工具分析效果如下图:

iOS Hacker obfuscator-llvm Xcode集成配置相关推荐

  1. obfuscator-llvm Theos 集成配置

    之前我写过一篇文章是关于在 Xcode 里怎么集成配置 obfuscator-llvm obfuscator-llvm Xcode集成配置 有些情况下我们使用 Theos 开发 tweak,需要将 o ...

  2. xcode各项配置详解

    1.Xcode IDE概览 说明:从左到右,依次是"导航窗格(Navigator)->边列(Gutter)->焦点列(Ribbon)->代码编辑窗口(Standard/Pr ...

  3. 细聊 Cocoapods 与 Xcode 工程配置

    前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...

  4. iOS之深入解析多环境配置的实现方案

    一.多 target 形式配置多环境 如下所示,选择工程 TARGETS,新创建一个 targets: 创建完成后,可要发现产生了一个 plist 文件,这个 plist 就是对应新创建的 targe ...

  5. iOS Hacker 重签名实现无需越狱注入动态库 dylib

    iOS Hacker 重签名实现无需越狱注入动态库 dylib 一.获取 ipa 文件 iOS 的应用都是打包成 ipa 的文件格式,ipa 文件实际上就是 zip 格式的文件,通过 unzip 可以 ...

  6. iOS Hacker 动态库 dylib 注入

    iOS Hacker 动态库 dylib 注入 很多情况下我们希望自己写的代码能够在其他应用中运行,如果代码简单的话,可以写 Tweak 或者使用 Cycript.但如果代码多的话,那最好是写一个动态 ...

  7. iOS编程--Xcode使用指南1--爱的初印象

    工欲善其事,必先利其器,熟悉Xcode的操作,可以大大提高我们编码,调试的效率,因此从本篇开始,我会尽量详细的介绍Xcode的使用. 0.Xcode的官方描述: Xcode 是用于构建 Mac OS ...

  8. Storefront与NetScaler的集成配置 - part1

    Storefront与NetScaler的集成配置 - part1 http://kaiqian.blog.51cto.com/blog/236001/1344447 Storefront与NetSc ...

  9. Xcode SVN配置

    Xcode SVN配置 Xcode SVN配置 编辑 ~/.subversion/config 文件  注意:假设".subversion"文件夹不存在.请执行"svn ...

最新文章

  1. ajax请求数据渲染个人中心页面
  2. MPB:中国地大侯卫国组-​ 针对热泉原位培养矿物的低质量DNA提取方法
  3. Question: Short And Long Read Sequencing
  4. 2017-2019年全国大学生智能汽车竞赛获奖数据分析
  5. python在线编辑器最新_Editor.md 二次开发-markdown在线编辑器
  6. 一般处理程序制作的验证码
  7. 淘宝网的技术发展史(二) ——Oracle替换MySQL
  8. 注释嵌套注释_注释梦Night
  9. 文献综述写作之“结构内容”
  10. 中河广播服务器怎么连接无线话筒,无线话筒怎么连接音响 话筒连接音响方法...
  11. 2018ICPC赛后总结
  12. 虚拟机linux下git clone 报SSL connect error错误
  13. linux黑群晖安装教程,黑群晖菜鸟安装教程(一)制作U盘引导及软洗白!
  14. C# WinForm拖拽文件+获取exe程序所在目录上上上级目录+复制单个文件并保存+复制某文件夹内文件到另一文件夹
  15. 神舟战神换cpu教程_神舟战神做工如何?神舟战神K650D-A29拆机图解教程
  16. Google网站流量统计工具
  17. 操作系统之进程管理习题
  18. 励步启蒙 android平板,励步启蒙官方版app
  19. 遵义微红科技微商分佣返利系统开发,助力香港微商企业全方位拓客!
  20. 网曝小米HR威胁员工不许仲裁,称“仲裁会留记录,影响子女将来入职小米”!...

热门文章

  1. POJ1753 棋盘翻转(位压缩+广度优先搜索)
  2. DE1-LINUX运行
  3. SVN钩子hooks使用
  4. 登录注册的基本加密方法(可逆)
  5. Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。...
  6. Python学习-基础篇7 网络编程
  7. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6
  8. 参数签名ascii码排序的坑
  9. Excel 文件读取
  10. Linux自定义命令