[怨念]RGSS102J补丁v1.01~附源码:针对RGSS102J.dll的补丁程序~
by 灼眼的夏娜
说明:
主要实现功能,提供RGSS中的so扩展支持,考虑扩充部分内部类?
熟悉ruby的人都知道ruby里有一种c语言的扩展库,但测试在RM中却无法使用require失败~
究其原因有以下几点:1、RGSS中对require方法进行了某些特殊处理;2、RGSS中对于C扩展运行所需要的条件不具备?- - ruby的C扩展在windows下就是以dll形式提供的,然后扩展dll链接到ruby解释器的lib文件,然后ruby解释器require的时候Load dll并调用扩展dll中的一个 void Init_XXXX()方法进行初始化扩展类。
因此我们只要是我们编写的扩展dll链接到ruby解释器上应该就行了~
RMruby的解释器封装在RGSS102Jdll里~
因此我们只需要导出RGSS102J里供扩展dll所需要的函数并提供lib文件即可~
所以我们反汇编得到需要的函数地址~
然后这里怎么导出呢?有两种办法:一是直接修改RGSS102J.dll的导出表,而是新建一个dll直接jmp到对应的地址。 该补丁采用的后一种方法,因为该补丁顺便可以直接提供一些RGSS内部类的扩展。
至此 使RM支持扩展dll的条件全部具备,剩下的就是体力活了>