[iOS Hacker] obfuscator-llvm Xcode集成配置

iOS/MacOSX/移动安全 exchen 6930浏览 0评论

一、简介

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。下载完成之后,进入到解压之后目录下,输入以下命令进行安装

(3) 编译

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

三、集成到 Xcode 使用

(1) 修改 Info.plist

首先复制一个 Obfuscator.xcplugin:

将以下键值修改一下:

修改完成,执行以下命令:

(2) 修改 xcspec

执行如下命令:

将以下键值修改一下:

(3) 修改 strings

执行如下命令:

将以下键值修改一下:

最后执行以下命令:

(4) 修改 Xcode 的编译设置

打开 Xcode,选择一个项目,修改 Build Setting 的 GCC_VERSION 为 Obfuscator 4.0,如图下图所示:

然后添加 obfuscation flags

四、效果

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

转载请注明:exchen's blog » [iOS Hacker] obfuscator-llvm Xcode集成配置

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (12)

  1. 完全按照上面写的, 路径也换成自己的clang路径, 可是编译之后, 看二进制并没有控制流扁平化 -mllvm -fla
    ding10个月前 (12-13)回复
    • 你的意思是编译后没有混淆吗?
      exchen10个月前 (12-15)回复
      • 是的 编译没有报错 但是反汇编查看二进制并没有混淆
        formula9个月前 (02-01)回复
        • 你有在 CFlag 里设置混淆参数了吗?
          exchen3个月前 (07-21)回复
  2. 请问 Obfuscator.xcplugin这个插件在哪,使用ollvm编译后没看到这个插件啊
    qwerty9个月前 (01-17)回复
    • Obfuscator.xcplugin 这个是从 Xcode 里复制的,你仔细看一下集成的第一步 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
      exchen9个月前 (01-20)回复
  3. 您好!按照上面的操作最后编译出现clang-4.0: error: cannot specify -o when generating multiple output files Command /Users/rqunner/Desktop/混淆工具/build/bin/clang failed with exit code 1 您遇到过没有啊?怎么解决的?
    rqunner9个月前 (01-22)回复
    • 你用的是不是 Xcode9?Xcode9 有点问题,你用 Xcode8 试一下应该没问题。
      exchen9个月前 (01-22)回复
  4. /path/to/obfuscator_bin/clang 这个怎么处理呀,卡在这里了
    Amanda8个月前 (03-03)回复
    • /path/to/obfuscator_bin/clang 是你 obfuscator 版本的 clang 编译的路径。
      exchen3个月前 (07-21)回复