2011-07-27 84 views
2

我工作的一個小拼圖/戰爭遊戲這涉及編碼在C#Windows窗體..如何安全地編輯exe文件?

要達到一定的水平,我需要存儲在一個exe密碼。同一個exe文件允許我將該密碼發送給一個默認人員,該人員存儲在變量中。密碼發送是通過更新MySQL數據庫中給定用戶的數據來完成的。

挑戰在於用戶應該十六進制編輯exe文件並將默認收件人更改爲用戶所需的用戶名。但是,當我十六進制編輯的文件,並把所需的用戶名,並試圖運行它,它顯示一個錯誤「x.exe不是有效的Win32應用程序」 ..

有沒有辦法可以安全十六進制編輯文件而不會遇到此錯誤。或者是否有辦法修改源代碼,以便只使用十六進制編輯器可以安全地編輯一個變量。

+3

爲什麼不將數據存儲在其他地方,例如在配置文件中? – Sven

+1

您可以隨時創建自己的「培訓師」,並在應用程序加載到內存中時劫持該內存存儲庫並對其進行修改(儘管這會更加波動)。 –

+2

您期待您的用戶將二進制文件編輯爲一項功能嗎? –

回答

0

假設這是不是一個可執行的非法篡改...(這聽起來像在比賽中是一個挑戰,你這措辭的方式。)

最有可能的變化導致程序不再能夠驗證checksum。如果你想成功修改exe,你需要重新計算校驗和。 (這只是exe文件被破壞的一個可能的解釋。)

改變一個已編譯的可執行文件並使其工作起來很棘手。這是一個相當先進的話題,不可能在這裏完全回答。

+0

是的,嘗試過。但它仍然顯示了同樣的錯誤..認爲它會工作..是的,這是一個簡單的比賽。 – Bhuvan

2

以十六進制編輯PE映像將會很困難,因爲您需要更新該映像的各個部分PE圖像如果你改變了一段的長度或者如果EXE被簽名,你也會使其無效。如果您想了解所有需要更新的字段,可以找到PE圖像規範here。如果你想要一個漂亮的用戶界面,我會使用類似CFF Explorer的東西來正確編輯PE映像。

您也可以使用ildasm,僅用於.NET程序集,反彙編EXE,編輯IL,然後使用ilasm重新組裝並運行它。這將消除編輯PE圖像的需要並且更安全。

+0

哇..我曾經使用一些教程十六進制編輯遊戲文件,但從來沒有想過它會這個複雜的..會穿過這整個晚上..謝謝你。 – Bhuvan

0

當我在做類似的事情之前,我記得我不得不用相同長度的字符串替換變量才能正常工作。例如「[email protected]」可以替換爲「[email protected]」或「[email protected]」。如果您使用的是Gmail,這將更容易,因爲「[email protected]is the same as「my.name.is ... + [email protected]」。

雖然,我認爲@David Stratton的想法可能與exe的更相關。我非常肯定,我編輯的文件只是數據文件(很久以前),但我知道一切工作對我來說,只要我沒有添加或刪除文件中的任何字節。