iOS安全防護(hù)之防重簽名1.組織單位判斷

PS:在學(xué)習(xí)邏輯教育的防重簽視頻后,因項(xiàng)目需求把OC 代碼替換成swift代碼,如有侵權(quán),請(qǐng)聯(lián)系,刪除

具體代碼如下:

//  Created by AliG on 2021/2/17.
//  Copyright ? 2021 sccu. All rights reserved.
//

import Foundation

/// 署名IDの比較
/// - Parameter id: 署名ID(傳入預(yù)設(shè)好的正確的組織單位id)
func checkCodesign(id: String) {

    let embeddedPath = Bundle.main.path(forResource: "embedded", ofType: "mobileprovision")!
    let embeddedProvisioning = try? String.init(contentsOfFile: embeddedPath, encoding: String.Encoding.ascii)
    let embeddedProvisioningLines = embeddedProvisioning?.components(separatedBy: .newlines)

    for i in 0 ..< embeddedProvisioningLines!.count {
        let emStr = embeddedProvisioningLines![i] as NSString

        if emStr.range(of: "application-identifier").location != NSNotFound {

            let positionStr = embeddedProvisioningLines![i + 1] as NSString

            let fromPosition = positionStr.range(of: "<string>").location + 8
            let toPosition = positionStr.range(of: "</string>").location

            let range: NSRange = NSRange.init(location: fromPosition, length: toPosition - fromPosition)

            let fullIdentifier = positionStr.substring(with: range)
            let identifierComponents = fullIdentifier.components(separatedBy: ".") as Array
            let appIdentifier = identifierComponents.first

            if appIdentifier != id {
                exit(0) // (1)
            }
        }
    }
}

推薦在oc里面用匯編退出, swift調(diào)用就橋接一下,我這邊應(yīng)為需求,用的swift自帶的

//以下方法,寫一個(gè)oc 的方法 替換 上面代碼(1)ps: 不知道這樣子能不能被符號(hào)斷點(diǎn)斷住
                //exit
                asm(
                    "mov X0,#0\n"
                    "mov w16,#1\n"
                    "svc #0x80"
                    );

然后 直接在 AppDelegate 里面調(diào)用

checkCodesign(id: "xxxxx")

這里只是簡(jiǎn)單地明文校驗(yàn)組織id,防護(hù)等級(jí)不高.蠻容易被Hook.

  • 可以用密文判斷,提高密文復(fù)雜程度,但用組織id來判斷是否重簽,還是相對(duì)簡(jiǎn)單

以上只是初步了解記錄的筆記,還在學(xué)習(xí)中,歡迎各位前輩,各位大佬,給予指導(dǎo)與批評(píng).
有學(xué)到會(huì)陸續(xù)更新.

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容