Xcode Ghost Checker.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Code
Release
Snapshot
.gitignore
LICENSE
README.md

README.md

XcodeGhostChecker

Xcode Ghost Checker.

Release

不想编译的就下载这个:XcodeGhostChecker.zip

解决的问题

自己开发的应用已经提交到AppStore了,我提交了很多个版本,要一个个去安装抓网络包才能检测我的应用有没有包含XcodeGhost代码。幸好我手头有上线前备份的ipa包,使用XcodeGhostChecker瞬间就能帮你检测所有ipa包!

功能

  • 检测ipa包中是否包含XcodeGhost代码
  • 批量处理,可以一次性处理多个文件或目录下的*.ipa文件

处理范围

  • 自己编译出来的ipa包都可以;
  • 归档提交到AppStore的包也可以;
  • AppStore下载下来的包不可以检测!因为被加过壳,需要破解后才可以用本工具检测。

原理/检验

  • XcodeGhost的源码已经开放出来,将它编译到自己的程序里;
  • 使用class-dump工具,输出程序的头文件,定位到中毒的程序会包含的头文件信息,采集这个头文件信息作为对比样本A;
  • 再次使用class-dump,输出需要检测的程序的头文件信息B;
  • 查找B中是否包含样本A来判断ipa包是否包含XcodeGhost代码。
  • 从第三方平台下载未加壳的 网易云音乐 联通客户端,运行工具验证后证明工具有效!

Build

  • 安装CocoaPods
  • 进入Code/目录
  • 执行明令: pod update
  • 打开XcodeGhostChecker.xcworkspace进行编译

Test

Release/XcodeGhostSample.ipa文件是一个中毒的样本,可以可以用来测试校验

TODO

  • OS X应用开发不是很熟悉,搞界面浪费了很多时间,要花点时间熟悉
  • 优化界面上的显示,特别是等待指示器
  • 可以优化解压,不需要解压所有文件
  • 对加壳应用的检测方式需要优化(了解加壳后的二进制结构)

感谢

再次感谢class-dump