天天看點

《C++ 黑客程式設計揭秘與防範》—第1章1.1節程式設計語言和開發環境的選擇

本節書摘來自異步社群《c++ 黑客程式設計揭秘與防範》一書中的第1章1.1節程式設計語言和開發環境的選擇,作者冀雲,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

第1章 黑客程式設計入門

c++ 黑客程式設計揭秘與防範

你是否曾經在用别人開發的工具嘗試“入侵”,你是否希望開發出自己的黑器……相信很多人有着這種近似相同的經曆。本章将簡單介紹黑客程式設計及工具開發。如果你是初學程式設計,如果你從來沒有接觸過黑客軟體的開發,如果你急于想了解黑客程式設計方面的知識……那麼就請繼續往下閱讀。

1.1 程式設計語言和開發環境的選擇

初學者剛開始學習程式設計語言最頭疼的問題就是如何選擇程式設計語言及合适的開發環境,下面就來具體介紹一下。

有人認為學程式設計就是學程式設計語言,而vc、vb這樣的開發環境隻是工具,不需要學。這個想法是錯誤的,因為開發環境提供了很多開發工具,如vc這個內建開發環境就提供了與之對應的psdk、mfc等。除了語言以外,要開發特定的軟體是需要開發包和開發工具支援的。況且,程式設計語言也是一種工具,用于和計算機進行交流的工具。是以我們既要學習程式設計語言,也要學習開發工具。

對于選擇哪種程式設計語言或者開發環境其實也沒有特定的标準。有這樣一句話,“真正的程式員用vc,聰明的程式員用delphi,用vb的不是程式員”。筆者卻并不這麼認為,因為在很多程式設計的書籍上常常這樣提醒并告誡學習者,程式設計的精髓是“算法”,而語言是用來描述算法的。是以,大家也不必因為無法選擇而無從下手。

黑客一般都掌握多種程式設計語言,他們不但掌握着與底層相關的如彙編、c之類的程式設計語言,而且還掌握很多腳本語言,如python、perl、ruby……很多黑客在發現0day以後用perl或者python來寫poc;msf使用的是ruby來進行開發exploit;有的黑客在反病毒時竟然寫個批處理就搞定了……對于黑客來說,一切語言都是服務于自己的思想的,隻要能快速實作自己的想法,能完成自己所要完成的功能就行,從不拘泥于任何語言和工具。在網上有很多學習不同程式設計語言的人們之間經常互相攻擊,這其實是一種極端的行為,大家還是理性地對待這些問題比較好。

前面說了這麼多,仿佛是在繞圈子,一直沒有介紹到底應該選擇什麼程式設計語言和開發環境。我們這裡選擇使用c語言作為黑客程式設計的學習語言,選擇vc6(visual c++ 6.0的縮寫)來作為我們的開發環境。vs 6相對于visual studio 2005、visual studio 2008和visual studio 2010之類的開發環境來說要小巧很多,目前是可以滿足我們的開發需求的。選擇c語言的原因是由于windows的api都是用c語言定義的,相對于使用其他程式設計語言會友善很多。筆者認為在vb下使用api就非常不友善,尤其是涉及指針這個概念的時候。除了vc6以外,還需要下載下傳新版的psdk,因為vc6中包含的psdk過于舊,有些新的api我們無法通過包含頭檔案而直接使用,是以這個也是必須的。

1.1.1 何為sdk、api和mfc

既然選擇vc作為開發環境,那麼先來了解一下vc開發環境中今後會用到的一些工具的概念,這些概念都相對比較簡單,常見的概念有sdk、api和mfc。

sdk是software develop kits的縮寫,即軟體開發工具包。sdk是一個泛指,比如對視訊采集卡進行二次開發,那麼視訊采集卡會提供sdk;再比如對動态令牌進行二次開發,那麼動态令牌也會提供sdk。作業系統為了程式員在其平台下開發應用程式也會提供sdk,我們對系統提供的開發包稱之為psdk。psdk是platform sdk的意思,也就是平台sdk。對于我們來說,平台就是windows作業系統。windows下的psdk包含了進行windows軟體開發的文檔和api函數的輸入庫、頭檔案等一些與windows開發相關的工具。psdk是一個單獨的開發包,不過每個不同版本的vc和其他一些開發環境中也已經包含了它。

api是application programming interface的縮寫,即應用程式接口。不同的sdk提供不同的api。psdk提供的api就是作業系統提供的開發應用程式的接口,比如windows系統下删除檔案的api函數是deletefile();再比如windows系統下移動檔案的api函數是movefile(),而其他一些供二次開發的sdk中附帶的api,也是為了進行開發應用程式而提供的接口。

mfc是microsoft foundation class的縮寫,即微軟基礎類庫。它是微軟為了簡化程式員的開發工作量所提供的基于c++類的一套面向對象的庫,它封裝了常見的api函數,使得開發較為友善。

我們在書中會用到api進行開發,也會使用mfc進行開發。不過對于mfc的使用,基本上用在與界面相關的部分,一般是簡單地帶過,不會進行過多的讨論。我們的重點是放在api函數的使用上。關于mfc的相關内容,還請大家自行參考學習。

1.1.2 vc6和sdk的配置

sdk和vc6互相是獨立的,不需要安裝在同一個目錄下,根據自己的實際情況安裝就可以了。在安裝好vc6和新版的sdk後,需要在vc6中進行相應的設定才能使用新版的sdk,否則vc6仍然使用其自帶的舊的sdk。sdk和vc6的安裝步驟這裡就不介紹了(提示:請把vc6安裝完整,vc6會提供一些代碼,對我們的學習是非常有幫助的),下面介紹新版的sdk如何配置才能在vc6中使用。

啟動vc6,單擊菜單“tools”->“options”指令,打開“options”對話框,如圖1-1所示。

《C++ 黑客程式設計揭秘與防範》—第1章1.1節程式設計語言和開發環境的選擇

選擇“directories”頁籤,在“show directories for”下拉清單中選擇“include files”,選項并在“directories”清單框中添加新的psdk頭檔案的目錄,放在清單的最上面,如圖1-2所示。

《C++ 黑客程式設計揭秘與防範》—第1章1.1節程式設計語言和開發環境的選擇

在“show directories for”下拉清單中選擇“library files”選項,并在“directories”清單框中添加新的psdk庫檔案的目錄,放在清單的最上面,如圖1-3所示。

切記要把所添加的目錄放到清單的最上邊,因為在vc編譯代碼的時候會搜尋這些目錄裡的檔案,如果随便放,編譯器會因找不到相關api函數定義而報函數未定義的錯誤。

另外,還必須下載下傳一個msdn。msdn即microsoft developer network,它是微軟開發的聯機幫助文檔,可以幫助我們在使用api的時候進行快速的查閱,以友善我們對api的使用和了解。但是msdn裡的内容全部都是英文的,如果你英文不太好可以借助搜尋引擎來學習api的使用。本書隻對所提到的api函數常用的參數進行介紹,其他參數需要大家自行進行學習。

《C++ 黑客程式設計揭秘與防範》—第1章1.1節程式設計語言和開發環境的選擇

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀