Skip to content
/ intrude Public
forked from imoldman/intrude

A handy tool for intruding a dylib to a iOS App

License

Notifications You must be signed in to change notification settings

mewxiv/intrude

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

intrude

什么是intrude

由于各种原因,iOS越狱现状越来越满足不了实际需求。但有时候我们又想研究某第三方App的实现,因此如何在一个非越狱iOS设备上实现这个目的就变成了一个需要解决的需求。intrude的设计初衷就是用来做这个事情的。

intrude是一个小巧的工具,其作用是在未越狱机器上给一个iOS App嵌入一个或多个dylib

如何使用

  1. 首先该工具只能运行在Mac OS X系统上,因此你得准备一台Mac

  2. 将目标App从目标设备上导出,成ipa文件。

  3. 使用如下命令将/path/to/bar.dylib嵌入到/path/to/foo.ipa

     ./intrude --ipa       "/path/to/foo.ipa" \
               --dylib     "/path/to/bar.dylib" \
               --bundle    "li.oldman.test"
               --sign      "iPhone Developer: Oldman Li (QNRMA23W53)" \
               --provision "/path/to/li.oldman.test.mobileprovision"
    

    其中,bundle, sign, privision 为嵌入过程所必须的重签名参数,这三者必须互相对应

  4. 上步骤会生成一个ipa文件/path/to/foo.ipa.modified.ipa,此ipa文件即包含了bar.dylib, 将其重新导入设备即可。

已知问题

  1. 注意,原始ipa中可执行二进制文件必须为无加密版本(即俗称的砸壳版本)。

  2. 简易起见,目前本工具重新生成ipa文件时未将Plugins目录包含在内。

实现原理

如果你对实现原理感兴趣,这里的简短说明可以作为参考。

本质上,一个二进制文件需要依赖哪些dylib,这些信息是记录在Mach O结构中的。而intrude便是改写了Mach O结构,增加了一条加载dylib的指令,使之能够在运行时即加载它。这部分实现可参阅这里

About

A handy tool for intruding a dylib to a iOS App

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 61.4%
  • C++ 28.1%
  • Python 5.3%
  • Objective-C 5.2%