CN115964053A - 一种反编译处理方法、装置、电子设备和存储介质 - Google Patents
一种反编译处理方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115964053A CN115964053A CN202310088932.5A CN202310088932A CN115964053A CN 115964053 A CN115964053 A CN 115964053A CN 202310088932 A CN202310088932 A CN 202310088932A CN 115964053 A CN115964053 A CN 115964053A
- Authority
- CN
- China
- Prior art keywords
- dynamic array
- java
- bytecode
- java card
- byte codes
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种反编译处理方法、装置、电子设备和存储介质,涉及计算机领域,该方法包括创建三个类对象格式的动态数组,分别为第一动态数组、第二动态数组和第三动态数组;遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中;依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理。本发明能够正常处理操作对象长度超过约定长度的场景下的反编译操作。
Description
技术领域
本发明涉及计算机领域,具体涉及一种反编译处理方法、装置、电子设备和存储介质。
背景技术
在对Java Card(Java卡)的CAP包(Java开发的一个最终输出结果)进行反编译的过程中,常规的操作处理数为1个字节,例如使用SINC、INC、SWAP(交换)等指令操作的均为1个字节,在这种常规情况下能够进行正常的反编译操作。但在实际的反编译场景中,往往会出现操作对象大于1个字节的情况,在这种情景下反编译则无法支持,从而导致反编译失败。
具体的,Java Card的Cap包里面的Method组件对应的字节码,都是通过JDK(一种软件开发工具包)编译生成的class文件(一种可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件),然后将class文件里面对应的Java字节码编译生成JavaCard对应的字节码。原则上,Java Card字节码和Java字节码存在一对一的映射关系,通过遍历Java Card字节码,基于该映射关系可以反编译出对应的Java字节码,但对于特定的字节码,比如SINC_W和IINC_W等操作数大于1字节时,通过上述映射关系则无法找出对应的Java字节码。
因此,当前亟需一种在处理的字节长度超过约定长度时,仍旧能够正常进行反编译操作处理的方法。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种反编译处理方法、装置、电子设备和存储介质,能够正常处理操作对象长度超过约定长度的场景下的反编译操作。
为达到以上目的,本发明提供的一种反编译处理方法,具体包括以下步骤:
创建三个类对象格式的动态数组,分别为第一动态数组、第二动态数组和第三动态数组;
遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将JavaCard字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中;
依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理;
其中,所述第一动态数组用于存储Java Card字节码的信息,所述第二动态数组用于存储Java Card字节码的信息,以及转换后生成的对应的Java字节码的信息,所述第三动态数组用于存储转换后生成的Java字节码的信息。
在上述技术方案的基础上,
所述第一动态数组包括4个成员,其中,第一成员为Java Card字节码对应的操作码,第二成员为操作数1,第三成员为操作数2,第四成员为操作数3;
所述第二动态数组包括2个成员,其中,第一成员为对应第一动态数组类型的对象实例,第二成员为存储类第三动态数组类型的动态数组;
所述第三动态数组包括3个成员,其中,第一成员为Java Card字节码转换后对应生成的Java字节码的操作码,第二成员为存储Java Card字节码转换后生成的Java字节码对应操作数的动态数组,第三成员为转换后生成的Java字节码和对应操作数占用的字节个数。
在上述技术方案的基础上,所述遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中,具体步骤包括:
将所有Java Card字节码存储至第一动态数组中,并创建一个类第二动态数组类型的实例对象;
依次取出第一动态数组中存储的Java Card字节码,并将取出的Java Card字节码的信息赋值给创建的第二动态数组类型的实例对象的第一成员;
创建用于存储转换后Java字节码对应操作数的第四临时动态数组;
提取从第一动态数组中取出的Java Card字节码的操作数,并根据语义将该JavaCard字节码映射成单个或多个对应的Java字节码;
将映射得到的Java字节码对应操作数存储至第四临时动态数组中,并将第四动态数组的成员和第三动态数组的第二成员进行关联。
在上述技术方案的基础上,所述依次取出第一动态数组中存储的Java Card字节码,具体步骤为:
依次遍历第一动态数组,并取出第一动态数组中遍历得到的Java Card字节码;
将取出的Java Card字节码命名为JCi,其中,JCi表示第一动态数组中的第i个Java Card字节码,i表示第一动态数组中的索引号。
在上述技术方案的基础上,当根据语义将Java Card字节码映射成单个或多个对应的Java字节码之后,还包括:
将该Java Card字节码存储至创建的实例对象中,同时创建一个类第三动态数组类型的对象,所述对象包含的成员与第三动态数组包含的成员相同;
将映射得到的Java字节码赋值给对象的第一成员,将第四动态数组赋值给赋值给对象的第二成员;
根据对象的第一成员和第二成员,计算得到映射得到的Java字节码和操作数占用的字节空间,同时将映射得到的Java字节码存储至第三动态数组。
在上述技术方案的基础上,所述依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理,具体步骤包括:
依次遍历第二动态数组,获取第二动态数组中的Java Card字节码;
根据当前Java Card字节码的当前地址和目标地址,获取得到第二动态数组中对应的Java字节码;
循环遍历第二动态数组的第二成员中存储的Java字节码,得到第二动态数组的第二成员,并从该成员中获取到转换后的Java字节码个数;
循环遍历获取得到的Java字节码之间的Java字节码,计算得到转换后Java字节码的当前地址和目标地址的相对地址偏移,实现对Java Card字节码的反编译处理。
本发明提供的一种反编译处理装置,包括:
创建模块,其用于创建三个类对象格式的动态数组,分别为第一动态数组、第二动态数组和第三动态数组;
遍历模块,其用于遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中;
转换模块,其用于依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理;
其中,所述第一动态数组用于存储Java Card字节码的信息,所述第二动态数组用于存储Java Card字节码的信息,以及转换后生成的对应的Java字节码的信息,所述第三动态数组用于存储转换后生成的Java字节码的信息。
在上述技术方案的基础上,
所述第一动态数组包括4个成员,其中,第一成员为Java Card字节码对应的操作码,第二成员为操作数1,第三成员为操作数2,第四成员为操作数3;
所述第二动态数组包括2个成员,其中,第一成员为对应第一动态数组类型的对象实例,第二成员为存储类第三动态数组类型的动态数组;
所述第三动态数组包括3个成员,其中,第一成员为Java Card字节码转换后对应生成的Java字节码的操作码,第二成员为存储Java Card字节码转换后生成的Java字节码对应操作数的动态数组,第三成员为转换后生成的Java字节码和对应操作数占用的字节个数。
本发明提供的一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述所述反编译处理方法的步骤。
本发明提供的一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述所述反编译处理方法的步骤。
与现有技术相比,本发明的优点在于:通过创建多个类对象格式的动态数组,分别为第一动态数组、第二动态数组和第三动态数组,然后遍历每个Java Card字节码,将JavaCard字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中,然后依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,从而能够正常处理操作对象长度超过约定长度的场景下的反编译操作,同时当Java Card对应的字节码通过一对一的映射关系,找不到对应的Java字节码时,可以根据当前Java Card对应的字节码对应的语义,自由的构造出符合该语义的对应Java字节码。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种反编译处理方法的流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。
参见图1所示,本发明实施例提供的一种反编译处理方法,具体包括以下步骤:
S1:创建三个类对象格式的动态数组,分别为第一动态数组、第二动态数组和第三动态数组;
即创建三个类对象格式的动态数组,其中,第一动态数组用于存储Java Card字节码的信息,所述第二动态数组用于存储Java Card字节码的信息,以及转换后生成的对应的Java字节码的信息,所述第三动态数组用于存储转换后生成的Java字节码的信息。
具体的,对于第一动态数组的成员结构描述:第一动态数组包括4个成员,其中,第一成员为Java Card字节码对应的操作码,第二成员为操作数1,第三成员为操作数2,第四成员为操作数3。
对于第二动态数组的成员结构描述:第二动态数组包括2个成员,其中,第一成员为对应第一动态数组类型的对象实例,第二成员为存储类第三动态数组类型的动态数组。
对于第三动态数组的成员结构描述:第三动态数组包括3个成员,其中,第一成员为Java Card字节码转换后对应生成的Java字节码的操作码,第二成员为存储Java Card字节码转换后生成的Java字节码对应操作数的动态数组,第三成员为转换后生成的Java字节码和对应操作数占用的字节个数。在实际的操作中,单个Java字节码可能对应多个操作数。
S2:遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中;
本发明中,遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中,具体步骤包括:
S201:将所有Java Card字节码存储至第一动态数组中,并创建一个类第二动态数组类型的实例对象;即将所有Java Card字节码按照第一动态数组的格式存储至第一动态数组中。
S202:依次取出第一动态数组中存储的Java Card字节码,并将取出的Java Card字节码的信息赋值给创建的第二动态数组类型的实例对象的第一成员;
本发明中,依次取出第一动态数组中存储的Java Card字节码,具体步骤为:
S2021:依次遍历第一动态数组,并取出第一动态数组中遍历得到的Java Card字节码;
S2022:将取出的Java Card字节码命名为JCi,其中,JCi表示第一动态数组中的第i个Java Card字节码,i表示第一动态数组中的索引号。
S203:创建用于存储转换后Java字节码对应操作数的第四临时动态数组;
S204:提取从第一动态数组中取出的Java Card字节码的操作数,并根据语义将该Java Card字节码映射成单个或多个对应的Java字节码;
即根据从第一动态数组中取出的Java Card字节码,提取出该Java Card字节码的操作数,该操作数可以是1个也可以是多个。
S205:将映射得到的Java字节码对应操作数存储至第四临时动态数组中,并将第四动态数组的成员和第三动态数组的第二成员进行关联。
本发明中,当根据语义将Java Card字节码映射成单个或多个对应的Java字节码之后,还包括:
A:将该Java Card字节码存储至创建的实例对象中,同时创建一个类第三动态数组类型的对象,所述对象包含的成员与第三动态数组包含的成员相同;
B:将映射得到的Java字节码赋值给对象的第一成员,将第四动态数组赋值给赋值给对象的第二成员;
C:根据对象的第一成员和第二成员,计算得到映射得到的Java字节码和操作数占用的字节空间,同时将映射得到的Java字节码存储至第三动态数组。
S3:依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理;
本发明中,依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理,具体步骤包括:
S301:依次遍历第二动态数组,获取第二动态数组中的Java Card字节码;即依次遍历第二动态数组,取出每个数组成员,然后获取当前数组成员对应的Java Card字节码。
S302:根据当前Java Card字节码的当前地址和目标地址,获取得到第二动态数组中对应的Java字节码;
在一种可能的实施方式中,在根据当前Java Card字节码的当前地址和目标地址,获取对应的Java字节码时,获取的Java字节码可能为多个,如Java字节码M和Java字节码N。
S303:循环遍历第二动态数组的第二成员中存储的Java字节码,得到第二动态数组的第二成员,并从该成员中获取到转换后的Java字节码个数。由于数组成员中,第二动态数组的第二成员中存储的对应的Java字节码,每个Java字节码对应的第三动态数组的第三成员,表示了每个Java字节码占用的字节个数,故循环遍历第二动态数组的第二成员中存储的Java字节码,便可得到第二动态数组的第二成员中存储的Java字节码个数。
S304:循环遍历获取得到的Java字节码之间的Java字节码,计算得到转换后Java字节码的当前地址和目标地址的相对地址偏移,实现对Java Card字节码的反编译处理。结合第二动态数组的第二成员中存储的Java字节码个数,可以计算得到转换后Java字节码的当前地址和目标地址的相对地址偏移,实现转换后的Java字节码的链接地址转换映射,同时实现对Java Card字节码的反编译处理。
即循环遍历Java字节码M和Java字节码N之间的Java字节码,计算得到转换后Java字节码的当前地址和目标地址的相对地址偏移。
本发明的反编译处理方法,通过创建多个类对象格式的动态数组,分别为第一动态数组、第二动态数组和第三动态数组,然后遍历每个Java Card字节码,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中,然后依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,从而能够正常处理操作对象长度超过约定长度的场景下的反编译操作,同时当Java Card对应的字节码通过一对一的映射关系,找不到对应的Java字节码时,可以根据当前Java Card对应的字节码对应的语义,自由的构造出符合该语义的对应Java字节码。在实际的应用过程中,字节码可以是一个,也可以是多个,不限制Java字节码个数。
本发明实施例提供的一种反编译处理装置,包括创建模块、遍历模块和转换模块。
创建模块用于创建三个类对象格式的动态数组,分别为第一动态数组、第二动态数组和第三动态数组;遍历模块用于遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中;转换模块用于依次读取动态数组中的JavaCard字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理。第一动态数组用于存储Java Card字节码的信息,所述第二动态数组用于存储Java Card字节码的信息,以及转换后生成的对应的Java字节码的信息,所述第三动态数组用于存储转换后生成的Java字节码的信息。
本发明中,第一动态数组包括4个成员,其中,第一成员为Java Card字节码对应的操作码,第二成员为操作数1,第三成员为操作数2,第四成员为操作数3;第二动态数组包括2个成员,其中,第一成员为对应第一动态数组类型的对象实例,第二成员为存储类第三动态数组类型的动态数组;第三动态数组包括3个成员,其中,第一成员为Java Card字节码转换后对应生成的Java字节码的操作码,第二成员为存储Java Card字节码转换后生成的Java字节码对应操作数的动态数组,第三成员为转换后生成的Java字节码和对应操作数占用的字节个数。
在一种可能的实施方式中,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述所述反编译处理方法的步骤。
在一种可能的实施方式中,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述所述反编译处理方法的步骤。
存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
Claims (10)
1.一种反编译处理方法,其特征在于,具体包括以下步骤:
创建三个类对象格式的动态数组,分别为第一动态数组、第二动态数组和第三动态数组;
遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中;
依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理;
其中,所述第一动态数组用于存储Java Card字节码的信息,所述第二动态数组用于存储Java Card字节码的信息,以及转换后生成的对应的Java字节码的信息,所述第三动态数组用于存储转换后生成的Java字节码的信息。
2.如权利要求1所述的一种反编译处理方法,其特征在于:
所述第一动态数组包括4个成员,其中,第一成员为Java Card字节码对应的操作码,第二成员为操作数1,第三成员为操作数2,第四成员为操作数3;
所述第二动态数组包括2个成员,其中,第一成员为对应第一动态数组类型的对象实例,第二成员为存储类第三动态数组类型的动态数组;
所述第三动态数组包括3个成员,其中,第一成员为Java Card字节码转换后对应生成的Java字节码的操作码,第二成员为存储Java Card字节码转换后生成的Java字节码对应操作数的动态数组,第三成员为转换后生成的Java字节码和对应操作数占用的字节个数。
3.如权利要求2所述的一种反编译处理方法,其特征在于,所述遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中,具体步骤包括:
将所有Java Card字节码存储至第一动态数组中,并创建一个类第二动态数组类型的实例对象;
依次取出第一动态数组中存储的Java Card字节码,并将取出的Java Card字节码的信息赋值给创建的第二动态数组类型的实例对象的第一成员;
创建用于存储转换后Java字节码对应操作数的第四临时动态数组;
提取从第一动态数组中取出的Java Card字节码的操作数,并根据语义将该Java Card字节码映射成单个或多个对应的Java字节码;
将映射得到的Java字节码对应操作数存储至第四临时动态数组中,并将第四动态数组的成员和第三动态数组的第二成员进行关联。
4.如权利要求3所述的一种反编译处理方法,其特征在于,所述依次取出第一动态数组中存储的Java Card字节码,具体步骤为:
依次遍历第一动态数组,并取出第一动态数组中遍历得到的Java Card字节码;
将取出的Java Card字节码命名为JCi,其中,JCi表示第一动态数组中的第i个JavaCard字节码,i表示第一动态数组中的索引号。
5.如权利要求3所述的一种反编译处理方法,其特征在于,当根据语义将Java Card字节码映射成单个或多个对应的Java字节码之后,还包括:
将该Java Card字节码存储至创建的实例对象中,同时创建一个类第三动态数组类型的对象,所述对象包含的成员与第三动态数组包含的成员相同;
将映射得到的Java字节码赋值给对象的第一成员,将第四动态数组赋值给赋值给对象的第二成员;
根据对象的第一成员和第二成员,计算得到映射得到的Java字节码和操作数占用的字节空间,同时将映射得到的Java字节码存储至第三动态数组。
6.如权利要求5所述的一种反编译处理方法,其特征在于,所述依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理,具体步骤包括:
依次遍历第二动态数组,获取第二动态数组中的Java Card字节码;
根据当前Java Card字节码的当前地址和目标地址,获取得到第二动态数组中对应的Java字节码;
循环遍历第二动态数组的第二成员中存储的Java字节码,得到第二动态数组的第二成员,并从该成员中获取到转换后的Java字节码个数;
循环遍历获取得到的Java字节码之间的Java字节码,计算得到转换后Java字节码的当前地址和目标地址的相对地址偏移,实现对Java Card字节码的反编译处理。
7.一种反编译处理装置,其特征在于,包括:
创建模块,其用于创建三个类对象格式的动态数组,分别为第一动态数组、第二动态数组和第三动态数组;
遍历模块,其用于遍历每个Java Card字节码,并基于Java Card字节码的操作码和操作数,将Java Card字节码和转换后生成的Java字节码信息,动态填充至第一动态数组、第二动态数组和第三动态数组中;
转换模块,其用于依次读取动态数组中的Java Card字节码,并进行Java Card字节码的链接地址转换映射,实现对Java Card字节码的反编译处理;
其中,所述第一动态数组用于存储Java Card字节码的信息,所述第二动态数组用于存储Java Card字节码的信息,以及转换后生成的对应的Java字节码的信息,所述第三动态数组用于存储转换后生成的Java字节码的信息。
8.如权利要求7所述的一种反编译处理装置,其特征在于:
所述第一动态数组包括4个成员,其中,第一成员为Java Card字节码对应的操作码,第二成员为操作数1,第三成员为操作数2,第四成员为操作数3;
所述第二动态数组包括2个成员,其中,第一成员为对应第一动态数组类型的对象实例,第二成员为存储类第三动态数组类型的动态数组;
所述第三动态数组包括3个成员,其中,第一成员为Java Card字节码转换后对应生成的Java字节码的操作码,第二成员为存储Java Card字节码转换后生成的Java字节码对应操作数的动态数组,第三成员为转换后生成的Java字节码和对应操作数占用的字节个数。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述反编译处理方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述反编译处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310088932.5A CN115964053A (zh) | 2023-01-17 | 2023-01-17 | 一种反编译处理方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310088932.5A CN115964053A (zh) | 2023-01-17 | 2023-01-17 | 一种反编译处理方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115964053A true CN115964053A (zh) | 2023-04-14 |
Family
ID=87361912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310088932.5A Pending CN115964053A (zh) | 2023-01-17 | 2023-01-17 | 一种反编译处理方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115964053A (zh) |
-
2023
- 2023-01-17 CN CN202310088932.5A patent/CN115964053A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096338B (zh) | 智能合约执行方法、装置、设备及介质 | |
CN110297689B (zh) | 智能合约执行方法、装置、设备及介质 | |
CN110249307A (zh) | 用于在区块链上执行原生合约的系统和方法 | |
CN110032392B (zh) | 服务治理方法及装置、存储介质和电子设备 | |
CN112256275B (zh) | 代码混淆方法、装置、电子设备及介质 | |
CN104346146A (zh) | 一种跨平台转换应用代码的方法及装置 | |
CN111143446A (zh) | 数据对象的数据结构转换处理方法、装置及电子设备 | |
US20190138438A1 (en) | Conditional stack frame allocation | |
CN109739524A (zh) | 一种软件安装包的生成方法、装置、电子设备及存储介质 | |
CN113434147B (zh) | 基于ProtoBuf协议的消息解析方法及装置 | |
CN107943651B (zh) | 信息获取方法、介质、装置和计算设备 | |
CN109408191A (zh) | 页面更新方法、装置、设备及存储介质 | |
CN113391811B (zh) | 函数编译方法、装置、电子设备及计算机可读存储介质 | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及系统 | |
CN115964053A (zh) | 一种反编译处理方法、装置、电子设备和存储介质 | |
US10375206B1 (en) | Entity-component architecture with components having multiple configurations | |
US8645758B2 (en) | Determining page faulting behavior of a memory operation | |
CN113377376A (zh) | 数据包生成方法、数据包生成装置、电子设备及存储介质 | |
CN109558375B (zh) | 一种优化的文件存储方法、存储介质、设备及系统 | |
CN113391813A (zh) | 程序编译方法和装置、存储介质及电子设备 | |
CN114764562A (zh) | 一种文本处理方法、装置、电子设备和存储介质 | |
CN116931934A (zh) | 着色器代码的转换方法、装置、设备及存储介质 | |
CN117555609A (zh) | 注解国际化方法、装置、存储介质及电子设备 | |
CN115934123A (zh) | 一种客户端逻辑更新方法、装置、电子设备及存储介质 | |
CN113760348A (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 |