上次分享了使用 DYLD_INSERT_LIBRARIES 環(huán)境變量,可以不修改App的任何字節(jié),實(shí)現(xiàn)注入dyld的過程。文章地址Cornerstone 4.0 破解教程
0x00 變數(shù)
最近試著用同樣的方案破解 Reveal 14, 但是只要設(shè)置環(huán)境變量DYLD_INSERT_LIBRARIES就會報以下錯
dyld: warning: could not load inserted library 'xxx.dylib' into library validated process because no suitable image found. code signature in...
害的我又是谷歌撼嗓,又是百度的,始終沒有找到解決方案欢唾,經(jīng)過不懈的努力搜索静稻,看到一篇文章防止tweak依附,App有高招匈辱;破解App保護(hù),tweak留一手杀迹,恍然大悟亡脸,原來環(huán)境變量DYLD_INSERT_LIBRARIES是可以被忽略的,但是按照文章說明树酪,并沒有在Reveal中發(fā)現(xiàn)__RESTRICT/__restrict
字段浅碾。就這樣搞了兩天,問題始終得不到解決续语。
0x01 方案
根據(jù)錯誤提示垂谢,可以發(fā)現(xiàn)是驗(yàn)證了簽名什么的,搜索關(guān)鍵字macos 取消加載 dyld 的簽名驗(yàn)證發(fā)現(xiàn)了端倪疮茄。剛接觸 DYLD_INSERT_LIBRARIES 時滥朱,覺得這就是一個系統(tǒng)bug啊,果然事實(shí)證明這就是一個bug力试,蘋果在高版本10.12修復(fù)了這個bug徙邻,具體參見dylib動態(tài)庫加載過程分析,macOS軟件內(nèi)幕畸裳,有興趣的可以自己閱讀缰犁。dyld是蘋果操作系統(tǒng)一個重要組成部分,而且令人興奮的是,它是開源的帅容,任何人可以通過蘋果官網(wǎng)下載它的源碼來閱讀理解它的運(yùn)作方式(下載地址:
Source Browser)颇象,了解系統(tǒng)加載動態(tài)庫的細(xì)節(jié)。
看到這句話并徘,就覺得還是有轉(zhuǎn)機(jī)的遣钳,轉(zhuǎn)到改網(wǎng)站下載版本dyld-433.5.tar.gz,打開src->dyld.cpp
饮亏,搜索could not load inserted
字樣耍贾,果然找到了,仔細(xì)閱讀路幸,發(fā)現(xiàn)gLinkContext.processUsingLibraryValidation
這個判斷下面的打印的log和我的很像荐开,搜索processUsingLibraryValidation
,找到一處
if ( flags & CS_REQUIRE_LV ) {
gLinkContext.processIsRestricted = false;
//gLinkContext.requireCodeSignature = true;
gLinkContext.processUsingLibraryValidation = true;
}
問題就出現(xiàn)在這简肴,發(fā)現(xiàn)CS_REQUIRE_LV
晃听,搜索之,找到macos-disable-library-validation下載砰识,安裝能扒。終于不再提示signature
類似的錯誤了。
0x02 后記
加載DYLD_INSERT_LIBRARIES的問題是解決了辫狼,但是會出現(xiàn)新錯誤Illegal instruction
非法指令初斑,看來這軟件還驗(yàn)證了其他的。最終放棄完美破解Reveal 14膨处,不完美破解可以看這個繞過最新版本Reveal的激活檢測见秤。或許Illegal instruction
就是ud2
指令造成的真椿。