iOS安防及越狱开发相关知识总结
iOS安防及越狱开发相关知识总结
首先要有一个越狱设备,没得说的。
脱壳
因为从AppStore下载的ipa都是加了壳的(苹果把开发者上传的ipa进行了加壳后财放到AppStore的),所以加壳的ipa要先去壳。因为通过xcode打的包是没有加壳的,所以在第三方渠道如PP助手、itools等应用市场有很多ipa是开发者直接分发没有加壳的。
脱壳可以用clutch
、dumpdecrypted
或者使用gdb調試
等解密去壳
Clutch脱壳破解:iOS逆向之ipa破解
iOS逆向之App脱壳:http://www.jianshu.com/p/47836c78eb0a
App脱壳及ipa破解:iOS逆向:App脱壳/ipa破解
iOS逆向工程之App脱壳:http://www.cnblogs.com/ludashi/p/5725743.html
GDB命令行调试
gdbiOS下动态调试的利器。(llvm对应gcc),(lldb对应gdb),lldb里面对应的调试命令跟gdb里没太大区别。 gdb的安装:在cydia中添加源:cydia.radare.org 。搜索 GNU Debugger,安装即可。
更多的详情介绍参考:
进程注入工具cycript
Cycript安装可以前往Cydia下载安装。
更多关于Cycript:
脱壳工具dumpdecrypted
dumpdecrypted:https://github.com/stefanesser/dumpdecrypted/archive/master.zip
下载后,解压运行make编译,就会在当前目录下生成dumpdecrypted.dylib文件
头文件导出
class-dump:class-dump用于导出头文件。 导出头文件步骤: 1. 上传dumpdecrypted.dylib到目标APP的Documents下(使用iFunBox或scp都可以); 2. 把目标应用运行起来,然后通过SSH连接到越犾的设备上,运行ps -e来打印所有进程信息,并找出具体要脱壳的应用目录。 3. 进入到dumpdecrypted.dylib所在目录下,执行脱壳命令:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/EDBFAB4B-A976-400F-932C-0A5B0FDA3D24/calligraphy.app/calligraphy
,此时就会在Documents下,生成一个xxx..decrypted的文件,这就是脱壳的文件了。 4. 使用class-dump导出头文件,把calligraphy.decrypted复制到mac上执行命令class-dump --arch armv7 -H calligraphy.decrypted -o calligraphy.h
。
更深入详细的相关参考:
移动版的Reveal工具 — FLEX
- 生成flex的.dylib库,Xcode安装iOSOpenDev插件即可创建iOS的dylib动态库;
- 通过越狱后提供的 MobileSubstrate 框架帮助我们加载动态库中的代码,
-
拷贝到真机
scp -r libFlex.dylib root@192.168.2.2:/Library/MobileSubstrate/DynamicLibraries
,再重启真机或者 ssh 到真机执行命令:killall SpringBoard
。它将会在每个 App 加载后动态载入显示,如果你不想这样,可以在/Library/MobileSubstrate/DynamicLibraries目录下新建同名配置文件libFlex.plist,使其在指定 App 中才会自动加载,例子如下:
{ Filter = { Bundles = ("com.sina.weibo"); Bundles = ("com.burbn.instagram"); Bundles = ("com.apple.podcasts"); Bundles = ("com.atebits.Tweetie2"); Bundles = ("com.360buy.jdmobile"); }; }
其中填入的 BundlesID 可以在目标 App 根目录下的 iTunesMetadata.plist 文件中获取到
更多相关资源:
iOS程序逆向相关三个强大的工具——Reveal、HopperDisassemble、IDA
详情见:http://www.cnblogs.com/mddblog/p/4960505.html
逆向工程 - Reveal、IDA、Hopper、https抓包
TheOS越狱开发利器
TheOS 被设计为一个在基于 Unix 平台 (Mac OS X、IOS…) 和大多数 的Linux 平台下开发 iOS 程序的集成开发环境。当然除了 TheOS
之外,还有另外一种方法,就是用 iOSOpenDev
界面化开进行 iOS 越狱开发。
详细参考:
iOS越狱开发-TheOS 介绍:iOS越狱开发-TheOS 介绍
Theos:iOS越狱程序开发框架:http://security.ios-wiki.com/issue-3-6/
MachOView介绍
Mach-O格式全称为Mach Object文件格式的缩写,是mac上可执行文件的格式,类似于windows上的PE格式 (Portable Executable ), linux上的elf格式 (Executable and Linking Format)。
更多信息参考:Macho文件浏览器—MachOView
参考链接
极客学院完美的资源:Hack 必备的命令与工具