2017-03-16 123 views
1

我最近聽說過一家軟件安全公司,它使您的代碼在反向工程和代碼修改方面具有防黑客功能。他們的技術是這樣的:Java - 防止代碼修改技術

它們在代碼中的多個檢查點插入校驗和,以確保它們之間的代碼安全。由於代碼流在每個檢查點執行,所以會檢查校驗和,如果代碼已被篡改,則校驗和將失敗,並且您知道代碼已被修改。如果檢查點被刪除,則下一個檢查點也將失敗,因爲檢查點已被刪除。

購買他們的服務將完全超出我的項目(一個Android應用程序)的預算,但我希望自己實現該技術。

有人可以提供一些有關如何這樣的事情可以實施的見解?如果還有其他方法可以用來防止代碼修改,請分享。

(只是爲了澄清我知道迷惑,怪異missleading代碼邏輯,寫假方法來進一步使代碼難以閱讀和將太應用這些方法)

+2

攻擊者只會刪除所有的校驗和試驗。對於一個熟練的攻擊者來說,識別這些數據,刪除它們,重新平衡這些數據不會特別困難。 「如果還有其他方法可以用來防止代碼修改,請分享」 - 不要寫任何在客戶端上運行的東西。 – CommonsWare

+0

那麼我剛纔描述了基本的想法..顯然,該公司已經實施了這樣一種方式,使其牢不可破(或幾乎牢不可破),但我不知道內部運作。他們有像銀行和信用卡公司這樣的客戶,所以我猜他們是值得的錢 – Anonymous

+2

你會猜錯了。您會驚訝於購買了多少無用的蛇油,因爲一些非技術經理對於蒸發器感到興奮。 –

回答

2

防止代碼修改技術

完全避免逆向工程沒有任何技巧。

你基本上不能保護你的應用程序不被修改。並且您放入的任何保護都可以禁用/刪除。 如果您可以選擇包含共享庫,則可以在C++中包含所需的代碼以驗證文件大小,集成等。

1

防黑客是一個非常鬆散的術語。即使你在你的代碼的不同部分實現了校驗和,還有很多其他的漏洞需要注意,它們不會修改源代碼,比如注入,身份驗證等。我向你推薦的是少擔心如何防止某人修改你的代碼,並更多地關注保護易受攻擊的區域如果它們是來修改你的源代碼,包括散列和醃製密碼,加密數據傳輸等。