DYLD_INSERT_LIBRARIES的那些事

上次分享了使用 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指令造成的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容