3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
對我而言,第一站是使用ProGuard對代碼進(jìn)行優(yōu)化和混淆,ProGuard可以與針對Android Dalvik VM(通過Dex)的字節(jié)碼一起使用。這是一個(gè)非常有用的工具,可以增加“反轉(zhuǎn)”代碼的難度,同時(shí)縮小代碼的覆蓋范圍(在某些情況下,是非常大的:我最近的一個(gè)applet從大約600 KB減小到大約50 KB)。
就像其他人說的那樣,當(dāng)算法的實(shí)現(xiàn)分發(fā)給客戶端時(shí),您將永遠(yuǎn)不會獲得100%的算法細(xì)節(jié)安全性。為此,您需要將代碼單獨(dú)保存在服務(wù)器上。嘗試將客戶端代碼的安全性提高到100%左右實(shí)際上等于DRM,并且在網(wǎng)絡(luò)中斷的情況下會使客戶端代碼易碎,并且通常會使(合法的)用戶感到沮喪。
關(guān)于“創(chuàng)造性”方法:一些開發(fā)人員使用調(diào)試器檢測技術(shù)來防止運(yùn)行時(shí)分析,并將其與二進(jìn)制代碼部分的加密結(jié)合起來(以阻止靜態(tài)分析),但是老實(shí)說,有足夠的堅(jiān)定攻擊者可以規(guī)避這些條件, Windows知識庫文章游戲:錯(cuò)誤消息:已檢測到調(diào)試器:卸載調(diào)試器,然后重試。由于這個(gè)原因,我女友的“學(xué)習(xí)驅(qū)動(dòng)” DVD軟件將無法在VirtualBox下運(yùn)行,但她當(dāng)然會歸咎于Linux!
如果您想進(jìn)一步研究OpenRCE和Wikipedia關(guān)于混淆代碼的文章,可能是一個(gè)很好的起點(diǎn)。但請注意,與通過逆向工程失去商業(yè)機(jī)密相比,過度狂熱地使用這些使您的用戶受挫的技術(shù)可能會造成更大的損失。就像Anton S所說的那樣,也許最“創(chuàng)意”的方法在于調(diào)整業(yè)務(wù)模型而不是技術(shù)。
2010年12月6日最新的Android SDK更新(與Android 2.3 Gingerbread版本一致):
集成的ProGuard支持:ProGuard現(xiàn)在與SDK工具打包在一起。開發(fā)人員現(xiàn)在可以將其代碼混淆為發(fā)行版本的集成部分。

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果可能的話:遠(yuǎn)程過程調(diào)用受良好保護(hù)的服務(wù)器(該服務(wù)器具有您要保護(hù)的代碼)。

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
使它變得如此便宜以免打擾,并且不要在客戶端執(zhí)行的秘密之上建立您的業(yè)務(wù)模型。換句話說,不要分享您的秘密。
添加回答
舉報(bào)