上次分享了使用 DYLD_INSERT_LIBRARIES 環(huán)境變量,可以不修改App的任何字節(jié),實現(xiàn)注入dyld的過程。文章地址Cornerstone 4.0 破解教程
0x00 變數
最近試著用同樣的方案破解 Reveal 14, 但是只要設置環(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...
害的我又是谷歌,又是百度的,始終沒有找到解決方案,經過不懈的努力搜索,看到一篇文章防止tweak依附,App有高招;破解App保護,tweak留一手,恍然大悟,原來環(huán)境變量DYLD_INSERT_LIBRARIES是可以被忽略的,但是按照文章說明,并沒有在Reveal中發(fā)現(xiàn)__RESTRICT/__restrict字段。就這樣搞了兩天,問題始終得不到解決。
0x01 方案
根據錯誤提示,可以發(fā)現(xiàn)是驗證了簽名什么的,搜索關鍵字macos 取消加載 dyld 的簽名驗證發(fā)現(xiàn)了端倪。剛接觸 DYLD_INSERT_LIBRARIES 時,覺得這就是一個系統(tǒng)bug啊,果然事實證明這就是一個bug,蘋果在高版本10.12修復了這個bug,具體參見dylib動態(tài)庫加載過程分析,macOS軟件內幕,有興趣的可以自己閱讀。dyld是蘋果操作系統(tǒng)一個重要組成部分,而且令人興奮的是,它是開源的,任何人可以通過蘋果官網下載它的源碼來閱讀理解它的運作方式(下載地址:Source Browser),了解系統(tǒng)加載動態(tài)庫的細節(jié)。看到這句話,就覺得還是有轉機的,轉到改網站下載版本dyld-433.5.tar.gz,打開src->dyld.cpp,搜索could not load inserted字樣,果然找到了,仔細閱讀,發(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非法指令,看來這軟件還驗證了其他的。最終放棄完美破解Reveal 14,不完美破解可以看這個繞過最新版本Reveal的激活檢測。或許Illegal instruction就是ud2指令造成的。