2011-01-22 39 views
1

我想加密我的iphone遊戲中的幾個obj c類,它處理openfeint數據和處理分數的類。如何加密客觀C類

我聽說有一種方法可以加密這些數據以充當另一個安全級別,至少足以阻止某些人破解它並在越獄iphone上僞造分數,然後垃圾排行榜。

如何做到這一點,有什麼好的技術來保護這些數據,並從試圖欺騙數據勸阻一些?

感謝

回答

2

要真正加密編譯的代碼是比它的價值可能更麻煩。您必須將要解密的代碼隔離爲動態庫,並在解密內存後手動加載庫。動態庫以及可能用於在運行時修改代碼的其他方法在蘋果公司與iOS一起使用時遭到了蘋果公司的不滿。

用Objective-C的本質,你用頭船建造到你的代碼。這使得在應用程序中進行挖掘變得更加容易。在C中可以做的任何事情,符號可能會被剝離,但稍微難以閱讀。你也可以使用#define來混淆你的類和方法名稱。這遠沒有加密,但更容易實現,並且不太可能引入古怪的錯誤。

#define MyNicelyNamedClass somegarblegarble 
#define myNicelyNamedMethod othergarblegarble 

@interface MyNicelyNamedClass 

-(id) myNicelyNamedMethod; 

@end 

這是一個開發者,使他們的Objective-C代碼給別人不太明顯的是一個相對簡單。它的效果與JavaScript混淆效果一樣,也就是說它會阻止許多偶然的攻擊者,這是一個更小的障礙。

如果您選擇有意義的,但誤導性名稱,而不是直的垃圾,你甚至可以欺騙某人到花費數小時通過錯誤代碼挖掘。不是你會知道,但它是一個令人滿意的想法。

+0

如果方法有參數,這將如何工作? – Pripyat 2011-02-21 21:05:34

1

加密類受到任何DRM或類似的安全系統具有「出貨用鑰匙鎖」的問題。

什麼你正在尋找的是自修改代碼,其中該代碼不論是在裝載和後來由應用程序解密,或者是存在於二進制機器代碼和通過鍵的應用程序具有在運行時修改。

請注意,你可能會創建一些非常微妙的,有趣的錯誤,你的方法將被忽略(這需要有人也許一個額外的一天)。