2009-08-26 107 views
2

我APT(反Paching技術)的邏輯保護可執行如下...被修補

1)店鋪的MSSQL服務器上的可執行文件保護的MD5哈希值。

2)執行md5比較(在我的應用程序啓動時)服務器上發現的散列,以及可執行文件本身。

3)如果比較失敗,則無法退出應用程序。

以上所有這些之前它最終被緩存!

我的意思是什麼是保護文件不被修補的最佳方法? 沒有使用現成的工具(.net反應器,虛擬化器等)

編輯:有一些東西剛剛進入我的腦海。

有什麼辦法在服務器端檢查應用程序的完整性嗎? 我的意思是我的應用程序只能在網上工作。我可以在服務器(我的域)上執行一些可以檢查應用程序完整性的東西嗎?

+0

什麼是用例? – UnkwnTech 2009-08-26 09:18:56

+0

對不起,但我的母語不是英語。你能否更具體一些? – OrElse 2009-08-26 09:21:39

+0

除了被接受的答案之外,關鍵是要注意MD5是死的算法,您必須使用SHA-2(SHA-0和SHA-1同樣死亡)。 – 2009-09-29 07:17:51

回答

5

事情是一個破解者會精確地在第2步修補應用程序,刪除哈希檢查代碼。

所以我不會說這對於嚴重的餅乾非常有效。

編輯:我想最好的辦法是縱深防禦,因爲你的應用程序必須是在線我倒是:

  • 需要驗證:驗證用戶,通過一個加密密鑰希望和需要的關鍵檢查接收/發送數據。
  • 混淆:它使得餅乾變得更難。
  • 繼續檢查:除了檢查誰在發送數據之外,每次發送請求時都要驗證應用程序。

這些都仍然可以繞過,但它們使事情變得更加困難,並可能阻止一些如果你的應用程序不值得他們很多。

+0

這就是爲什麼我添加了「以上所有這些之前它最終被緩存!」 你能指點我更安全的東西嗎? – OrElse 2009-08-26 09:25:03

+0

Upvote適用於餅乾的正確名稱。 – 2009-08-26 09:29:21

+1

@gipap:破解者在運行之前修改你的程序。通過確定你的程序在運行之前不能做任何事情。而它被修改後,它已不再是你的程序。 – MSalters 2009-08-26 09:42:06

2

你不能。一旦有其他人擁有了你的文件,他們就可以做他們喜歡的文件 - 第一件事就是修補你的反補丁代碼。

2

補丁應用程序意味着'破解者'完全控制代碼運行的機器(至少有足夠的控制權來修補可執行文件)。因此,補丁預防儘管可能很智能,但卻與控制流程相反。

複製二進制文件可能足以阻止修補,所以混淆器可能是您最好的選擇。

1

如果應用程序在別人的機器上運行,則無法阻止它們修補它。你可以讓它變得更難,但這是一場轟轟烈烈的比賽:你贏不了。不管你做得有多複雜,某個地方的某個人會認爲這是一個有趣的挑戰,打破你的保護,他會成功的。然後,其他人只需要下載他的版本。 Skype(我知道)是目前最極端的補丁保護形式。它非常複雜,但它已被打破。

由於您的應用程序顯然是運行在網上,你可以問問自己爲什麼要防止在首位的補丁(也許這是爲了防止用戶進入一些不好的價值觀?還是要阻止他們看到了一些信息,這是目前在程序中?),然後構建您的程序,以便在服務器上發生任何想要隱藏或檢查的內容。

例如,如果它是一款遊戲,並且您希望防止玩家竊聽遊戲以知道其他玩家在哪裏:更換服務器,以便它只發送您已經看到的玩家的座標信息。

另一個示例:如果是在線商店,並且您想確保用戶不提交價格不正確的採購訂單,請檢查服務器的價格。

唯一的例外是如果您控制程序運行的硬件。但即使如此,要做到這一點也很困難(請參閱:XBox,PS3以及其他許多試圖做到這一點並失敗的控制檯)。利用客戶機/服務器體系結構可能會更好,而不是投注「可信計算」。

0

現在的餅乾不用打擾補丁你的可執行文件;他們只是簡單地改變內存中的程序變量,使其行爲更符合他們的需求。捍衛這一點是非常困難和合理的毫無意義的;大多數遊戲的防破解工作只能通過搜索已知的破解程序(如AV引擎)的簽名來實現。

0

大家都知道,你不能阻止某人,但你可以讓他們更難,你甚至可以走出深淵,做一些內存驗證的東西,如War Of Warcraft Warden系統。

如果您告訴我們您正在寫什麼語言,我們可能會提出一些簡單的混淆方法。

相關問題