使用了比較久VC6.0,但是從來沒有關注過VC的詳細編譯過程,剛好同事這兩天做反編譯工作,所以就查了一下VC的編譯工具cl的編譯設置。
下面簡單的說兩個我自己比較關注的問題:
1、讓VC在編譯過程顯示詳細的參數(去掉/nologo):
那麼,編譯過成的輸出如下:
--------------------Configuration: test - Win32 Debug--------------------
Compiling...
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
cl /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FAs /Fa"Debug/" /FR"Debug/" /Fp"Debug/test.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
"E:\work\test\test\2-2.c"
2-2.c
Note: Creating precompiled header Debug/test.pch
2-2.obj - 0 error(s), 0 warning(s)
可以看到,所有的編譯參數了。
2、只編譯生成對應的彙編文件:
在反編譯過程其實主要是分析彙編文件的,但是爲了把我們所做的反編譯結果(就是C語言結果)進行驗證,就必須重新編譯成彙編結果,並與之前的彙編語言進行對比,一致才說明自己結果的正確性。
如果要生成彙編文件,需要設置如下選項:
這樣在VC的生成目錄(Release/Debug),就生成對應的彙編文件了。
有關於詳細的編譯參數和相關設置,可以參考:VC6.0編譯參數設置