@AloneMonkey wrote:
前言
之前基于iOSOpenDev重新弄了一个[MonkeyDev]https://github.com/AloneMonkey/MonkeyDev ,最初的版本支持Xcode 9和最新theos创建CaptainHook Tweak和Logos Tweak,后面又增加了一个Command-line Tool工具的支持。
然后想到如果是非越狱机器或者使用Xcode调试第三方应用的时候很多集成步骤,注入dylib,集成Reveal、Cycript等等,这些步骤其实都是重复性的工作,所以现带给大家MonkeyDev支持,一步到位!
那么需要怎么做呢?
安装MonkeyDev
很多人就是因为没有仔细看文档,然后出错了不知道怎么解决,所以先仔细看一遍文档把。
使用:一步到位
CaptainHook Tweak、Logos Tweak and Command-line Tool的使用这里就不讲了,如果有不会的我到时再单独写一篇文章。
这里主要介绍的功能是MonkeyDev一步集成非越狱调试。
准备好砸壳的ipa或者app
第一步是准备好砸壳的ipa或者app,可以从第三方应用市场或者http://www.iphonecake.com去下一个。
创建MonkeyApp项目
点击
File - New - Project...
创建iOS项目,选择MonkeyApp
。创建完成之后,你会得到一个这样的工程:
解析一下,这里我创建的项目名字就是
MonkeyApp
,所以下面对应的都是MonkeyApp
,你自己创建的由你的项目名字而定!
MonkeyAppDylib
这个是将被注入目标App的动态库,你自己要hook的代码可以在MonkeyAppDylib.m
文件里面写,我在里面写了一些Demo代码,支持OC runtime的HOOK,C函数的fishhook。
AntiAntiDebug
这个里面是反反调试的代码。
fishhook
这个是自动集成的fishhook模块。下面
Framewroks
已经自动集成了Reveal.framework
和Cycript.framework
。拖入编译
我准备了一个砸壳了的ipa文件,然后我右键项目里面的
TargetApp
文件夹Show in Finder
,把ipa
文件拖入下面的位置(当然app文件夹也可以的):put ipa or app here
这个文件不要删除。好了,还要做什么吗? 不, 不用了。编译运行到非越狱手机。
打开电脑的
Reveal
,就可以看到界面了:
Cycript
查看界面也没有问题:这里Cycript默认端口是
6666
。更多功能
Demo App
MonkeyApp
不拖入App或者ipa的情况下,会有一个默认的App,以供读者自己测试,样子大概是这个样子····对了,运行前,你要把
AntiAntiDebug.m
这个文件的rebind_symbols((struct rebinding[1]){{"sysctl", my_sysctl, (void*)&orig_sysctl}},1);
这行代码注释去掉,因为Demo应用有反调试,但是hook
sysctl
这个在某些应用里会导致_dyld_debugger_notification
这样的崩溃。em...... Demo就是这个样子:
你可以自己修改
MonkeyAppDylib.m
里面的代码,这个是笔者针对Demo写的例子啦。。。。CHDeclareClass(CustomViewController) CHOptimizedMethod(0, self, NSString*, CustomViewController,getMyName){ //get origin value NSString* originName = CHSuper(0, CustomViewController, getMyName); NSLog(@"origin name is:%@",originName); //get property NSString* password = CHIvar(self,_password,__strong NSString*); NSLog(@"password is %@",password); //change the value return @"AloneMonkey"; } CHConstructor{ CHLoadLateClass(CustomViewController); CHClassHook(0, CustomViewController, getMyName); }
默认集成的库
本工具会默认集成
Reveal.framework
和Cycript.framework
,em.....集成的
Reveal.framework
是最新版本的,所以你可能需要最新的Reveal,否则使用自己的Reveal.framework
替换掉/opt/MonkeyDev/frameworks
下面的Reveal.framework
。
Cycript.framework
在/opt/MonkeyDev/library
目录下面。可以在如下位置删除掉默认集成的库:
增加自己的库
emmm。。。。。
动态库的话,把你的
*.framework
文件拷贝到/opt/MonkeyDev/frameworks
目录下面,然后在下图的位置add进去,emmm。。。。就可以了。静态库的话,直接增加到上面,指定search path就可以了,和正常开发没啥区别。。。
后续TODO
后续可能还有增加自动符号还原,lldb脚本,or pod支持啥的。。。
Posts: 9
Participants: 8