各種編譯器有哪些泄露開發者隱私的"後門"?
比如VC下在程序的末端會有類似"E:...*.pdb"這樣泄露路徑的鏈接目錄
注意,後門打了引號
"E:...*.pdb" 這個不是「泄露」的「後門」,而是為了調試。
當你的程序崩潰,只有一個 .dmp 的轉儲,你如何查看當時的現場,分析崩潰原因?
當然是拿 WinDbg 或其它的什麼調試器打開這個 .dmp。
調試器怎麼去把崩潰現場和你的源碼匹配上?
正是靠這條 "E:...*.pdb" 的信息去找 PDB。
如果你確實不想要這個,在工程選項里關掉 PDB 的生成就是了,別把這個和「隱私」扯上關係。來來來,此處有很多windows os官方後門可以下載:Download Windows Symbol Packages
以下僅限vc++,如果算是隱私的話:
1、pdb路徑往往代表編譯這個程序時源代碼所在的大體位置。之所以是「大體」,是因為這隻標示出了pdb文件的路徑,而這是可以在編譯器中配置的。
ps:有人說release版就沒有pdb路徑,這是不正確的。pdb是否存在是由編譯器中是否配置了生成調試符號決定的。vc中默認的release配置不生成pdb文件,但是可以配置為生成,而且最好這麼做。
ps:pdb路徑有時候是完整路徑,有時候是單獨的文件名,這和編譯器有關。微軟的系統組件一般屬於後一種情況,其他的程序一般屬於前一種情況。
ps:為什麼要有pdb路徑存儲在程序中?其實是為了快速定位符號文件,尤其是在本機調試的時候,不需要額外配置符號搜索路徑,調試器也能很快找到符號的位置,因為程序中記錄了符號的全路徑。
2、pe文件中可以查到程序的編譯時間
3、pe文件中記錄了鏈接器的版本,這往往代表了開發者用得什麼版本的vs版本,6.0代表vc6,9.0代表vc2008等
4、pe中攜帶的資源包括圖片、對話框、菜單等可以看到一些信息
5、用文本編輯器打開pe文件,可以看到許多可讀的字元串,這是編程時程序中出現的常量字元串,調試信息啦、警告信息啦、訪問的文件路徑啦之類。如果是unicode版本的程序,可以用unicode方式打開查看。推薦閱讀:
※對於一個visual studio重度依賴者,有什麼推薦的代碼閱讀工具嗎?
※用vs2015編寫c++調試為什麼顯示找不到指定文件?
※visual studio 2017用來編譯c的話應該怎麼安裝?
※VS 2015 update 1比VS 2013 update 5新增了哪些C++11/14特性?
※為什麼Visual Studio 2015中代碼定義窗口完全失效了?
TAG:互聯網 | 計算機科學 | C | MicrosoftVisualStudio | 編譯原理 |