## 為什么是ruby
下面這些是2005年左右寫的
在框架的開發過程,Metasploit員工不斷被問到的一個問題是為什么選擇Ruby作為編程語言。為避免個別回答這個問題,作者選擇在這份文件中解釋他們的理由。
Ruby編程語言是由其他選擇選擇的,比如python,perl和C ++,原因有很多。Ruby被選中的第一個(也是主要的)原因是因為它是Metasploit員工喜歡寫的語言。
在花費時間分析其他語言并考慮過去的經驗之后,Ruby編程語言被發現提供簡單又功能強大的一個解釋型語言。
Ruby提供的反射和面向對象方面是非常適合框架要求的東西。
框架對代碼重用的自動化類構造的需求是決策過程中的一個關鍵因素,也是perl不太適合提供的東西之一.
最重要的是,這個語法是非常簡單的,并且提供了與其他更被接受的語言相同的語言特性,比如perl。
Ruby被選中的第二個原因是因為它支持線程平臺. 雖然在這個模式下框架的開發過程遇到了一些限制,但是Metasploit的工作人員已經看到了在2.x分支上顯著的性能和可用性改進。
未來版本的Ruby(1.9系列)將使用原生線程來支持現有的線程API,解釋器被編譯的操作系統將解決當前實現中存在的一些問題(例如允許使用阻塞操作).
與此同時,已經發現現有的線程模型與傳統的fork模型相比優越得多,特別是在缺乏像Windows這樣的本地fork實現的平臺上。
Ruby被選中的另一個原因是因為Windows平臺支持原生解釋器的存在。雖然perl有一個cygwin版本和一個ActiveState版本,但都受到可用性問題的困擾。Ruby解釋器可以在Windows上本地編譯和執行,這大大提高了性能。此外,解釋器也非常小,如果有錯誤,可以很容易地修改。
Python編程語言也是一種語言候選。Metasploit員工選擇Ruby而不是python的原因是由于幾個不同的原因。主要原因是一些python強加的語法上的煩惱,比如塊縮進。雖然許多人會認為這種方法的好處,但Metasploit的一些工作人員認為這是一個不必要的限制。Python的其他問題圍繞著父類方法調用的限制和解釋器的向后兼容性。
C / C ++編程語言也被認真考慮過了,但最終很明顯,試圖用非解釋語言來部署一個可移植和可用的框架是不可行的。而且,選擇這種語言的開發時間很可能會長得多。
即使框架的2.x分支已經相當成功,Metasploit的工作人員也遇到了一些perl的面向對象編程模型的限制和煩惱,或者缺乏的煩惱.perl解釋器是許多發行版默認安裝的一部分,這并不是說Metasploit的工作人員覺得這樣就值得繞過語言選擇。
最后,選擇一個為框架貢獻最大的人所享有的語言,語言最終選擇了Ruby。
- Home
- 開始使用
- 安裝metasploit開發環境
- 使用metasploit
- 使用git
- 報告一個bug
- 貢獻代碼
- 貢獻給metasploit
- 創建一個loginscans Metasploit模塊
- 接受模塊和增強功能的指導
- 常見的Metasploit模塊代碼錯誤
- 樣式提示
- metasploit提交者
- metasploit開發
- 為什么是ruby
- 樣式提示
- 如何開始寫一個exploit
- 如何開始寫一個輔助模塊
- 如何開始寫一個post模塊
- 如何開始寫一個Meterpreter腳本
- 載入外部模塊
- exploit rank
- Metasploit模塊引用標識符
- 怎么在你的exploit中確認window補丁程序級別
- 如何使用filedropper清理文件
- 如何棄用metasploit模塊
- 如何在模塊開發中報告或儲存數據
- 在metasploit如何使用日志
- 如何在metasploit對JavaScript進行混淆
- 如何解析一個http響應
- 如何使用HTTPClient發送HTTP請求
- 如何使用命令階段
- 如何使用數據儲存選項
- 如何在window后期開發中使用railgun
- 如何在exploit中使用powershell
- 如何使用PhpEXE來利用任意文件上傳漏洞
- 如何使用FILEFORMAT mixin創建一個文件格式exploit
- 如何使用BrowserExploitServer編寫一個瀏覽器exploit
- 如何使用HttpServer編寫瀏覽器exploit
- 如何編寫一個check()方法
- 如何使用Seh mixin來利用異常處理程序
- 如何在Windows上使用WbemExec進行寫入權限攻擊
- 如何使用httpserver和httpclient編寫一個模塊
- payloads如何工作
- 如何免殺
- 如何正確使用metasploit模塊