簡體   English   中英

檢測 iOS 應用是否被黑

[英]Detect if iOS app hacked

我的朋友得到了一個越​​獄的 iPad。 當他從 Installous 安裝 Business Model Generation App 並嘗試使用它時,該應用程序顯示了一個UIAlertView其中包含以下消息:黑客版本

有人知道怎么做嗎?

我有兩個想法:

  1. 如果從 App Store 下載應用程序時有一些設置標志,那么您可以使用此標志:如果flag = NO ,則顯示UIAlertView
  2. 帶有服務器的東西(但在這種情況下,您應該知道所有設備 ID 以及誰從 App Store 安裝了您的應用程序)。

我對嗎? 如何實現此功能?

您可以檢測兩個文件: SC_InfoiTunesMetadata.​plist

如果您找不到它們,那么您的應用程序是盜版的:這些文件是在從 App Store 下載后安裝的。

這是要檢查的代碼:

NSString * bundlePath = [ [NSBundle mainBundle] bundlePath ];
if ( ! [ [NSFileManager defaultManager] fileExistsAtPath: ( @"%@/SC_Info", bundlePath ) ] )
{
    // jailbroken
}
if ( ! [ [NSFileManager defaultManager] fileExistsAtPath: ( @"%@/iTunesMetadata.​plist", bundlePath ) ] )
{
    // jailbroken
}

有一些庫可以檢測應用程序是否被破解(以及越獄),這個問題提供了一個很好的概述,但基本上它是通過檢查簽名者身份來完成的

一個庫是AntiCrack 我沒有使用過這個庫,所以我不知道它的效果如何

我在 swift 上使用此代碼:

if Bundle.main.infoDictionary?["SignerIdentity"] != nil
     || !FileManager.default.fileExists(atPath: ("\(Bundle.main.bundlePath)/SC_Info"))
     || !FileManager.default.fileExists(atPath: ("\(Bundle.main.bundlePath)/iTunesMetadata.​plist")){
        // Jailbroken
}

這是一個老問題,但作為一名越獄開發人員,我認為它可以幫助那些在尋找越獄檢測繞過或諸如此類的東西時偶然發現它的人,這些東西如今越來越相關。 OP 的問題現在經常出現,比以前更多。

這些類型的應用程序,即使在 2020 年的今天,也會檢測到各種越獄實用程序。 我自己就是一個越獄開發者。 當我們為任何 iOS 版本構建越獄時,我們添加了相當多的基本二進制文件以進一步提供幫助。

現在我們將它們放在各種隱藏文件夾中,例如/jb/bin/jailbreak/binbag//jb/jbstuff/等,而在過去,它們曾經被直接放置在默認的 iOS 目錄中,例如 /bin /sbin等。

具有越獄檢測功能的應用程序執行[NSFileManager defaultManager] fileExistsAtPath:...來檢查Cydia的存在,這些基本二進制文件(大多數時候他們檢查/bin/bash ,但現在更多),今天,他們甚至檢查ROOT FS是否已重新掛載為R/W (通常是RO ,只有/var可寫)。

Cydia下載的調整通常不會檢查越獄檢測(好吧,大多數時候 - 各種越獄開發者之間存在戲劇性,因此即使在今天也存在人為限制),但它們會檢查您下載的存儲庫。

大多數情況下,它就像AppSync Unified調整最終所做的一樣簡單。

在帶有正確Cydia庫 URL 或標識符的調整代碼中的某處有一個變量或#define ,調整檢查Cydia列表以查看調整是否已從那里下載。 如果沒有,它會發出警報。

一些調整實現了奇怪的 DRM,每次重啟手機時都會從服務器端下載許可證(這很奇怪,而且在越獄社區中很少使用)。

以下是 AppSync Unified Tweak 功能的示例:

#define DPKG_PATH "/var/lib/dpkg/info/net.angelxwind.appsyncunified.list"

....

if (access(DPKG_PATH, F_OK) == -1) {
        NSLog(@"You seem to have installed AppSync Unified from a Cydia/APT repository that is not cydia.akemi.ai (package ID net.angelxwind.appsyncunified).");
        NSLog(@"If someone other than Linus Yang (laokongzi) or Karen/あけみ is taking credit for the development of this tweak, they are likely lying.");
        NSLog(@"Please only download AppSync Unified from the official repository to ensure file integrity and reliability.");

}

....

因此,在此越獄調整的情況下,它只會檢查從中下載的存儲庫。 這里的一個簡單補丁就是將AppSyncUnified.dylib加載到 arm64/arm 反匯編器中,如 Hopper 或 IDA 甚至 Radare2 並修補分支。 使它成為B而不是條件分支,以便永遠不會考慮比較的結果。 就如此容易。 如果您想分析 AppSync Unified 的完整源代碼,請訪問GitHub 存儲庫

當然,正如我所說,許多調整使用更復雜的方案,如服務器端 DRM,但沒有一個是防故障的。

*請理解,我不寬恕微調盜版。 此回復旨在幫助新用戶訪問此頁面,旨在提供有關越獄檢測和越獄調整 DRM 的當前狀態的一些見解。 請從適當的 repos 購買付費調整,它們只花費一美元左右。

這相當簡單,但您可以檢查是否安裝了 cydia 應用程序(通過檢查它的文件夾是否存在)。 如果已安裝,則您不信任該設備。 這留下了錯誤釋放從應用商店下載您的應用程序的越獄 iPhone/iPad 的風險。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM