2013-03-10 76 views
6

有沒有辦法以某種方式爲Android平臺保護本機共享庫(.so)免受二進制更改? 例如有人可以在逆向工程應用程序後用NOP覆蓋JMP指令,並將該庫分發到根設備。Android共享庫完整性保護

是否有什麼有人可以做?

我在這裏尋找的是關於實施一系列檢查(例如加密,校驗和等)的想法。 當然,因爲平臺看起來不像它提供對此的支持(糾正我,如果我錯了)它必須是所有'客戶端'。因此,整個事情有點無用,但至少會阻礙一些逆向工程。

+0

當然,您可以通過讓它計算自己的校驗和來實現SO保護,對其代碼本身的部分進行加密。這幾乎與Windows中多年來的做法類似(但更難)。但是,如果您沒有Linux上保護模塊的經驗,最好不要啓動。我不知道您的任務是否存在預先創建的保護產品。 – 2013-03-10 07:50:55

+0

謝謝@尤金·梅耶夫斯基'EldoSCorp。我想嘗試一下 - 你如何計算自己的校驗和? – AndroidSec 2013-03-10 12:59:53

回答

3

是的,你可以做的事情,他們會使逆向工程師非常具有挑戰性,但我懷疑你能夠做任何事情,將停止Chris Eagle

防止修改的最好方法是在編譯.so後輸入.so的SHA-2,並在運行時每次重新刷新,使其與已知值匹配。該檢查將在客戶端執行,因此熟練的RE可以修改二進制文件來忽略檢查。儘管如此,它確實有點難。如果你在整個代碼中放入檢查並使用不同的檢查技術,那麼它將擴展RE需要完成的工作量。不過,要知道微軟已經投入了數百萬美元的反RE技術,並且還有仍然有 Office和Windows的盜版副本。你永遠不會阻止他們。我個人的哲學(現在我已經學習了自己)是,試圖阻止它們最終會帶來太多的痛苦。只要做一個好的應用程序,使它便宜,人們會購買。無論如何,盜取你的東西的歹徒都不會購買它。

如果您的應用程序調用回家,您還可以將散列提交給服務器進行驗證。當然,RE仍然可以繞過這一點,但還有一件事要做。

+0

正是我在找的東西。謝謝! – AndroidSec 2013-03-12 23:02:14