2016-09-25 29 views
1

From this。我們不能阻止倒車工程師。 但是,我們如何檢測應用程序是否已經修改並試圖訪問我們的服務器? 特別是在iOS和Android。我們已經成功用於現在同時我們如何檢測訪問服務器的代碼的修改版本?

+1

如果您可以從您的源代碼中獲取應用程序的校驗和,那可以用作您的應用程序的指紋。但我可以想象黑客會在對服務器進行驗證之前對其進行硬編碼。 – user1506104

回答

0

事情是這樣的:

  1. 在編譯階段,使DLL的&可執行文件的MD5的,並將它們保存到服務器可以訪問的地方。
  2. 之前的客戶端連接到服務器,把它計算MD5的以及
  3. 的onConnect,發送MD5的服務器,並讓服務器驗證它們

由於正確的MD5的應該是一個祕密服務器,你會發現嘗試修改代碼的早期嘗試,並標記這些帳戶以供進一步審查。但即使如此,一個高於成熟水平的開發人員也會知道這一點,併發送您期望的MD5。

It's not fool proof,但老實說,我相信沒有什麼是,所有你能做的就是儘可能多的,這並不複雜的事情一點點的問題複雜化,因爲MD5的每次發佈的更新時間會改變,你甚至可以哈希MD5與連接ID,這將使每個連接的散列發送到服務器唯一。

使用此方法將無法禁用/刪除檢查,因爲服務器始終需要發送MD5/Hash。

using (var md5 = MD5.Create()) 
{ 
    using (var stream = File.OpenRead("path-to-your.file")) 
    { 
     return md5.ComputeHash(stream); // returns the MD5 byte[] 
    } 
} 

當你鏈接到帖子中說非常好: You basically can't protect your application from being modified. And any protection you put in there can be disabled/removed, You can do different tricks to make hacking harder though.

0

我已經關閉了這個問題。但我有一個想法。希望你們中的一些人考慮並評論這件事。

正如答案所述。

您基本上無法保護您的應用程序不被修改。並且任何保護你放在那裏都可以被禁用/刪除,但是你可以做不同的技巧來讓黑客更難。

客戶端中的任何保護都可以刪除。

如何

  1. 把驗證碼的服務器。
  2. 下載此代碼並在運行時運行它。 (每次運行必須得到唯一結果)
  3. 將驗證結果發送到服務器進行授權。

因爲您已經下載了一部分腳本。您必須從服務器端下載DLL或替代使用this

+0

這是行不通的,因爲即使可以規避,你什麼時候可以這樣做?在啓動時?例如,他們之後進行DLL注入時會發生什麼? –

+0

是DLL注入比老問題更糟糕:( –

+0

DLL注入是老問題的一部分,有一系列技術可以作弊,更改,繞過或添加到任何客戶端代碼,這就是爲什麼我說這是不可能完全保護,你唯一能做的就是讓它不值得他們的時間,讓100%確信沒有任何關鍵代碼在客戶端上運行,這是服務器無法驗證的,這對我的理解是你唯一可靠的防線,但是不要被愚弄,它能夠很好地工作來破解你的代碼,它可以工作在99.9%,它總是隻有最後的0.1%,這會導致問題。 –

相關問題