CN109710283B - 获取Mynav插件的方法、装置、计算机设备和存储介质 - Google Patents

获取Mynav插件的方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN109710283B
CN109710283B CN201811360586.7A CN201811360586A CN109710283B CN 109710283 B CN109710283 B CN 109710283B CN 201811360586 A CN201811360586 A CN 201811360586A CN 109710283 B CN109710283 B CN 109710283B
Authority
CN
China
Prior art keywords
mynav
plug
interface
modifying
ida
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.)
Active
Application number
CN201811360586.7A
Other languages
English (en)
Other versions
CN109710283A (zh
Inventor
陈先亮
杨林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN201811360586.7A priority Critical patent/CN109710283B/zh
Publication of CN109710283A publication Critical patent/CN109710283A/zh
Application granted granted Critical
Publication of CN109710283B publication Critical patent/CN109710283B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请中提供了一种获取Mynav插件的方法、装置、计算机设备和存储介质,获取第一Mynav插件的第一指定接口,其中,所述第一Mynav插件通过所述第一指定接口适用第一IDA pro;修改所述第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDA pro,其中,所述第二IDA pro是所述第一IDA pro的更新版本。通过修改第一Mynav插件适用第一IDA pro的第一指定接口,以获取到适用于新版本的第二IDA pro的第二Mynav插件,实现调用IDA pro的反编译的功能,实现汇编层指令追踪。

Description

获取Mynav插件的方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种获取Mynav插件的方法、装置、计算机设备和存储介质。
背景技术
交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA pro,或简称为IDA,是一个静态反编译软件。而Mynav插件是以IDA pro插件形式出现,Mynav插件是用于反编译时进行指令追踪的IDA pro的插件,其通过IDA pro打开脚本的方式来执行。
随着IDA pro的版本更新,现有的Mynav插件不适用于新版本的IDA pro,导致现有的Mynav插件无法实现汇编层指令追踪的功能,因此更新Mynav插件成为亟需解决的问题。
发明内容
本申请的主要目的为提供一种获取Mynav插件的方法、装置、计算机设备和存储介质,适用于新版本的第二IDA pro,实现汇编层指令追踪。
为实现上述目的,本申请提供了一种获取Mynav插件的方法,包括以下步骤:
一种获取Mynav插件的方法,包括以下步骤:
获取第一Mynav插件的第一指定接口,其中,所述第一Mynav插件通过所述第一指定接口用于适用第一IDA pro;
修改所述第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDA pro,其中,所述第二IDA pro是所述第一IDA pro的更新版本。
进一步地,所述获取第一Mynav插件的第一指定接口的步骤,包括:
查看官方的所述第二IDA pro的API的接口文档;
通过所述接口文档获取所述第一Mynav插件需适用所述第一IDA pro的所述第一指定接口。
进一步地,所述修改第一指定接口得到第二Mynav插件的步骤,包括:
通过修改调用函数对所述第一指定接口进行修改,其中,所述调用函数为所述第一指定接口的参数;
对修改后的所述第一指定接口的调用函数进行组合得到第二指定接口,根据所述第二指定接口获取到所述第二Mynav插件。
进一步地,所述修改所述第一指定接口得到第二Mynav插件的步骤之后,包括:
通过运行所述第二Mynav插件,判断所述第二Mynav插件是否适用于所述第二IDApro;
若否,则对所述第二Mynav插件调试;若是,则通过所述第二Mynav插件对所述第二IDA pro进行汇编层指令追踪。
进一步地,所述修改所述第一指定接口得到第二Mynav插件的步骤之前,包括:
获取修改所述第一指定接口的数据,并将所述数据创建为报表,所述报表用于当修改所述第一指定接口得到所述第二Mynav插件时,提供修改数据。
进一步地,所述通过修改调用函数对所述第一指定接口进行修改的步骤,包括:
通过调用所述第二IDA pro的所述接口文档,根据所述接口文档修改所述第一指定接口的所述调用函数,以修改所述第一Mynav插件的所述第一指定接口。
本申请还提供了一种获取Mynav插件的装置,包括:
第一获取模块,用于获取第一Mynav插件的第一指定接口,其中,所述第一Mynav插件通过所述第一指定接口适用第一IDA pro;
第二获取模块,用于修改所述地体指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDA pro,其中,所述第二IDA pro是所述第一IDA pro的更新版本。
进一步地,所述第一获取模块包括:
查看单元,用于查看官方的所述第二IDA pro的API的接口文档;
第一获取单元,用于通过所述接口文档获取所述第一Mynav插件适用所述第一IDApro的所述第一指定接口。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请中提供的获取Mynav插件的方法、装置、计算机设备和存储介质,具有以下有益效果:
本申请中提供的获取Mynav插件的方法、装置、计算机设备和存储介质,通过修改第一Mynav插件适用第一IDA pro的第一指定接口,以获取到适用于新版本的第二IDA pro的第二Mynav插件,实现调用IDA pro的反编译的功能,实现汇编层指令追踪。
附图说明
图1是本申请一实施例中获取Mynav插件的方法步骤示意图;
图2是本申请一实施例中步骤S2的示意图;
图3是本申请一实施例中获取Mynav插件的装置结构框图;
图4是本申请一实施例中第一获取模块的结构框图;
图5是本申请一实施例中第二获取模块的结构框图;
图6是本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,为本申请一实施例中提供了一种获取Mynav插件的方法,包括以下步骤:
步骤S1,获取第一Mynav插件的第一指定接口,其中,所述第一Mynav插件通过第一指定接口适用第一IDA pro;
步骤S2,修改第一指定接口得到第二Mynav插件,以使第二Mynav插件适用于第二IDA pro,其中,所述第二IDA pro是所述第一IDA pro的更新版本。
在本实施例中,第二IDA pro指的是IDA pro7.0,由于最新版本的IDA pro7.0的API变动很大,对旧版本的第一Mynav插件不适用,需要获取第一Mynav插件适用IDA pro的第一指定接口,由于获取到的第一指定接口不适用IDA pro7.0,故需要对第一指定接口进行修改,或者说修改第一Mynav插件的调用函数(或者说调用方法)以使所述第一Mynav插件修改成第二Mynav插件,通过查看IDA pro7.0的最新API接口文档,获取官网IDA pro7.0的在线API文档,在第二Mynav插件中加入pdb模块进行debug后确定可成功使用的接口。通过获取第二Mynav插件新建的类和对应API的调用来实现,对接口(API)进行组合来综合使其实现IDA的功能,可以调用IDA pro7.0的反编译的功能,从而使更改后的第二Mynav插件可以完成汇编层指令追踪。
在另一具体实施例中,根据第一Mynav插件各部分需要修改的数据,创建一个对应的报表,用于记录修改第一Mynav插件的对应的数据,根据新版本的IDA pro7.0进行对应设置所需修改的数据,系统根据需要从预设报表中获取到对应的修改内容填充,对第一Mynav插件进行修改,获取到第二Mynav插件。
Mynav插件是以IDA pro插件形式出现,通过IDA pro打开脚本的方式来执行,根据IDA pro数据的数据文件名而生成自己的数据库文件名,用以跟踪、实现汇编层指令追踪的功能。
交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA pro,或简称为IDA,是一个静态反编译软件。目前最新的版本为IDA pro7.0,支持多种格式软件分析,可以解析异常处理信息和RITI,并对osx和ios的调试器进行改进,支持osx 10.13和ios 11,且对API改动大,改动后的API对第一Mynav插件不适配。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,无需访问源码,或理解内部工作机制的细节。
指定接口是软件接口,是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作,在本文中指的是为适用对应的IDA的接口,其通过代码实现。
pdb是The Python Debugger的缩写,为Python标准库的一个模块。pdb模块规定了一个Python程序交互式源代码调试器,支持在设置断点(包括条件断点),也支持源码级单步调试,支持栈帧监视,支持源代码列出,支持任意栈帧上下文的随机Python代码估值。它还支持事后调试(post-mortem debugging),并且能在程序控制下被调用。
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。其丰富的库是跨平台的,在UNIX,Windows和Macintosh兼容很好;且互动模式的支持,可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断;并可提供所有主要的商业数据库的接口。
debug是指调试跟踪程序运行过程的步骤,用于分析和解决程序运行中的错误,第二Mynav插件通过加入pdb模块进行debug后,确定可成功使用的接口。
在本实施例中,获取第一Mynav插件的第一指定接口S1的步骤,包括:
步骤S11,查看官方的第二IDA pro的API的接口文档;
步骤S12,通过接口文档获取第一Mynav插件需适用第二IDA pro的第一指定接口。
通过查看新版本第二IDA pro的API接口文档,通过在官网上获取到第二IDA pro的在线API官方文档,进而获取到需适用第二IDA pro的指定接口。其中,官网上的新版本的第二IDA pro的API官方文档是固定的,对应连接即可获取到该官方文档。
参照图2,在本实施例中,修改第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDA pro的步骤S2,包括:
步骤S21,通过修改调用函数对所述第一指定接口进行修改,其中,所述调用函数为所述第一指定接口的参数;
步骤S22,对修改后的所述第一指定接口的调用函数进行组合得到第二指定接口,以获取到适用所述第二IDA pro的第二Mynav插件。
以上步骤中,修改第一指定接口,即是修改第一Mynav插件的调用函数,通过调用API和代码逻辑修改第一指定接口的函数代码,修改第一Mynav插件的调用函数包括:预先新建一个类MyChoose,该类是通过对OnGetSize,OnGetLine,OnSelectLine,OnSelectionChang,show函数的封装构成;然后调用这个类来生成对应的类对象,也即对应chooser=MyChoose(title="Active Sessions",items=items),此处的代码在第一Mynav插件中的代码为:chooser=Choose([],"Active Sessions",3),第一Mynav插件在IDA pro7.0中Choose()类无法正常工作,需要重新构造一个类,也即此处的MyChoose。通过调用MyChoose类生成的chooser对象可用于实现打开IDA pro7.0中的选项对话框的功能。
将Choose修改成MyChoose在代码中表现在以下函数的修改:showSessions函数、showSavedGraphs函数、newAdvancedSession函数、showAdvanced函数、selectAdvanced函数、deselectAdvanced函数、searchAdvanced函数;由于修改函数方法相同,故以showSessions函数为例说明:
原来的showSessions函数:
修改成如下:
从而使得调用chooser.show()可实现选项的选择功能;
再将第一Mynav插件中的函数:idaapi.add_menu_item
修改为:
idaapi.attach_action_to_menu,
通过新的attach_action_to_menu函数实现将子菜单目录添加到父菜单目录中的功能;
将第一Mynav插件的调用函数修改后,形成第二Mynav插件,修改后的第二Mynav插件的调用函数通过组合方式组合,如对新建的类MyChoose和一些逻辑进行组合,使第二Mynav插件的调用函数适用于IDA pro7.0,可通过第二Mynav插件的调用函数对IDA pro7.0进行汇编,实现汇编层指令追踪。
在本实施例中,修改第一指定接口得到第二Mynav插件的步骤S2之后,包括:
步骤S3,通过运行第二Mynav插件,判断所述第二Mynav插件是否适用于第二IDApro;
步骤S4,若否,则对第二Mynav插件调试;若是,则通过第二Mynav插件对第二IDApro进行汇编层指令追踪。
以上步骤中,第二Mynav插件是IDA pro7.0的一个插件,预先运行IDA pro7.0之后再运行第二Mynav插件,进而对第二Mynav插件进行调试,对第二Mynav插件的第二指定接口(即调用函数)进行修改获取最终的第二指定接口(调用函数),对第二Mynav插件的最终的调用函数进行检测,检测其是否适配于新版本的IDA pro7.0,若检测到第二Mynav插件适配于IDA pro7.0,则第二Mynav插件可对IDA pro7.0进行汇编层指令追踪的功能;若检测到不适配,则须重新对第二Mynav插件的第二指定接口再次调试,直至第二Mynav插件适配于IDApro7.0。
通过python(计算机程序设计语言)的pdb模块在终端中以命令行的方式运行IDApro7.0,检测第二Mynav插件是否适配于IDA pro7.0,实现对第二Mynav插件的调试,其中,命令行的方式是通过sudo ida file或者sudo ida64file的方式运行IDA。一般情况下运行IDA都是通过双击IDA的图标进行运行,从命令行运行的方式能够通过python的pdb调试模块来调试第二Mynav插件。
在本实施例中,修改第一指定接口得到第二Mynav插件的步骤S2之前,包括:
步骤S201,获取修改第一指定接口的数据,并将数据创建为报表,报表用于当修改第一指定接口得到第二Mynav插件时,提供修改数据。
在本实施例中,根据第一Mynav插件需要修改的数据,创建一个对应的报表,用于放置修改第一Mynav插件的对应的数据,根据新版本的IDA pro7.0进行对应设置所需修改的数据,系统根据需要从预设报表中获取到对应的修改内容填充,将第一Mynav插件进行修改,获取到第二Mynav插件。
在一实施例中,对新版本的第二IDA pro进行定期检测,可获取第二IDA pro是否存在更新的版本,实时判断第二Mynav插件的最终调用函数是否适配更新后的版本,如若检测到第二Mynav插件的最终调用函数适配第二IDA pro更新后的版本,则可以继续实现对更新后的版本进行指令追踪;若检测到第二Mynav插件的最终调用函数不适配第二IDA pro更新后的版本,则通过弹窗等报警手段通知第二Mynav插件需要修改。
在本实施例中,通过修改调用函数对所述第一指定接口进行修改的步骤S21,包括:
步骤S211,通过调用第二IDA pro的所述接口文档,根据所述接口文档修改第一指定接口的所述调用函数,以修改第一Mynav插件的第一指定接口。
以上步骤中,修改第一Mynav插件的第一指定接口的调用函数,用以使其实现打开新版本IDA pro7.0中的选项对话框的功能,且能使函数实现将子菜单目录添加到父菜单目录中的功能,使修改第一指定接口的调用函数后,生成的第二Mynav插件的调用函数适用于IDA pro7.0,可通过第二Mynav插件的调用函数对IDA pro7.0进行汇编,实现汇编层指令追踪。
综上所述,为本申请实施例中提供的获取Mynav插件的方法,通过修改第一Mynav插件适用第一IDA pro的第一指定接口,以获取到适用于新版本的第二IDA pro的第二Mynav插件,实现调用IDA pro的反编译的功能,实现汇编层指令追踪。
参照图3,本申请一实施例中还提供了一种获取Mynav插件的装置,包括:
第一获取模块1,用于获取第一Mynav插件的第一指定接口,其中,所述第一Mynav插件通过第一指定接口用于适用第一IDA pro;
第二获取模块2,用于修改第一指定接口得到第二Mynav插件,以使第二Mynav插件适用于第二IDA pro,其中,所述第二IDA pro是所述第一IDA pro的更新版本。
在本实施例中,第二IDA pro指的是IDA pro7.0,由于最新版本的IDA pro7.0的API变动很大,对旧版本的第一Mynav插件不适用,需要获取第一Mynav插件适用IDA pro的第一指定接口,由于获取到的第一指定接口不适用IDA pro7.0,故需要对第一指定接口进行修改,或者说修改第一Mynav插件的调用函数(或者说调用方法)以使所述第一Mynav插件修改成第二Mynav插件,通过查看IDA pro7.0的最新API接口文档,通过获取官网IDApro7.0的在线API文档,在第二Mynav插件中加入pdb模块进行debug后确定可成功使用的接口。通过获取第二Mynav插件新建的类和对应API的调用来实现,对接口(API)进行组合来综合使其实现IDA的功能,可以调用IDA pro7.0的反编译的功能,从而使更改后的第二Mynav插件可以完成汇编层指令追踪。
在领一具体实施例中,根据第一Mynav插件各部分需要修改的数据,创建一个对应的报表,用于放置修改第一Mynav插件的对应的数据,根据新版本的IDA pro7.0进行对应设置所需修改的数据,系统根据需要从预设报表中获取到对应的修改内容填充,对第一Mynav插件进行修改,获取到第二Mynav插件。
Mynav插件是以IDA pro插件形式出现,通过IDA pro打开脚本的方式来执行,根据IDA pro数据的数据文件名而生成自己的数据库文件名,用以跟踪、实现汇编层指令追踪的功能。
交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA pro,或简称为IDA,是一个静态反编译软件。目前最新的版本为IDA pro7.0,支持多种格式软件分析,可以解析异常处理信息和RITI,并对osx和ios的调试器进行改进,支持osx 10.13和ios 11,且对API改动大,改动后的API对第一Mynav插件不适配。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
指定接口是软件接口,是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作,在本文中指的是为调用的对应的IDA的接口,其通过代码实现。
pdb是The Python Debugger的缩写,为Python标准库的一个模块。pdb模块规定了一个Python程序交互式源代码调试器,支持在设置断点(包括条件断点),也支持源码级单步调试,支持栈帧监视,支持源代码列出,支持任意栈帧上下文的随机Python代码估值。它还支持事后调试(post-mortem debugging),并且能在程序控制下被调用。
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。其丰富的库是跨平台的,在UNIX,Windows和Macintosh兼容很好;且互动模式的支持,可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断;并可提供所有主要的商业数据库的接口。
debug是指调试跟踪程序运行过程的步骤,用于分析和解决程序运行中的错误,第二Mynav插件通过加入pdb模块进行debug后,确定可成功使用的接口。
参照图4,在本实施例中,第一获取模块1包括:
查看单元11,用于查看官方的第二IDA pro的API的接口文档;
第一获取单元12,用于通过接口文档获取第一Mynav插件需适用第二IDA pro的第一指定接口。
通过查看新版本第二IDA pro的API接口文档,通过在官网上获取到第二IDA pro的在线API官方文档,进而获取到需适用第二IDA pro的指定接口。其中,官网上的新版本的第二IDA pro的API官方文档是固定的,对应连接即可获取到该官方文档。
参照图5,在本实施例中,第二获取模块2包括:
修改单元21,用于通过修改调用函数对所述第一指定接口进行修改,其中,所述调用函数为所述第一指定接口的参数;
第二获取单元22,用于对修改后的所述第一指定接口的调用函数进行组合得到第二指定接口,以获取到适用所述第二IDA pro的第二Mynav插件。
在本实施例中,修改第一指定接口,即是修改第一Mynav插件的调用函数,通过调用API和代码逻辑修改第一指定接口的函数代码,修改第一Mynav插件的调用函数包括:预先新建一个类MyChoose,该类是通过对OnGetSize,OnGetLine,OnSelectLine,OnSelectionChang,show函数的封装构成;然后调用这个类来生成对应的类对象,也即对应chooser=MyChoose(title="Active Sessions",items=items),此处的代码在第一Mynav插件中的代码为:chooser=Choose([],"Active Sessions",3),第一Mynav插件在IDA pro7.0中Choose()类无法正常工作,需要重新构造一个类,也即此处的MyChoose。通过调用MyChoose类生成的chooser对象可用于实现打开IDA pro7.0中的选项对话框的功能。
将Choose修改成MyChoose在代码中表现在以下函数的修改:showSessions函数、showSavedGraphs函数、newAdvancedSession函数、showAdvanced函数、selectAdvanced函数、deselectAdvanced函数、searchAdvanced函数;由于修改函数方法相同,故以showSessions函数为例说明:
原来的showSessions函数:
修改成如下:
从而使得调用chooser.show()可实现选项的选择功能;
再将第一Mynav插件中的函数:idaapi.add_menu_item
修改为:
idaapi.attach_action_to_menu,
通过新的attach_action_to_menu函数实现将子菜单目录添加到父菜单目录中的功能;
将第一Mynav插件的调用函数修改后,形成第二Mynav插件,修改后的第二Mynav插件的调用函数通过组合方式组合,如对新建的类MyChoose和一些逻辑进行组合,使第二Mynav插件的调用函数适用于IDA pro7.0,可通过第二Mynav插件的调用函数对IDA pro7.0进行汇编,实现汇编层指令追踪。
在本实施例中,获取Mynav插件的装置还包括:
第一检测模块,用于通过运行第二Mynav插件,判断所述第二Mynav插件是否适用于第二IDA pro;
第二判断模块,用于若否,则对第二Mynav插件调试;若是,则通过第二Mynav插件对第二IDA pro进行汇编层指令追踪。
在本实施例中,第二Mynav插件是IDA pro7.0的一个插件,预先运行IDA pro7.0之后再运行第二Mynav插件,进而对第二Mynav插件进行调试,对第二Mynav插件的第二指定接口(即调用函数)进行修改获取最终的第二指定接口(调用函数),对第二Mynav插件的最终的调用函数进行检测,检测其是否适配于新版本的IDA pro7.0,若检测到第二Mynav插件适配于IDA pro7.0,则第二Mynav插件可对IDA pro7.0进行汇编层指令追踪的功能;若检测到不适配,则须重新对第二Mynav插件的第二指定接口再次调试,直至第二Mynav插件适配于IDA pro7.0。
通过python(计算机程序设计语言)的pdb模块在终端中以命令行的方式运行IDApro7.0,检测第二Mynav插件是否适配于IDA pro7.0,实现对第二Mynav插件的调试,其中,命令行的方式是通过sudo ida file或者sudo ida64file的方式运行IDA。一般情况下运行IDA都是通过双击IDA的图标进行运行,从命令行运行的方式能够通过python的pdb调试模块来调试第二Mynav插件。
在本实施例中,获取Mynav插件的装置还包括:
修改模块,用于获取修改第一指定接口的数据,并将数据创建为报表,报表用于当修改第一指定接口得到第二Mynav插件时,提供修改数据。
在本实施例中,根据第一Mynav插件需要修改的数据,创建一个对应的报表,用于放置修改第一Mynav插件的对应的数据,根据新版本的IDA pro7.0进行对应设置所需修改的数据,系统根据需要从预设报表中获取到对应的修改内容填充,将第一Mynav插件进行修改,获取到第二Mynav插件。
在一实施例中,对新版本的第二IDA pro进行定期检测,可获取第二IDA pro是否存在更新的版本,实时判断第二Mynav插件的最终调用函数是否适配更新后的版本,如若检测到第二Mynav插件的最终调用函数适配第二IDA pro更新后的版本,则可以继续实现对更新后的版本进行指令追踪;若检测到第二Mynav插件的最终调用函数不适配第二IDA pro更新后的版本,则通过弹窗等报警手段通知第二Mynav插件需要修改。
在本实施例中,修改单元21包括:
修改子单元,用于通过调用第二IDA pro的所述接口文档,根据所述接口文档修改第一指定接口的所述调用函数,以修改第一Mynav插件的第一指定接口。
在本实施例中,修改第一Mynav插件的第一指定接口的调用函数,用以使其实现打开新版本IDA pro7.0中的选项对话框的功能,且能使函数实现将子菜单目录添加到父菜单目录中的功能,使修改第一指定接口的调用函数后,生成的第二Mynav插件的调用函数适用于IDA pro7.0,可通过第二Mynav插件的调用函数对IDA pro7.0进行汇编,实现汇编层指令追踪。
综上所述,为本申请实施例中提供的获取Mynav插件的装置,通过修改第一Mynav插件适用第一IDA pro的第一指定接口,以获取到适用于新版本的第二IDA pro的第二Mynav插件,实现调用IDA pro的反编译的功能,实现汇编层指令追踪。
参照图6,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储报表、修改数据等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种获取Mynav插件的方法。
上述处理器执行上述获取Mynav插件的方法的步骤:
获取第一Mynav插件的第一指定接口,其中,所述第一Mynav插件通过所述第一指定接口适用第一IDA pro;
修改所述第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDA pro,其中,所述第二IDA pro是所述第一IDA pro的更新版本。
在一实施例中,所述获取第一Mynav插件的第一指定接口的步骤,包括:
查看官方的所述第二IDA pro的API的接口文档;
通过所述接口文档获取所述第一Mynav插件需适用所述第二IDA pro的所述第一指定接口。
在一实施例中,所述修改第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDA pro的步骤,包括:
通过修改调用函数对所述第一指定接口进行修改,其中,所述调用函数为所述第一指定接口的参数;
对修改后的所述第一指定接口的调用函数进行组合得到第二指定接口,以获取到适用所述第二IDA pro的所述第二Mynav插件。
在一实施例中,所述修改所述第一指定接口得到第二Mynav插件的步骤之后,包括:
通过运行所述第二Mynav插件,判断所述第二Mynav插件是否适用于所述第二IDApro;
若否,则对所述第二Mynav插件调试;若是,则通过所述第二Mynav插件对所述第二IDA pro进行汇编层指令追踪。
在一实施例中,所述修改所述第一指定接口得到第二Mynav插件的步骤之前,包括:
获取修改所述第一指定接口的数据,并将所述数据创建为报表,所述报表用于当修改所述第一指定接口得到所述第二Mynav插件时,提供修改数据。
在一实施例中,所述通过修改调用函数对所述第一指定接口进行修改的步骤,包括:
通过调用所述第二IDA pro的所述接口文档,根据所述接口文档修改所述第一指定接口的所述调用函数,以修改所述第一Mynav插件的所述第一指定接口。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请一实施例还提供一种计算机存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种获取Mynav插件的方法,具体为:
获取第一Mynav插件的第一指定接口,其中,所述第一Mynav插件通过所述第一指定接口适用第一IDA pro;
修改所述第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDA pro,其中,所述第二IDA pro是所述第一IDA pro的更新版本。
在一实施例中,所述获取第一Mynav插件的第一指定接口的步骤,包括:
查看官方的所述第二IDA pro的API的接口文档;
通过所述接口文档获取所述第一Mynav插件需适用所述第二IDA pro的所述第一指定接口。
在一实施例中,所述修改第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDA pro的步骤,包括:
通过修改调用函数对所述第一指定接口进行修改,其中,所述调用函数为所述第一指定接口的参数;
对修改后的所述第一指定接口的调用函数进行组合得到第二指定接口,以获取到适用所述第二IDA pro的所述第二Mynav插件。
在一实施例中,所述修改所述第一指定接口得到第二Mynav插件的步骤之后,包括:
通过运行所述第二Mynav插件,判断所述第二Mynav插件是否适用于所述第二IDApro;
若否,则对所述第二Mynav插件调试;若是,则通过所述第二Mynav插件对所述第二IDA pro进行汇编层指令追踪。
在一实施例中,所述修改所述第一指定接口得到第二Mynav插件的步骤之前,包括:
获取修改所述第一指定接口的数据,并将所述数据创建为报表,所述报表用于当修改所述第一指定接口得到所述第二Mynav插件时,提供修改数据。
在一实施例中,所述通过修改调用函数对所述第一指定接口进行修改的步骤,包括:
通过调用所述第二IDA pro的所述接口文档,根据所述接口文档修改所述第一指定接口的所述调用函数,以修改所述第一Mynav插件的所述第一指定接口。
综上所述,为本申请实施例中提供的获取Mynav插件的方法、装置、计算机设备和存储介质,通过修改第一Mynav插件适用第一IDA pro的第一指定接口,以获取到适用于新版本的第二IDA pro的第二Mynav插件,实现调用IDA pro的反编译的功能,实现汇编层指令追踪。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (9)

1.一种获取Mynav插件的方法,其特征在于,包括以下步骤:
获取第一Mynav插件的第一指定接口,其中,所述第一Mynav插件通过所述第一指定接口适用第一IDA pro;
修改所述第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDApro,其中,所述第二IDA pro是所述第一IDA pro的更新版本;
所述修改所述第一指定接口得到第二Mynav插件的步骤之后包括:在所述第二Mynav插件中加入pdb模块进行debug;所述pdb模块为Python标准库的一个模块,所述debug是指调试跟踪程序运行过程的步骤,用于分析和解决程序运行中的错误;
所述修改第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDApro的步骤,包括:
通过修改调用函数对所述第一指定接口进行修改,其中,所述调用函数为所述第一指定接口的参数;其中,所述修改调用函数包括:预先新建一个类MyChoose,该类是通过对OnGetSize,OnGetLine,OnSelectLine,OnSelectionChang,show函数的封装构成;调用这个类来生成对应的类对象,也即对应chooser = MyChoose(title="Active Sessions",items=items);
对修改后的所述第一指定接口的调用函数进行组合得到第二指定接口,以获取到适用所述第二IDA pro的所述第二Mynav插件。
2.根据权利要求1所述的获取Mynav插件的方法,其特征在于,所述获取第一Mynav插件的第一指定接口的步骤,包括:
查看官方的所述第二IDA pro的API的接口文档;
通过所述接口文档获取所述第一Mynav插件需适用所述第二IDA pro的所述第一指定接口。
3.根据权利要求1所述的获取Mynav插件的方法,其特征在于,所述修改所述第一指定接口得到第二Mynav插件的步骤之后,包括:
通过运行所述第二Mynav插件,判断所述第二Mynav插件是否适用于所述第二IDA pro;
若否,则对所述第二Mynav插件调试;若是,则通过所述第二Mynav插件对所述第二IDApro进行汇编层指令追踪。
4.根据权利要求1所述的获取Mynav插件的方法,其特征在于,所述修改所述第一指定接口得到第二Mynav插件的步骤之前,包括:
获取修改所述第一指定接口的数据,并将所述数据创建为报表,所述报表用于当修改所述第一指定接口得到所述第二Mynav插件时,提供修改数据。
5.根据权利要求1所述的获取Mynav插件的方法,其特征在于,所述通过修改调用函数对所述第一指定接口进行修改的步骤,包括:
通过调用所述第二IDA pro的接口文档,根据所述接口文档修改所述第一指定接口的所述调用函数,以修改所述第一Mynav插件的所述第一指定接口。
6.一种获取Mynav插件的装置,其特征在于,包括:
第一获取模块,用于获取第一Mynav插件的第一指定接口,其中,所述第一Mynav插件通过所述第一指定接口适用第一IDA pro;
第二获取模块,用于修改所述第一指定接口得到第二Mynav插件,以使所述第二Mynav插件适用于第二IDA pro,其中,所述第二IDA pro是所述第一IDA pro的更新版本;
所述修改所述第一指定接口得到第二Mynav插件之后包括:在所述第二Mynav插件中加入pdb模块进行debug;所述pdb模块为Python标准库的一个模块,所述debug是指调试跟踪程序运行过程的步骤,用于分析和解决程序运行中的错误;
所述第二获取模块包括:
修改单元,用于通过修改调用函数对所述第一指定接口进行修改,其中,所述调用函数为所述第一指定接口的参数;其中,所述修改调用函数包括:预先新建一个类MyChoose,该类是通过对OnGetSize,OnGetLine,OnSelectLine,OnSelectionChang,show函数的封装构成;调用这个类来生成对应的类对象,也即对应chooser = MyChoose(title="ActiveSessions", items=items);
第二获取单元,用于对修改后的所述第一指定接口的调用函数进行组合得到第二指定接口,以获取到适用所述第二IDA pro的所述第二Mynav插件。
7.根据权利要求6所述的获取Mynav插件的装置,其特征在于,所述第一获取模块包括:
查看单元,用于查看官方的所述第二IDA pro的API的接口文档;
第一获取单元,用于通过所述接口文档获取所述第一Mynav插件需适用所述第二IDApro的所述第一指定接口。
8.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
9.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
CN201811360586.7A 2018-11-15 2018-11-15 获取Mynav插件的方法、装置、计算机设备和存储介质 Active CN109710283B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811360586.7A CN109710283B (zh) 2018-11-15 2018-11-15 获取Mynav插件的方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811360586.7A CN109710283B (zh) 2018-11-15 2018-11-15 获取Mynav插件的方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN109710283A CN109710283A (zh) 2019-05-03
CN109710283B true CN109710283B (zh) 2024-05-07

Family

ID=66254843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811360586.7A Active CN109710283B (zh) 2018-11-15 2018-11-15 获取Mynav插件的方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN109710283B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110990078B (zh) * 2019-11-29 2021-05-11 浙江大搜车软件技术有限公司 应用的初始化方法、装置、存储介质及移动终端

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101566954A (zh) * 2009-05-31 2009-10-28 珠海金山软件股份有限公司 一种管理插件的方法及管理插件的装置
CN102520967A (zh) * 2011-12-28 2012-06-27 深圳市融创天下科技股份有限公司 一种创建与使用移动平台插件的方法、系统和移动终端
CN103150154A (zh) * 2011-12-07 2013-06-12 腾讯科技(深圳)有限公司 一种应用程序插件的实现方法及装置
CN104699511A (zh) * 2015-03-27 2015-06-10 北京奇虎科技有限公司 插件升级方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496535B2 (en) * 2000-10-14 2009-02-24 Goldman Sachs & Co. Computerized interface for constructing and executing computerized transaction processes and programs

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101566954A (zh) * 2009-05-31 2009-10-28 珠海金山软件股份有限公司 一种管理插件的方法及管理插件的装置
CN103150154A (zh) * 2011-12-07 2013-06-12 腾讯科技(深圳)有限公司 一种应用程序插件的实现方法及装置
CN102520967A (zh) * 2011-12-28 2012-06-27 深圳市融创天下科技股份有限公司 一种创建与使用移动平台插件的方法、系统和移动终端
CN104699511A (zh) * 2015-03-27 2015-06-10 北京奇虎科技有限公司 插件升级方法及装置

Also Published As

Publication number Publication date
CN109710283A (zh) 2019-05-03

Similar Documents

Publication Publication Date Title
AU2017258963B2 (en) Simultaneous multi-platform testing
US9098636B2 (en) White-box testing systems and/or methods in web applications
EP3660684B1 (en) Efficient and comprehensive source code fuzzing
US20200183683A1 (en) Application architecture generation
US7299456B2 (en) Run into function
Lin et al. Study and refactoring of android asynchronous programming (t)
Soltani et al. A guided genetic algorithm for automated crash reproduction
US8756572B2 (en) Debugger-set identifying breakpoints after coroutine yield points
CN110908895A (zh) 页面自动化测试方法、装置、计算机设备及存储介质
CN111930472B (zh) 一种代码调试方法、装置、电子设备及存储介质
EP3333712A2 (en) Simultaneous multi-platform testing
Farooq et al. Runtimedroid: Restarting-free runtime change handling for android apps
CN108121650B (zh) 一种对于页面用户界面的测试方法及装置
CN109614107B (zh) 一种软件开发工具包的集成方法和装置
US20170075789A1 (en) Method and apparatus for generating, capturing, storing, and loading debug information for failed tests scripts
CN112395202B (zh) 接口自动化测试方法、装置、计算机设备和存储介质
Adamsen et al. Practical initialization race detection for JavaScript web applications
CN109710283B (zh) 获取Mynav插件的方法、装置、计算机设备和存储介质
Ghosh et al. A systematic review on program debugging techniques
Yandrapally et al. Mutation analysis for assessing end-to-end web tests
US9424164B2 (en) Memory error tracking in a multiple-user development environment
US20140040666A1 (en) Systems and methods for feedback driven regression testing
US20130097584A1 (en) Mapping software modules to source code
US9632912B1 (en) Method and system for debugging a program
CN113468058A (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