CN110058876B - 扩展wireshark软件兼容性的方法、装置、服务器及存储介质 - Google Patents
扩展wireshark软件兼容性的方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110058876B CN110058876B CN201910338067.9A CN201910338067A CN110058876B CN 110058876 B CN110058876 B CN 110058876B CN 201910338067 A CN201910338067 A CN 201910338067A CN 110058876 B CN110058876 B CN 110058876B
- Authority
- CN
- China
- Prior art keywords
- source file
- lua
- function
- software
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000006870 function Effects 0.000 claims abstract description 180
- 230000004048 modification Effects 0.000 claims description 16
- 238000012986 modification Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 5
- 238000009795 derivation Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 8
- 239000011800 void material Substances 0.000 description 6
- 238000013515 script Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004880 explosion Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008961 swelling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例涉及计算机技术领域,特别涉及扩展wireshark软件兼容性的方法、装置、服务器及存储介质。扩展wireshark软件兼容性的方法,包括:获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素,所述缺失元素包括必要函数的导出信息;根据所述缺失元素,修改所述lua5.3源文件,修改后的所述lua5.3源文件中包括对所述必要函数的定义及导出声明;编译修改后的所述lua5.3源文件,得到修改后的所述lua5.3源文件的动态链接库文件;加载所述动态链接库文件至所述wireshark软件。采用本发明的实施方式,能够使得wireshark软件兼容于lua5.3,通过lua5.3语言编写的内容可被wireshark软件正确加载运行,从而提升实际开发过程的便捷度。
Description
技术领域
本发明实施例涉及计算机技术领域,特别涉及扩展wireshark软件兼容性的方法、装置、服务器及存储介质。
背景技术
Wireshark软件是一款网络协议分析工具,主要用于获取网络封包并显示出详细的网络封包资料;它允许使用者以插件的形式开发私有协议的支持分析服务,在业内领域受到广泛使用。由于wireshark软件自带lua解析器,并提供了丰富的接口,因此使用者常常通过lua脚本语言编写相关协议解析的内容,加载至wireshark软件,在开发上十分便利。日前推出的5.3版本的lua语言(下称lua5.3)相较于历史版本增加了一些新特性,使得比编写代码的便捷程度得到提升。
然而发明人发现相关技术中至少存在如下问题:虽然lua5.3相较于历史版本增加了新特性,但在实际使用中,wireshark软件不兼容lua5.3,无法正确加载运行lua5.3语言编写的内容,从而使得lua5.3的新增特性无法应用于实际开发,使用者的体验感较差。
发明内容
本发明实施方式的目的在于提供一种扩展wireshark软件兼容性的方法、装置、服务器及存储介质,能够使得wireshark软件兼容于lua5.3,通过lua5.3语言编写的内容可被wireshark软件正确加载运行,从而提升实际开发过程的便捷度。
为解决上述技术问题,本发明的实施方式提供了一种扩展wireshark软件兼容性的方法,包括以下步骤:获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素,所述缺失元素包括必要函数的导出信息;根据所述缺失元素,修改所述lua5.3源文件,修改后的所述lua5.3源文件中包括对所述必要函数的定义及导出声明;编译修改后的所述lua5.3源文件,得到修改后的所述lua5.3源文件的动态链接库文件;加载所述动态链接库文件至所述wireshark软件。
本发明的实施方式还提供了一种扩展wireshark软件兼容性的装置,包括:获取模块,用于获取lua5.3源文件在wireshark软件中的缺失元素,所述缺失元素包括所述lua5.3源文件相较于历史源文件缺失的必要函数导出信息,所述历史源文件兼容于所述wireshark软件;修改模块,用于根据所述缺失元素,修改所述lua5.3源文件,修改后的所述lua5.3源文件中包括对所述必要函数的定义及导出声明;编译模块,用于编译修改后的所述lua5.3源文件,得到所述lua5.3源文件的动态链接库文件;加载模块,用于加载所述动态链接库文件至所述wireshark软件。
本发明的实施方式还提供了一种服务器,所述服务器上运行有wireshark软件,所述wireshark软件基于上述扩展wireshark软件兼容性的方法实现了对lua5.3的兼容。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述扩展wireshark软件兼容性的方法。
本发明实施方式相对于现有技术而言,获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素,所述缺失元素包括必要函数的导出信息;根据所述缺失元素,修改所述lua5.3源文件,修改后的所述lua5.3源文件中包括对所述必要函数的定义及导出声明;编译修改后的所述lua5.3源文件,得到修改后的所述lua5.3源文件的动态链接库文件;加载所述动态链接库文件至所述wireshark软件。由于lua5.3源文件无法正常加载在wireshark软件,即wireshark软件无法兼容lua5.3,因此通过比较lua5.3源文件和兼容于wireshark软件的历史lua源文件,获取得到导致不兼容问题的缺失元素,缺失元素包括必要函数的导出信息,从而根据缺失元素修改lua5.3源文件,使得修改后的lua5.3源文件中包括对必要函数的定义及导出声明,使得必要函数在lua5.3源文件中并不缺失且是可见状态,避免了因缺失必要函数而导致的不兼容问题,且对lua5.3源文件的修改具有极高的针对性,同时修改工程量较小。在得到修改后的lua5.3源文件后,对lua5.3源文件进行编译并加载至wireshark软件,从而完成了wireshark软件对lua5.3的兼容扩展,使得通过修改lua5.3源文件,就可令通过lua5.3语言编写的内容可被wireshark软件正确加载运行,而无需对整个wireshark软件本身进行修改,有效控制了本实施方式的工程量,使得本实施方式具有较高的可行性。
另外,所述lua5.3源文件包括源文件lua.h和源文件lapi.c;所述根据所述缺失元素,修改所述lua5.3源文件,包括:在所述源文件lua.h中,删除所述必要函数的宏定义,添加对所述必要函数的导出声明;在所述源文件lapi.c中,重新定义所述必要函数;上述提供了一种修改lua5.3源文件的方式:当必要函数在源文件lua.h中以宏定义的形式被定义,并未被导出时,在源文件lapi.c中该必要函数不可见,不能被直接调用,即该必要函数成为了缺失元素;因此需要在源文件lua.h中删除对必要函数的无用的宏定义,并添加对必要函数的导出声明,使得必要函数在源文件lapi.c中是可见的;同时,在源文件lapi.c中重新定义缺失函数,使得缺失函数在源文件lapi.c中可见,能够被编译在动态链接库文件中以被正确加载使用。
另外,所述必要函数,包括:lua_remove函数,lua_insert函数和lua_replace函数;所述重新定义所述必要函数,包括:根据lua_rotate函数和lua_pop函数,重新定义所述lua_remove函数;根据所述lua_rotate函数,重新定义所述lua_insert函数;根据lua_copy函数和所述lua_pop函数,重新定义所述lua_replace函数。由于lua5.3源文件缺失的必要函数包括lua_remove函数,lua_insert函数和lua_replace函数,因此提供了三种定义方法,通过源文件中已经存在的函数,重新定义上述三个必要函数,使得重新定义的上述三个函数能够正常发挥函数的功能。
另外,在所述源文件代码中,重新定义所述必要函数,具体为:在所述源文件lapi.c中定义返回函数的位置前,添加所述必要函数的定义,即为必要函数提供了一个较合适的定义位置,避免在定义必要函数前,源文件lapi.c中就需要引用到必要函数。
另外,在所述编译修改后的所述lua5.3源文件前,还包括:添加对所述lua5.3源文件的兼容编译宏,所述兼容编译宏用于供编译得到的所述lua5.3源文件的动态链接库文件向下兼容,使得加载了lua5.3源文件的动态链接库的软件能够同时兼容历史版本的lua源文件,即开发者使用历史版本的lua语言编写的脚本仍能在新的环境中正确运行,从而提升了lua5.3语言的实用性及开发者的使用体验。
另外,修改所述lua5.3源文件,包括:降低所述lua5.3源文件中collectgarbage的setpause参数的默认值;由于collectgarbage是收集垃圾对象、用于控制自动内存管理的程序,collectgarbage的setpause参数用于控制垃圾收集循环时长,因此当setpause参数的默认值较高时,会在总内存量使用量较高时才会开始垃圾收集循环,从而导致内存使用量暴涨;因此通过降低collectgarbage的setpause参数的默认值,有效降低了因加载使用了lua5.3源文件而导致软件内存暴涨的可能性。
另外,降低所述lua5.3源文件中collectgarbage的setpause参数的默认值,具体为:将所述setpause参数的默认值降低至100;由于setpause参数的默认值为200,即collectgarbage并非即时收集垃圾;而当将所述setpause参数的默认值降低至100时,表示collectgarbage是即时进行垃圾收集,只要开始使用软件时就会进行垃圾收集,从而有效控制了软件内存使用量的稳定。
另外,加载所述动态链接库文件至所述wireshark软件包括:用所述动态链接库文件替换wireshark软件中对应的动态链接库文件,使得在使用wireshark软件时可直接调用lua5.3的动态链接库中存放的函数实现过程。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。
图1是根据本发明第一实施方式的扩展wireshark软件兼容性的方法的流程图;
图2是根据本发明第一实施方式的修改lua5.3源文件的流程图;
图3是根据本发明第二实施方式的扩展wireshark软件兼容性的方法的流程图;
图4是根据本发明第四实施方式的扩展wireshark软件兼容性的装置的结构方框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种扩展wireshark软件兼容性的方法,具体流程如图1所示,包括:
步骤101,获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素。
步骤102,根据所述缺失元素,修改所述lua5.3源文件。
步骤103,编译修改后的所述lua5.3源文件,得到修改后的所述lua5.3源文件的动态链接库文件。
步骤104,加载动态链接库文件至wireshark软件。
下面对本实施方式的扩展wireshark软件兼容性的方法的实现细节进行具体的说明;以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
在步骤101中,获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素,缺失元素包括必要函数的导出信息。由于wireshark软件无法兼容lua5.3,在使用wireshark软件加载lua5.3源文件时,会提示“无法定位程序输入点……于动态链接库”(“程序输入点……”具体指代的是函数名),也就是说,wireshark软件判定lua5.3源文件中缺失了一些必要函数才导致了lua5.3与wireshark软件互不兼容的问题。而wireshark软件可以正确加载历史版本的lua源文件(如lua5.2源文件)。
因此,通过比较lua5.3源文件和lua5.2源文件,可获取得到lua5.3源文件相较于lua5.2源文件的区别之处,也就是可获取得到lua5.3源文件相较于lua5.2源文件所缺失的必要函数的导出信息。
在步骤102中,根据缺失元素,修改lua5.3源文件。
必要函数在源文件lua.h中以宏定义的形式被定义,并未被导出时,且必要函数在源文件lapi.c中是不可见的,故不能在源文件lapi.c中直接调用宏定义的元素;而lua5.3源文件包括源文件lua.h和源文件lapi.c,因此本实施方式提供了一种修改源文件的方式,具体流程如图2所示:
步骤1021,在源文件lua.h中,删除必要函数的宏定义,添加对必要函数的导出声明;
步骤1022,在源文件lapi.c中,重新定义必要函数;
具体地说,在源文件lua.h中删除对必要函数的无用的宏定义,并添加对必要函数的导出声明,使得必要函数在源文件lapi.c中是可见的;同时,在源文件lapi.c中重新定义必要函数,使得必要函数能够被编译在动态链接库文件中以被正确加载使用。
本实施方式中,根据比较lua5.3源文件和lua5.2源文件,获取得到lua5.3源文件相较于lua5.2源文件缺失了三个必要函数:lua_remove函数,lua_insert函数和lua_replace函数;因此,在lua5.3的源文件lua.h中,删除(或注释掉)对上述三个函数的宏定义(即define定义),同时为上述lua_remove函数,lua_insert函数和lua_replace函数添加导出声明,具体的代码实现如下:
LUA_API void(lua_remove)(lua_State*L,int idx);
LUA_API void(lua_insert)(lua_State*L,int idx);
LUA_API void(lua_replace)(lua_State*L,int idx);
在修改了lua5.3源文件的源文件lua.h后,在lua5.3的源文件lua.h中,重新定义上述的lua_remove函数,lua_insert函数和lua_replace函数:
对lua_remove函数的重新定义,具体通过以下的方式:由于lua_remove函数的功能在于,从给定索引处移除一个元素,并将给定索引之上的所有元素移下来填不上移除的空隙;因此,当重新定义lua_remove函数时,使用lua_rotate函数和lua_pop函数来实现lua_remove函数的功能,其中,lua_rotate函数的功能在于,把从idx开始到栈顶的元素轮转n个位置,n为正数时,轮转方向向栈顶,n为负数时,轮转方向向栈底,lua_rotate函数的具体代码实现如下:
void lua_rotate(lua_State*L,int idx,int n);
其中,lua_pop函数的功能在于,从栈中弹出n个元素,lua_pop函数的具体代码实现如下:
void lua_pop(lua_State*L,int n);
因此,通过lua_rotate函数和lua_pop函数重新定义lua_remove函数时,先通过lua_rotate函数令从idx开始到栈顶的的元素向栈底方向轮转一个位置,再将轮转后栈顶的元素弹出,具体代码实现如下:
对lua_insert函数的重新定义,具体通过以下的方式:由于lua_insert函数的功能在于,把栈顶元素移动到指定的有效索引处,依次移动这个索引之上的元素;因此,当重新定义lua_insert函数时,使用上述的lua_rotate函数来实现lua_insert函数的功能,具体代码实现如下:
对lua_replace函数的重新定义,具体通过以下的方式:由于lua_replace函数的功能在于,把栈顶元素放置到给定位置而不移动其他元素,即覆盖了给定位置的值,然后将栈顶元素弹出;因此,当重新定义lua_replace函数时,使用lua_copy函数和上述的lua_pop函数来实现lua_replace函数的功能,其中,lua_copy函数的功能在于,从索引fromidx处复制一个值到一个有效索引toidx处,覆盖toidx处的原有值,而不影响其他位置的值,lua_copy函数的具体代码实现如下:
void lua_copy(lua_State*L,int fromidx,int toidx);
因此,通过lua_copy函数和lua_pop函数重新定义lua_replace函数时,先通过lua_copy函数从栈顶处复制一个值到给定索引处,覆盖给定索引处的原有值,再将栈顶的元素弹出,的具体代码实现如下:
通过以上对代码进行的修改,即完成了对缺失的三个必要函数的重新定义。
更优的,为了避免在重新定义必要函数前,源文件lapi.c就需要引用到必要函数,可选择在源文件lapi.c中的合适位置插入用于重新定义必要函数的代码,例如在源文件lapi.c定义lua_type函数前,插入用于重新定义必要函数的代码。
在步骤103及步骤104中,编译修改后的lua5.3源文件,得到修改后的lua5.3源文件的动态链接库文件,并加载动态链接库文件至wireshark软件。
动态链接库文件(即dll文件)中存放的是各类程序的函数(子过程)实现过程,当执行程序时,程序相应的dll文件就会被调用,从而在程序需要时可调用dll文件中存放的函数实现过程。
为了使得通过lua5.3语言编写的脚本可被wireshark软件正确加载运行,本实施方式将修改后的lua5.3源文件进行编译,得到lua5.3源文件的动态链接库文件,并将编译得到的lua5.3源文件的动态链接库文件加载至wireshark软件。
其中,加载的方式可包括替换掉wireshark软件中原有的对应的动态链接库文件(lua52.dll),使得运行wireshark软件时可以正常调用lua5.3源文件中包含的函数实现过程;也可包括直接加载该动态库文件。
本实施方式相对于现有技术而言,获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素,所述缺失元素包括必要函数的导出信息;根据所述缺失元素,修改所述lua5.3源文件,修改后的所述lua5.3源文件中包括对所述必要函数的定义及导出声明;编译修改后的所述lua5.3源文件,得到修改后的所述lua5.3源文件的动态链接库文件;加载所述动态链接库文件至所述wireshark软件。由于lua5.3源文件无法正常加载在wireshark软件,即wireshark软件不兼容于lua5.3,因此通过比较lua5.3源文件和兼容于wireshark软件的历史lua源文件,获取得到导致不兼容问题的缺失元素,缺失元素包括必要函数的导出信息,从而根据缺失元素修改lua5.3源文件,使得修改后的lua5.3源文件中包括对必要函数的定义及导出声明,使得必要函数在lua5.3源文件中并不缺失且是可见状态,避免了因缺失必要函数而导致的不兼容问题,且对lua5.3源文件的修改具有极高的针对性,同时修改工程量较小。在本实施方式中,提供了一种修改lua5.3源文件的方式,即在源文件lua.h中,删除必要函数的宏定义,并添加对必要函数的导出声明;同时在源文件lapi.c中,重新定义必要函数,这种修改方式在技术实现上修改工程量较小。在得到修改后的lua5.3源文件后,对lua5.3源文件进行编译并加载至wireshark软件,从而完成了wireshark软件对lua5.3的兼容扩展,使得通过lua5.3语言编写的内容可被wireshark软件正确加载运行,而无需对整个wireshark软件本身进行修改,有效控制了本实施方式的工程量,使得本实施方式具有较高的可行性。
本发明的第二实施方式涉及一种扩展wireshark软件兼容性的方法,本实施方式与第一实施方式大致相同,在本发明第二实施方式中,在编译修改后的lua5.3源文件前,额外添加使得lua5.3源文件向下兼容的编译宏。本实施方式中的扩展wireshark软件兼容性的方法如图3所示,下面对图3的流程做具体说明:
步骤301,获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素。此步骤与步骤101大致相同,此处不再赘述。
步骤302,编译修改后的所述lua5.3源文件,得到修改后的所述lua5.3源文件的动态链接库文件。此步骤与步骤102大致相同,此处不再赘述。
步骤303,添加对lua5.3源文件的兼容编译宏。
具体地说,在编译修改后的lua5.3源文件前,添加对lua5.3源文件的兼容编译宏,兼容编译宏用于供编译得到的lua5.3源文件的动态链接库文件向下兼容,即同时兼容lua5.3语言、lua5.2语言和lua5.1语言,也就是使得加载了lua5.3源文件的动态链接库的wireshark软件能够同时兼容lua5.2源文件和lua5.1源文件等历史版本的lua源文件,开发者使用历史版本的lua语言编写的脚本仍能在新的环境中正确运行,从而提升了lua5.3语言的实用性及开发者的使用体验。添加的对lua5.3源文件的兼容编译宏,通过具体的代码实现如下:
/D"LUA_COMPAT_ALL"
/D"LUA_COMPAT_5_2"
/D"LUA_COMPAT_5_1"
通过添加以上的编译宏后对lua5.3源文件进行编译,即实现了编译得到的动态链接库文件对历史版本lua源文件的兼容。
步骤304,编译修改后的所述lua5.3源文件,得到修改后的所述lua5.3源文件的动态链接库文件。此步骤与步骤103大致相同,此处不再赘述。
步骤305,加载动态链接库文件至wireshark软件。此步骤与步骤104大致相同,此处不再赘述。
本实施方式相对于现有技术而言,在编译修改后的lua5.3源文件前,还添加对lua5.3源文件的兼容编译宏,兼容编译宏用于供编译得到的lua5.3源文件的动态链接库文件向下兼容,即同时兼容lua5.3源文件、lua5.2源文件和lua5.1源文件,也就是使得加载了lua5.3源文件的动态链接库的wireshark软件能够同时兼容lua5.2源文件和lua5.1源文件等历史版本的lua源文件,开发者使用历史版本的lua语言编写的脚本仍能在新的环境中正确运行,从而提升了lua5.3语言的实用性及开发者的使用体验。
本发明的第三实施方式涉及一种扩展wireshark软件兼容性的方法,本实施方式与第一实施方式大致相同,在本发明第三实施方式中,在修改lua5.3源文件时降低了所述lua5.3源文件中collectgarbage的setpause参数的默认值。本实施方式中扩展wireshark软件兼容性的方法如图1所示,下面对图1的流程做具体说明:
步骤101,获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素。此步骤与第一实施方式中的步骤101大致相同,此处不再赘述。
步骤102,根据所述缺失元素,修改所述lua5.3源文件。
具体地说,本实施方式中的步骤102中,除了包括第一实施方式中对源文件lua.h和源文件lapi.c的修改,还包括对lua5.3源文件中collectgarbage的setpause参数的默认值的修改。Lua5.3源文件中存在垃圾收集机制,通过collectgarbage来收集不会再用到的垃圾对象,以用于控制自动内存管理的程序;collectgarbage的setpause参数用于控制垃圾收集循环时长,当setpause参数的默认值较高时,会在总内存量使用量较高时才会开始垃圾收集循环,从而导致内存使用量暴涨;因此,本实施方式降低collectgarbage的setpause参数的默认值,以有效降低了因加载使用了lua5.3源文件而导致软件内存暴涨的可能性。
更优的,由于setpause参数的默认值为200,即collectgarbage并非即时收集垃圾,因此可将lua5.3源文件中collectgarbage的setpause参数的默认值降低至100;由于当collectgarbage的setpause参数的默认值为100时,表示collectgarbage是即时进行垃圾收集,只要开始使用软件时就会进行垃圾收集,因此将lua5.3源文件中collectgarbage的setpause参数的默认值降低至100,以实现对软件内存使用量的稳定有效控制。
步骤103,编译修改后的lua5.3源文件,得到lua5.3源文件的动态链接库文件。此步骤与第一实施方式中的步骤103大致相同,此处不再赘述。
步骤104,加载动态链接库文件至wireshark软件。此步骤与第一实施方式中的步骤104大致相同,此处不再赘述。
本实施方式相对于现有技术而言,还降低了lua5.3源文件中collectgarbage的setpause参数的默认值至100,使得collectgarbage是即时进行垃圾收集,只要开始使用软件时就会进行垃圾收集,以有效降低了因加载使用了lua5.3源文件而导致软件内存暴涨的可能性,控制了软件内存使用量的稳定。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第四实施方式涉及一种扩展wireshark软件兼容性的装置,如图4所示,包括:获取模块401,修改模块402,编译模块403及加载模块404。
获取模块401,用于获取lua5.3源文件在wireshark软件中的缺失元素,所述缺失元素包括所述lua5.3源文件相较于历史源文件缺失的必要函数导出信息,所述历史源文件兼容于所述wireshark软件;
修改模块402,用于根据所述缺失元素,修改所述lua5.3源文件,修改后的所述lua5.3源文件中包括对所述必要函数的定义及导出声明;
编译模块403,用于编译修改后的所述lua5.3源文件,得到所述lua5.3源文件的动态链接库文件;
加载模块404,用于加载所述动态链接库文件至所述wireshark软件。
在一个实例中,所述lua5.3源文件包括源文件lua.h和源文件lapi.c;修改模块402根据所述缺失元素,修改所述lua5.3源文件,包括:在所述源文件lua.h中,删除所述必要函数的宏定义,添加对所述必要函数的导出声明;在所述源文件lapi.c中,重新定义所述必要函数。
在一个实例中,所述所述必要函数,包括lua_remove函数,lua_insert函数和lua_replace函数;所述重新定义所述必要函数,包括:根据lua_rotate函数和lua_pop函数,重新定义所述lua_remove函数;根据所述lua_rotate函数,重新定义所述lua_insert函数;根据lua_copy函数和所述lua_pop函数,重新定义所述lua_replace函数。
在一个实例中,修改模块402在所述源文件代码中,重新定义所述必要函数,具体为:在所述源文件lapi.c中定义返回函数的位置前,添加所述必要函数的定义。
在一个实例中,在编译模块403编译修改后的所述lua5.3源文件前,还包括:添加对所述lua5.3源文件的兼容编译宏,所述兼容编译宏用于供编译得到的所述lua5.3源文件的动态链接库文件向下兼容。
在一个实例中,修改模块402修改所述lua5.3源文件,包括:降低所述lua5.3源文件中collectgarbage的setpause参数的默认值。
在一个实例中,修改模块402降低所述lua5.3源文件中collectgarbage的setpause参数的默认值,具体为:将所述setpause参数的默认值降低至100。
不难发现,本实施方式为与第一实施方式、第二实施方式或第三实施方式的相对应装置的实施例,本实施方式可与第一实施方式、第二实施方式或第三实施方式互相配合实施,第一实施方式、第二实施方式或第三实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,此处不再赘述。相应的,本实施方式中提到的相关技术细节也可应用在第一实施方式、第二实施方式或第三实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第五实施方式涉及一种服务器,服务器上运行有wireshark软件,所述wireshark软件基于上述扩展wireshark软件兼容性的方法实现了对lua5.3的兼容。
即,本领域技术人员可以理解,上述服务器上安装有wireshark软件,所述wireshark软件通过以下方式实现了兼容性的扩展:
获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素,所述缺失元素包括必要函数的导出信息;根据所述缺失元素,修改所述lua5.3源文件,修改后的所述lua5.3源文件中包括对所述必要函数的定义及导出声明;
编译修改后的所述lua5.3源文件,得到修改后的所述lua5.3源文件的动态链接库文件;
加载所述动态链接库文件至所述wireshark软件;
即,所述wireshark软件上加载有修改后的lua5.3源文件的动态链接库文件,从而所述wireshark软件在运行时兼容于lua5.3。
本发明第六实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述扩展wireshark软件兼容性的方法的实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (11)
1.一种扩展wireshark软件兼容性的方法,其特征在于,包括:
获取导致lua5.3源文件无法正常加载在wireshark软件中的缺失元素,所述缺失元素包括所述lua5.3源文件相较于历史源文件缺失的必要函数的导出信息,所述历史源文件兼容于所述wireshark软件,所述必要函数,包括:lua_remove函数,lua_insert函数和lua_replace函数;
根据所述缺失元素,修改所述lua5.3源文件,修改后的所述lua5.3源文件中包括对所述必要函数的定义及导出声明;
编译修改后的所述lua5.3源文件,得到修改后的所述lua5.3源文件的动态链接库文件;
加载所述动态链接库文件至所述wireshark软件。
2.根据权利要求1所述的方法,其特征在于,所述lua5.3源文件包括源文件lua.h和源文件lapi.c;
所述根据所述缺失元素,修改所述lua5.3源文件,包括:
在所述源文件lua.h中,删除所述必要函数的宏定义,添加对所述必要函数的导出声明;
在所述源文件lapi.c中,重新定义所述必要函数。
3.根据权利要求2所述的方法,其特征在于,所述重新定义所述必要函数,包括:
根据lua_rotate函数和 lua_pop函数,重新定义所述lua_remove函数;
根据所述lua_rotate函数,重新定义所述lua_insert函数;
根据lua_copy函数和所述lua_pop函数,重新定义所述lua_replace函数。
4.根据权利要求2所述的方法,其特征在于,所述在所述源文件代码中,重新定义所述必要函数,具体为:
在所述源文件lapi.c中定义返回函数的位置前,添加所述必要函数的定义。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在所述编译修改后的所述lua5.3源文件前,还包括:
添加对所述lua5.3源文件的兼容编译宏,所述兼容编译宏用于供编译得到的所述lua5.3源文件的动态链接库文件向下兼容。
6.根据权利要求1所述的方法,其特征在于,所述修改所述lua5.3源文件,包括:
降低所述lua5.3源文件中collectgarbage 的 setpause 参数的默认值。
7.根据权利要求6所述的方法,其特征在于,所述降低所述lua5.3源文件中collectgarbage 的 setpause 参数的默认值,具体为:
将所述setpause 参数的默认值降低至100。
8.根据权利要求1所述的方法,其特征在于,所述加载所述动态链接库文件至所述wireshark软件包括:用所述动态链接库文件替换wireshark软件中对应的动态链接库文件。
9.一种扩展wireshark软件兼容性的装置,其特征在于,包括:
获取模块,用于获取lua5.3源文件在wireshark软件中的缺失元素,所述缺失元素包括所述lua5.3源文件相较于历史源文件缺失的必要函数的导出信息,所述历史源文件兼容于所述wireshark软件,所述必要函数,包括:lua_remove函数,lua_insert函数和lua_replace函数;
修改模块,用于根据所述缺失元素,修改所述lua5.3源文件,修改后的所述lua5.3源文件中包括对所述必要函数的定义及导出声明;
编译模块,用于编译修改后的所述lua5.3源文件,得到所述lua5.3源文件的动态链接库文件;
加载模块,用于加载所述动态链接库文件至所述wireshark软件。
10.一种服务器,其特征在于,所述服务器上运行有wireshark软件,所述wireshark软件基于权利要求1-8中任一项所述的扩展wireshark软件兼容性的方法实现了对lua5.3的兼容。
11.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一所述的扩展wireshark软件兼容性的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910338067.9A CN110058876B (zh) | 2019-04-25 | 2019-04-25 | 扩展wireshark软件兼容性的方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910338067.9A CN110058876B (zh) | 2019-04-25 | 2019-04-25 | 扩展wireshark软件兼容性的方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110058876A CN110058876A (zh) | 2019-07-26 |
CN110058876B true CN110058876B (zh) | 2022-12-06 |
Family
ID=67320657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910338067.9A Expired - Fee Related CN110058876B (zh) | 2019-04-25 | 2019-04-25 | 扩展wireshark软件兼容性的方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110058876B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419759A (zh) * | 2021-06-21 | 2021-09-21 | 广联达科技股份有限公司 | 文件升级方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981869A (zh) * | 2012-11-05 | 2013-03-20 | 北京奇虎科技有限公司 | 一种系统启动项程序的运行处理方法和装置 |
CN107966719A (zh) * | 2017-12-22 | 2018-04-27 | 中国交通通信信息中心 | 一种基于信号解码和概率筛选的单星定位增强系统及方法 |
CN109002550A (zh) * | 2018-07-31 | 2018-12-14 | 厦门网宿有限公司 | 一种针对还原设备的测试方法及装置 |
CN109408109A (zh) * | 2018-10-23 | 2019-03-01 | 金蝶软件(中国)有限公司 | 一种软件配置方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL2016667B1 (en) * | 2016-04-22 | 2017-11-16 | Winc Solutions B V | Method for installing and updating software programs, corresponding server and software package. |
-
2019
- 2019-04-25 CN CN201910338067.9A patent/CN110058876B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981869A (zh) * | 2012-11-05 | 2013-03-20 | 北京奇虎科技有限公司 | 一种系统启动项程序的运行处理方法和装置 |
CN107966719A (zh) * | 2017-12-22 | 2018-04-27 | 中国交通通信信息中心 | 一种基于信号解码和概率筛选的单星定位增强系统及方法 |
CN109002550A (zh) * | 2018-07-31 | 2018-12-14 | 厦门网宿有限公司 | 一种针对还原设备的测试方法及装置 |
CN109408109A (zh) * | 2018-10-23 | 2019-03-01 | 金蝶软件(中国)有限公司 | 一种软件配置方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110058876A (zh) | 2019-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5007046B2 (ja) | コンポーネントベースのソフトウェア・プロダクトの保守 | |
CN109614165B (zh) | 一种com组件的多版本并行运行方法和装置 | |
US7337434B2 (en) | Off-device class/resource loading methods, systems and computer program products for debugging a Java application in a Java micro device | |
US7584462B2 (en) | System for optimizing application start-up | |
CN111176717B (zh) | 生成安装包的方法、装置及电子设备 | |
US20110145803A1 (en) | Extension mechanism | |
US9053107B1 (en) | Determining updates for files based on an organization of the files on different blocks of a storage device | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN112882694A (zh) | 一种程序编译方法、装置、电子设备及可读存储介质 | |
US8196121B2 (en) | Modular integration of distinct type systems for the compilation of programs | |
CN110058876B (zh) | 扩展wireshark软件兼容性的方法、装置、服务器及存储介质 | |
US11645058B2 (en) | User interface resource file optimization | |
CN111984300B (zh) | 代码复制方法及装置、电子设备和计算机可读存储介质 | |
Chakravarthy et al. | Edicts: implementing features with flexible binding times | |
CN111367512B (zh) | 一种应用程序开发中创建Android库模块依赖关系的方法及装置 | |
CN116301602A (zh) | 数据记录或读取方法、装置、采集设备、车辆及介质 | |
US9720803B2 (en) | Methods and apparatus for debugging of remote systems | |
CN118409786B (zh) | 基于多进程配置动态链接库的方法、装置、设备及介质 | |
CN113805899B (zh) | 一种软件自动部署方法 | |
CN110716746B (zh) | 将rn样式代码转换为小程序样式代码的方法及装置 | |
CN117149252A (zh) | 程序包的体积调整方法、装置、电子设备及可读存储介质 | |
CN118502807A (zh) | 一种开发工具、应用程序构建方法及电子设备 | |
Padioleau et al. | Semantic Patches | |
CN118312204A (zh) | 一种项目打包方法、装置、设备及存储介质 | |
CN118568376A (zh) | 前端组件的共享方法、装置、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20221206 |
|
CF01 | Termination of patent right due to non-payment of annual fee |