《iOS應(yīng)用逆向與安全》 上線啦!!!
購買地址:
天貓: iOS應(yīng)用逆向與安全
京東: iOS應(yīng)用逆向與安全
前言
之前基于iOSOpenDev重新弄了一個(gè)MonkeyDev陆淀,最初的版本支持Xcode 9和最新theos創(chuàng)建CaptainHook Tweak和Logos Tweak,后面又增加了一個(gè)Command-line Tool工具的支持斋竞。
然后想到如果是非越獄機(jī)器或者使用Xcode調(diào)試第三方應(yīng)用的時(shí)候很多集成步驟倔约,注入dylib,集成Reveal坝初、Cycript等等浸剩,這些步驟其實(shí)都是重復(fù)性的工作,所以現(xiàn)帶給大家MonkeyDev支持鳄袍,一步到位!
那么需要怎么做呢绢要?
安裝MonkeyDev
這個(gè)看第一篇文章,或者看github文檔 就可以了拗小。
很多人就是因?yàn)闆]有仔細(xì)看文檔重罪,然后出錯(cuò)了不知道怎么解決,所以先仔細(xì)看一遍文檔把哀九。
使用:一步到位
CaptainHook Tweak剿配、Logos Tweak and Command-line Tool的使用這里就不講了,如果有不會(huì)的我到時(shí)再單獨(dú)寫一篇文章阅束。
這里主要介紹的功能是MonkeyDev一步集成非越獄調(diào)試呼胚。
準(zhǔn)備好砸殼的ipa或者app
第一步是準(zhǔn)備好砸殼的ipa或者app,可以從第三方應(yīng)用市場(chǎng)或者http://www.iphonecake.com去下一個(gè)息裸。
創(chuàng)建MonkeyApp項(xiàng)目
點(diǎn)擊File - New - Project...
創(chuàng)建iOS項(xiàng)目蝇更,選擇MonkeyApp
。
創(chuàng)建完成之后呼盆,你會(huì)得到一個(gè)這樣的工程:
解析一下年扩,這里我創(chuàng)建的項(xiàng)目名字就是MonkeyApp
,所以下面對(duì)應(yīng)的都是MonkeyApp
访圃,你自己創(chuàng)建的由你的項(xiàng)目名字而定!
MonkeyAppDylib
這個(gè)是將被注入目標(biāo)App的動(dòng)態(tài)庫厨幻,你自己要hook的代碼可以在MonkeyAppDylib.m
文件里面寫,我在里面寫了一些Demo代碼腿时,支持OC runtime的HOOK克胳,C函數(shù)的fishhook。
AntiAntiDebug
這個(gè)里面是反反調(diào)試的代碼圈匆。
fishhook
這個(gè)是自動(dòng)集成的fishhook模塊漠另。
下面Framewroks
已經(jīng)自動(dòng)集成了Reveal.framework
和Cycript.framework
。
拖入編譯
我準(zhǔn)備了一個(gè)砸殼了的ipa文件跃赚,然后我右鍵項(xiàng)目里面的TargetApp
文件夾Show in Finder
笆搓,把ipa
文件拖入下面的位置(當(dāng)然app文件夾也可以的):
put ipa or app here
這個(gè)文件不要?jiǎng)h除性湿。
好了,還要做什么嗎满败? 不肤频, 不用了。編譯運(yùn)行到非越獄手機(jī)算墨。
打開電腦的Reveal
宵荒,就可以看到界面了:
Cycript
查看界面也沒有問題:
這里Cycript默認(rèn)端口是6666
。
更多功能
動(dòng)態(tài)庫調(diào)試
在MonkeyAppDylib.m
文件中寫了自己的代碼之后就可以直接下斷點(diǎn)調(diào)試净嘀,效果如下:
Demo App
MonkeyApp
不拖入App或者ipa的情況下报咳,會(huì)有一個(gè)默認(rèn)的App,以供讀者自己測(cè)試挖藏,樣子大概是這個(gè)樣子····
你可以自己修改MonkeyAppDylib.m
里面的代碼暑刃,這個(gè)是筆者針對(duì)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);
}
默認(rèn)集成的庫
本工具會(huì)默認(rèn)集成Reveal.framework
和Cycript.framework
,em.....
集成的Reveal.framework
是最新版本的宵膨,所以你可能需要最新的Reveal架谎,否則使用自己的Reveal.framework
替換掉/opt/MonkeyDev/frameworks
下面的Reveal.framework
。
Cycript.framework
在/opt/MonkeyDev/library
目錄下面辟躏。
可以在如下位置刪除掉默認(rèn)集成的庫:
增加自己的庫
emmm谷扣。。鸿脓。。涯曲。
動(dòng)態(tài)庫的話野哭,把你的*.framework
文件拷貝到/opt/MonkeyDev/frameworks
目錄下面,然后在下圖的位置add進(jìn)去幻件,emmm拨黔。。绰沥。篱蝇。就可以了。
靜態(tài)庫的話徽曲,直接增加到上面零截,指定search path就可以了,和正常開發(fā)沒啥區(qū)別秃臣。涧衙。哪工。
增加自己的資源
如果想要加入storyboard或者bundle資源的話,將其拷貝到如下目錄即可弧哎!