2017-10-18 61 views
-3

我在Assembly中得到了這個代碼,它基本上在遊戲中打印了一條灰色的消息。哪一行定義了顏色?

下面的代碼:

enter image description here

我的問題是哪一行代碼定義了灰色?

+1

從代碼中,我想起了'printf'系列函數,首先調用一些格式化字符串和值的格式化程序。你是否檢查了從'StringPool__GetString'返回的字符串值,格式字符串是否不包含一些額外的控制字符來改變顏色?像[ANSI轉義碼](https://en.wikipedia.org/wiki/ANSI_escape_code)或一些自定義方案。 – Ped7g

+1

另一種選擇當然是被調用的例程* always *會打印一個灰色的字符串,而這個代碼與此無關。 –

+3

我投票結束這個問題作爲題外話題,因爲這屬於https://reverseengineering.stackexchange.com/(如果有的話,因爲幾乎沒有證據表明這段代碼與顏色有關)。但是IDK,也許是那邊的人會喜歡這個有用的話。 –

回答

1

這可能是在這條線的7

mov byte ptr [ebp+var_4], 7 

但是,這只是胡亂猜測的基礎上,有7曾經是淺灰色的CGA's 16-color palette的事實。

事實是,我們無法通過盯着這個小小的反彙編代碼來告訴這段代碼幹什麼。 它是機器語言; 一切由位和字節表示。 不僅僅是顏色,還包括數字,字符,形狀,地理座標,日期,時間,甚至代碼本身。 你必須弄清楚哪個是哪個。

我通常從猜測開始(如上所述),如果失敗,我會嘗試更徹底的逆向工程。 只需遵循數據;無論注入相關BIOS調用還是(存儲器映射)I/O地址的字節都必須是顏色。這個數據的軌跡可能很長並且曲折; 您需要分析比這幾行更多的代碼。

+0

在我問之前,我已經嘗試修改'7'。通常在Assembly中定義的顏色如何? – Suspended

+1

@暫停它們不是。 – Ped7g

+2

@ Suspended:那麼你應該在問題中這麼說,這樣人們就會知道已經嘗試了什麼。 –