2014-11-21 77 views
1

我正在學習「黑客攻擊的藝術」。我試圖遵循代碼示例,但出於某種原因,彙編代碼與我實際的linux(作爲Guest虛擬機運行)不匹配。我確定我已經安裝了32位的Linux操作系統。是否有任何我可以傳遞給gcc的參數,讓我可以將代碼編譯成與本書中給出的代碼緊密匹配的程序集?「黑客攻擊的藝術」 - 大會不一致

我會很好地協調書&之間的代碼差異,如果他們是輕微的,我看到的差異是明顯的。我以某種方式不喜歡運行「預配置孵化器環境」中的代碼,因爲這會抑制我的技能開發。

回答

4

出於某種原因,彙編代碼根本就不在我實際的Linux匹配一個

最可能的原因是,這本書出版於2008年,使用,那麼穩定的GCC(你可以請參閱GCC發行記錄here)。

您現在使用的GCC可能會更新,因此會產生明顯不同(並且希望更好)的代碼。

是否有任何我可以傳遞給gcc的參數讓我將代碼編譯成與本書中給出的代碼緊密匹配的程序集?

不可以。您可以嘗試編譯和安裝2008年的版本,可能是4.2.3或4.3.0,並檢查是否給你更接近的輸出。

P.S.看起來這本書的第一版本是從2003年開始的,作者不太可能在2008年爲第二版重建了他們的所有例子,所以也許嘗試使用GCC 3.3呢?

+0

我想到一個有趣的註腳可能是從運行這本書產生的VM(在我的要求)轉儲的_GCC_信息的一個人張貼在這個新[SO問題](HTTP://計算器。 com/q/35249788/3857942)_GCC_顯示(Ubuntu 1:3.3.6-15ubuntu1),它是GCC 3.3.6,一直回到Ubuntu Fiesty 7.04。 – 2016-02-11 22:50:27

2

這就是爲什麼這本書帶有一個帶有Linux發行版的LiveCD以及那裏的書的所有示例源代碼。本書中的所有示例都與LiveCD中的情況完全匹配。

只需使用VirtualBox或VMware運行附帶的LiveCD,並使用該軟件進行操作即可。如果你沒有CD,它可以從No Starch提供的torrent(從他們的網站鏈接)下載。

+0

我不喜歡從LiveCD ENV運行它,就像我在我的問題中所述。這會抑制我的學習和技能發展。我想捕捉的是'理論'並將其應用於我手邊的情況。如果我無法成功,那麼閱讀這本書就沒有用。 – Ace 2014-11-21 21:49:09

7

我實際上已經在同一條船上了 - 上一兩週我已經在我的正常開發環境(LMDE)中嘗試了很多方法來生成可比較的彙編代碼,包括chroot,使用-m32標誌編譯,安裝x86 ubuntu等等,但都沒有成功。今天,我發現http://www.nostarch.com/hackingCD.htm,我遵循的指示,並能夠得到的LiveCD在VMware工作站10.這裏開機就是我所做的:

  1. 從上面的鏈接下載的I​​SO(儘管它應該與 的LiveCD工作以及)
  2. 創建一個。vmx文件並從鏈接複製並粘貼配置
  3. 我拿出了定義cdrom設備的部分,因爲我使用的是iso
  4. 使用VmWare Workstation打開文件 - 如果您使用的是iso,請轉至「編輯虛擬機設置」,併成立了CD-ROM設備,並將其指向ISO
  5. VM啓動沒有任何問題

我知道這是不是在你的主OS /系統通過示例之前一樣方便,並且您試圖避免使用LiveCD,但經過大量研究後,我發現這是一個非常普遍的問題,希望這個答案可以幫助某人。使用LiveCD可能並不理想,但它仍然比雙啓動要好得多。

1

無論gcc的輸出是否不同,它唯一改變的是內存地址;另外,你說你使用VM來運行它,這意味着你將獲得的內存是虛擬內存,嘗試啓動iso並直接運行它,它將幾乎相同。

https://www.youtube.com/watch?v=pIN7oFkz5rM

+1

你不應該分享任何YouTube鏈接。未來視頻的擁有者可能會刪除它。 – Yeahia2508 2017-01-24 16:34:36