## 为什么是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模块