[英]Figuring out programmatically if a Java class was patched?
如果有人修補一類已編譯的代碼,尤其是在Android中,是否可以通過編程方式解決? 示例:我的建築物(例如.apk)包含一個PiracyCheck.class類。 是否可以在編譯時運行該類的某種“校驗和”(由另一類執行)? 我想我可以從中獲得任何價值,例如abcdefg。 如果有人修補此類,則校驗和將突然變為123456,而不是abcdefg。 我在后端服務器上驗證校驗和。 如果校驗和正確,則繼續,否則,中止。 還是有更好的解決方案來實現這一目標?
(btw:如果破解者想要重新打包並為應用程序重新簽名,那么我已經很安全了,因為我還檢查了簽名,但是我敢肯定,任何人都可以通過反編譯和編輯字節碼本身來繞過此檢查,表示不需要辭職,證書也不會更改)。
您可以做一些這樣的事情。 但是您不能將它們組合到一個系統中,該系統將阻止某人運行代碼的“破解”版本。
是否可以在編譯時運行該類的某種“校驗和”(由另一類執行)?
如果有可能在編譯時生成類的加密校驗和,請在服務器端或“ .apk”中或兩者中進行記錄。
也可以在客戶端計算這種校驗和。
您無法執行的是強制Android平台或被黑的“ .apk”生成真實的校驗和:
我認為Android平台不提供此功能,如果可以,則可以在“有根”設備上進行顛覆。
自然,如果有人麻煩破解您的“ .apk”,他們可以顛覆“ .apk”中的任何“自我校驗和”代碼以提供原始校驗和,而不是實際代碼的校驗和。
無論哪種方式,您的服務器都會看到它期望的校驗和,而不是實際代碼的有效校驗和。 它將被愚弄。
基本上,如果您需要在有效控制用戶的平台上執行代碼,則不能阻止用戶破壞您的代碼。 您所希望的最好的辦法就是使具有適當技能的人很難做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.