是一個應用程序的可執行文件的字節爲字節時,應用程序通過App Store購買並安裝在用戶的iPhone相同,相比於原來的應用程序包提交給蘋果公司原來的可執行文件?或者它是不同的(例如,有額外的簽名或加密)?Apple是否修改提交給App Store的應用程序上的iOS應用程序可執行文件?
我只關心的可執行文件,而不是整個應用程序包。
特別是,將這樣的代碼......
int main(int argc, char* argv[]) {
FILE* file = fopen(argv[0], "rb");
// Read entire contents of executable file; calculate a hash value
// ...
fclose(file);
}
...計算相同的哈希作爲計算原始的iPhone以外的哈希,提交可執行?
例如,如上所述計算SHA256散列,然後使用XCode中的「Build and Run」在附加的iPhone上運行,產生與從OS X中的終端運行openssl sha256 MyAppExecutableFile
來計算SHA256散列完全相同的結果。這意味着通過XCode安裝應用程序的行爲不會改變可執行文件。
我的問題是,是否只有當應用提交到App Store,購買和安裝這仍然成立。
你檢查的.ipa或應用程序本身?我相信Apple在下載時會向.ipa添加一些文件,但它們不能更改應用程序本身,因爲這會使編譯時執行的代碼簽名無效,從而阻止應用程序運行。 – ughoavgfhw 2011-04-26 04:20:00
我檢查了IPA /應用程序包內的二進制文件。 Apple確實可以在不中斷應用程序的情況下更改應用程序,因爲簽名位於應用程序包內的單獨文件中。他們可能會在提交時檢查簽名的有效性,然後丟棄它,無論出於何種原因稍微修改二進制文件,然後用自己的主證書籤名。 – 2011-04-26 04:34:32
我聽說IPA軟件包中的應用程序已加密存儲,但是當它在設備上「安裝」時,它可能會被解密。 (顯然,這就是一些「破解」軟件的工作原理 - 它安裝應用程序,然後將解密後的可執行文件複製到設備上。)或許它會恢復到原始狀態?我想知道是否有任何方法可以測試這種情況。我想你可以ssh進入一個越獄iPhone並複製應用程序的可執行文件,然後看它與哪個版本是相同的? – JohnSpeeks 2011-04-26 13:30:55