2013-07-21 39 views
-6

我想要一點幫助。我知道java和小C++。我看過可以設置玩家健康和產生車輛的遊戲的培訓教員等。我想做出類似的東西。如何控制其他程序

例如我們有掃雷運行。當我運行我的java程序並點擊一個按鈕時,它應該調用掃雷功能和掃雷遊戲應該顯示我贏了。 所以我的問題是如何建立一個連接或其他程序運行,並通過傳遞參數調用程序的功能。這怎麼可能。我聽說過逆向工程,並下載了一個名爲OllyDBG的程序。和winject dll注入器。我不知道該怎麼辦。綜合所有這些,我可以製作一個節目。請給我想法或代碼或資源有幫助。

+1

Java的肯定是錯了各種語言的。刪除標籤。 –

+0

這是一個比我預期的更深的領域。谷歌逆向工程。 –

回答

1

那麼,你的起始句子是: 「我看過可以設置玩家健康和產卵車等遊戲的教練,我想做出類似的東西。」

這裏有沒有你在C++ http://www.codeproject.com/Articles/7468/Game-Wizard

談什麼瞭解First加強你的C++技能,然後研究他做什麼有一個很好的參考代碼。

一般描述是「受害者」進程內存正在搜索某個值。 通常表示您知道的值 - 例如,角色的子彈數量。 通常首先在內存中找到一個大的位置列表。 但是,然後,你射擊一顆子彈,現在搜索你以前找到的(並且只有它!)列表中的新值。 每一步都會放棄「誤報」查找,直到最後您知道您搜索的變量的位置。 做完這些之後,你也可以改變它。現在

,將常見的主題 - 這種技術只是一個具體的辦法,雖然在某些情況下非常有用的,很多時候你需要更強有力的和不同的工具。

這裏有一個非常類似的問題:How can I find the data structure that represents mine layout of Minesweeper in memory?

我個人覺得IDA是逆向工程和分析應用程序(靜態和動態)的好工具。 結合「idapython」(ida綁定python),感覺不可阻擋:)

反向工程要求您至少具有目標機器體系結構的基本知識 - 例如x86指令。

搜索IDA教程來獲取它的竅門。 有很多「crackme」在流動,這些都是破解(用於教育目的)不同類型的應用程序保護的挑戰。 它會教你很多。

您也可以在谷歌上搜索「針對初學者的逆向工程」。 網絡上有很多關於這個主題的資源。信息量一開始可能會讓人感到恐懼,因此請確保您找到一個可幫助您逐步建立技能的基本網站。

您應該知道的另一個重要術語是「掛鉤」。儘管你自己會教你最多,但有些庫可以爲你執行這個操作。 這個想法是獲得對某個功能的控制。每當有人調用該函數時,控件首先傳遞給您的代碼,然後您可以決定要執行什麼操作。 例如,您可以決定將此呼叫記錄到文件並調用原始功能 ,或者您可以執行更復雜的操作。

我發現http://tuts4you.com/包含許多有用的教程和信息片段。

哦,正如人們所說,在這種情況下,Java不是你的朋友。 C/C++/Assembly很可能是 。

開始一個全新的話題,尤其是逆向工程在開始時是非常棘手的,但我可以向你保證這是非常有益的。

編輯: 我要給你一個驚喜: http://www.uninformed.org/?v=1&a=7

我只是一派逆向工程教程掃雷艇;)

祝你好運:)

+0

真的很好回答,可惜這個沒標記爲答案。 –

+0

謝謝ZeDuS,氮化物和多米尼克。 (雖然有點晚:))。 我正在從thelegendofrandom.com學習彙編語言和逆向工程,並對這個領域感興趣。 (另外,那個驚喜太棒了!) –

3

首先你需要反向工程掃雷找出不同變量的內存位置。請記住,由於上下文,您可能無法運行掃雷的功能,但您可以在其上注入代碼來運行這些功能。不過,您可以輕鬆閱讀記憶。

要注入代碼,您必須分別組裝它,然後將其寫入進程虛擬空間。

在windows API中有幾個函數允許打開一個進程並訪問它的內存,但是你必須擁有這些權限。

總結:要做到這一點,首先需要學習的是如何反彙編和理解一個程序。只有這樣你才能知道掃雷艇是多麼容易理解。

順便說一句:掃雷艇將原始地圖存儲在內存中。一個簡單的內存檢查器可以讓你得到它的地圖。