CN116956245A - 一种基于控制流平坦化混淆的软件水印实现方法及系统 - Google Patents

一种基于控制流平坦化混淆的软件水印实现方法及系统 Download PDF

Info

Publication number
CN116956245A
CN116956245A CN202311203917.7A CN202311203917A CN116956245A CN 116956245 A CN116956245 A CN 116956245A CN 202311203917 A CN202311203917 A CN 202311203917A CN 116956245 A CN116956245 A CN 116956245A
Authority
CN
China
Prior art keywords
watermark
control flow
software
confusion
code
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
Application number
CN202311203917.7A
Other languages
English (en)
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.)
Anhui University
Original Assignee
Anhui University
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 Anhui University filed Critical Anhui University
Priority to CN202311203917.7A priority Critical patent/CN116956245A/zh
Publication of CN116956245A publication Critical patent/CN116956245A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

本发明涉及一种基于控制流平坦化混淆的软件水印实现方法及系统,该方法包括:处理待混淆和嵌入水印的源程序,获取基本块和控制流图,通过所述控制流图,选定奇数序列,计算所述奇数序列的迭代步长;通过所述迭代步长,获取软件水印特征,选取所述基本块中的混淆代码块,构建构造控制流平坦化代码混淆模型,以软件水印特征为指导,基于所述控制流平坦化代码混淆模型,获取嵌入软件水印的二进制代码文件;对所述二进制代码文件进行分析,获取分析结果。本发明以权重序列软件水印替换控制流平坦化混淆的switch‑case顺序分支,重新布局混淆,并未产生新的开销,提高了水印的隐蔽性和鲁棒性。

Description

一种基于控制流平坦化混淆的软件水印实现方法及系统
技术领域
本发明涉及软件保护技术领域,特别是涉及一种基于控制流平坦化混淆的软件水印实现方法及系统。
背景技术
随着移动互联网的发展,各种盗版软件层出不穷,软件保护技术日益重要。软件保护的重要技术有代码混淆技术、软件水印技术等。代码混淆技术用于提高逆向分析的难度,软件水印技术用于在未经授权的情况下检测和追踪代码的来源。控制流平坦化混淆是一种典型的控制流混淆方法。
程序的控制流一般都是可规约的,可以通过控制流分析进行语义理解与程序代码反编译。近年来,随着程序控制流技术的发展,逆向分析技术日益成熟,大大加剧了核心算法被破解的威胁。
传统的控制流平坦化技术主要是实现主分发块和子分发块的调度,将线性递增的整数值作为基本块的编号,较易逆向分析。传统的嵌入式水印算法,多通过构造新特征作为水印信息,开销较大,隐蔽性和鲁棒性较差。
发明内容
本发明的目的是提供了一种基于控制流平坦化混淆的软件水印实现方法及系统,以权重序列软件水印替换控制流平坦化混淆的switch-case顺序分支,重新布局混淆,并未产生新的开销,提高了水印的隐蔽性和鲁棒性。
为实现上述目的,本发明提供了如下方案:
一种基于控制流平坦化混淆的软件水印实现方法,包括:
处理待混淆和嵌入水印的源程序,获取基本块和控制流图,通过所述控制流图,选定奇数序列,计算所述奇数序列的迭代步长;
通过所述迭代步长,获取软件水印特征,选取所述基本块中的混淆代码块,构建控制流平坦化代码混淆模型,以软件水印特征为指导,基于所述控制流平坦化代码混淆模型,获取嵌入软件水印的二进制代码文件。
可选地,通过所述控制流图,选定奇数序列包括:
通过所述控制流图,获取基本块的数量信息,基于所述基本块的数量信息,选定所述奇数序列。
可选地,通过所述迭代步长,获取软件水印特征包括:
以所述迭代步长作为权重,对自然分支布局序列进行排序,形成水印分支布局序列,作为所述软件水印特征。
可选地,构建所述控制流平坦化代码混淆模型包括:
选取所述混淆代码块,对所述混淆代码块进行分割,选取基本块中无条件的基本块,将所述无条件的基本块作为入口基本块;
对分割后的所述混淆代码块以及入口块进行初始化调度,构建所述控制流平坦化代码混淆模型。
可选地,对分割后的所述混淆代码块以及入口块进行初始化调度包括:
构建分发基本块,建立入口基本块到分发基本块的绝对跳转,构建返回基本块,建立返回基本块到分发基本块的绝对跳转,去除入口基本块的末尾跳转,添加到分发基本块的绝对跳跃,构建调度变量,通过调度变量记录各个基本块的跳转情况,并在所述分发基本块中插入switch指令实现分发功能。
可选地,获取所述嵌入软件水印的二进制代码文件包括:
通过所述控制流平坦化代码混淆模型,将所述软件水印特征中的基本块编号进行重新布局,修改所述软件水印特征中的基本块间的跳转关系,嵌入软件水印,获取所述嵌入软件水印的二进制代码文件。
可选地,该方法还包括:
提取所述二进制代码文件的分支布局,对所述二进制代码文件的分支布局与所述软件水印的分支布局进行对比,若所述分支布局与所述软件水印的分支布局一致,则表明成功提取软件水印,若所述分支布局与所述软件水印的分支布局不一致,则表明未能成功提取软件水印,结合其它软件保护技术进行辅助取证。
为实现上述目的,本发明还提供了一种基于控制流平坦化混淆的软件水印实现系统,包括:
预处理模块,用于处理待混淆和嵌入水印的源程序,获取基本块和控制流图;
水印构造模块,用于通过所述控制流图,选定奇数序列,计算所述奇数序列的迭代步长,通过所述迭代步长,获取软件水印特征;
水印嵌入模块,用于选取所述基本块中的混淆代码块,构建控制流平坦化代码混淆模型,以软件水印特征为指导,基于所述控制流平坦化代码混淆模型,获取嵌入软件水印的二进制代码文件;
分析模块,用于对所述二进制代码文件进行分析,获取分析结果;
所述预处理模块、所述水印构造模块、所述水印嵌入模块和所述分析模块依次连接。
本发明的有益效果为:
本发明提供一种基于控制流平坦化混淆的软件水印实现方法,通过结合控制流平坦化和静态软件水印两种软件保护技术,提高软件保护强度。
本发明在嵌入软件水印的同时以水印分支布局序列为目标,提高了逆向分析的难度。
本发明基于奇数序列的Collatz迭代步长序列所形成的权重序列中的元素是唯一且确定的,利用该特性构造软件水印序列,能唯一标识软件版权。
本发明以权重序列软件水印替换控制流平坦化混淆的switch-case顺序分支,重新布局混淆,并未产生新的开销,提高了水印的隐蔽性和鲁棒性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的一种基于控制流平坦化混淆的软件水印实现方法流程图;
图2为本发明实施例的一种基于控制流平坦化混淆的软件水印实现系统示意图;
图3为本发明实施例的一种构造基本的控制流平坦化代码混淆器的具体实施流程图;
图4为本发明实施例的一种嵌入奇数序列的Collatz迭代步长所构造的水印分支布局序列的具体流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
Collatz函数,这一函数的描述是:函数的输入为一个任意整数;若输入是偶数,则输出等于输入除以2;否则,输出等于输入乘以3后再加1。
Collatz Conjecture,又名“3x+1”猜想,这一猜想描述是:对于任意一个大于1的整数,对其反复进行Collatz函数的计算,则该过程一定会在某一步骤中使得计算所得的整数数值等于1。
如图1所示,本发明提供一种基于控制流平坦化混淆的软件水印实现方法,包括以下步骤:
S1、源程序预处理,处理待混淆和嵌入水印的源程序,即通过编译工具获取源程序的中间表示形式;
S2、软件水印构造,利用奇数序列的Collatz迭代步长序列作为权重,对自然分支布局序列进行排序,形成水印分支布局序列,作为软件水印特征W;
S3、水印嵌入,在控制流平坦化混淆的基础上嵌入软件水印W;
S4、水印识别器,用于分析二进制代码文件的控制流图,识别水印。
进一步地,在具体实施时,在本发明实施例提供的上述软件水印实现方法中,源程序预处理,包括:
S1.1、处理源程序获取控制流图作为控制流平坦化过程的输入;
S1.2、使用编译器处理源程序获得基本块,此基本块是控制流图的结点。
进一步地,在具体实施时,在本发明实施例提供的上述软件水印实现方法中,软件水印构造,包括:
S2.1、以源程序基本块数量信息选定奇数序列,即通过控制流图,获取基本块的数量信息,基于基本块的数量信息,选定奇数序列;
S2.2、依据Collatz Conjecture计算奇数序列迭代步长;
S2.3、以迭代步长的序列作为权重,对自然分支布局序列进行排序,形成水印分支布局序列,作为软件水印特征W。
其中,自然分支布局序列即为0,1,2,3,4,5,…,通过按照权重排序,从而达到自然分支布局序列的随机化,然后按照这个随机序列布局控制流平坦化的case分支,就嵌入了水印。
下面以一个具体实例对本发明实施例提供的上述软件水印构造进行说明:
不失一般性:假定源程序的控制流图中的自然分支布局序列为1,2,3,4,5,6,选择奇数序列:3,5,7,9,11,13,以对应的Collatz Conjecture迭代步长8,6,17,20,15,10作为权重序列,以权重序列对1,2,3,4,5,6排序,获得水印分支布局序列W:2,1,6,5,3,4。
进一步地,在具体实施时,在本发明实施例提供的上述软件水印实现方法中,水印嵌入可以包括:
S3.1、选取混淆代码块;
具体的,为减小控制流平坦化混淆所产生的开销,只选取关键函数进行混淆和嵌入软件水印W;
S3.2、构造基本的控制流平坦化代码混淆器,如图3所示,具体方式为:
S3.2.1、获取关键函数的全部基本块(混淆代码块)并分割保存;
S3.2.2、选取无条件的基本块(没有跳转指令的基本块)作为头基本块,即函数的入口块,此所选择的无条件的基本块放置调度代码,负责case分支的选择;
S3.2.3、初始化调度结构,即总体上得到了一个swith case框架,每次通过赋值调度变量进行分支执行的选择,因此无需明确分支跳转,只需把调度变量安排好即可实现跳转,具体方式为:
S3.2.3.1、创建用于调度基本块的执行顺序的分发块并建立入口块到分发块的绝对跳转;
S3.2.3.2、创建基本块执行结束后跳转回的返回块,返回块直接跳转到分发块;
S3.2.3.3、去除头基本块的末尾的跳转,添加跳转到分发块的指令。
S3.2.3.4、创建并初始化分发块的调度变量SwitchCon,用以记录基本块的跳转的执行状态,在调度块(分发块)中插入switch指令实现分发功能;
具体的,调度变量SwitchCon的初始值可以为随机值,一般为程序执行的第一个基本块的编号;
S3.2.4、按照自然分支布局序列为基本块分配编号;
S3.2.5、实现基本块跳转间接化;
具体的,下面以一个具体实例对本发明实施例提供的上述控制流平坦化代码混淆器进行说明;
下面代码是以一个简单的C代码为例,说明进行控制流平坦化混淆和嵌入水印的控制流平坦化混淆的过程:
#include<iostream>
using namespace std;
int main()
{
int x, y;
x = 5;
y = 7;
while (x<20)
{
y = x + y;
if(y>20)
y --;
x ++;
}
cout<<y;
return 0;
}
该程序可以按照以下方式进行控制流平坦化:下面代码为常规控制流平坦化的过程的模拟表示,默认情况下,它的调度变量以及代码组织是按照自然分支布局序列{1,2,3,4, 5,6}进行组织。
#include<iostream>
using namespace std;
int main()
{
int x, y;
int swCon = 1;//调度变量
for ( ;;){
switch(swCon){
case 1: x = 5, y = 7; swCon = 2;break;
case 2: if(!(x<20) ) swCon = 6; else swCon = 3; break;
case 3: y = x + y; if(!(y>20)) swCon = 5; else swCon = 4; break;
case 4: y --; swCon = 5; break;
case 5: x ++; swCon = 2; break;
case 6: cout<<y; return 0;
default: break;
}
}
}
此时,源程序已经被压扁为一维的switch-case结构。
通过switch-case语句的底层执行原理为根据整数索引值进行多重分支选择,底层采用的数据结构为跳转表。跳转表是一个数组,表项i对应代码段的地址,当switch索引值等于表项i时采取对应的程序操作。传统的控制流平坦化中基本块的编号采取线性递增编号,混淆后的switch控制块结构经逆向分析可以清晰逆推出执行路径。
S3.3、基于基本的控制流平坦化代码混淆器嵌入软件水印W,重新实现基本块跳转间接化,如图4所示;
具体的,下面以一个具体实例对本发明提供的上述嵌入软件水印W,重新实现基本块跳转间接化进行说明;
以软件水印构造实例水印分支布局序列W作为水印特征;
在S3.2控制流平坦化混淆器基础上进行重新布局,将原来的基本块编号1,2,3,4,5,6修改为2,1,6,5,4,3;
修改基本块间跳转关系,嵌入软件水印W={2,1,6,5,3,4};
下面代码为嵌入水印后的模拟表示,可见,这个代码嵌入了水印{2,1,6,5,3,4},它的cae分支以及代码组织是按照重新布局进行组织。
#include<iostream>
using namespace std;
int main()
{
int x, y;
int swCon = 2;//调度变量
for ( ;;){
switch(swCon){
case 2: x = 5, y = 7; swCon = 1;break;
case 1: if(!(x<20) ) swCon = 4; else swCon = 6; break;
case 6: y = x + y; if(!(y>20)) swCon = 3; else swCon = 5; break;
case 5: y --; swCon = 3; break;
case 3: x ++; swCon = 1; break;
case 4: cout<<y; return 0;
default: break;
}
}
}
进一步地,在具体实施时,在本发明实施例提供的上述软件水印实现方法中,水印识别器包括:
S4.1、以步骤S3中嵌入软件水印W的二进制代码文件为输入;
具体的,一般为PE或者ELF格式的可执行文件;
S4.2、通过反汇编工具,比如IDA或者其它工具,获取二进制代码文件的控制流图,分析二进制代码文件的控制流图;
S4.3、提取分支布局W’;
S4.4、对比S3中嵌入的软件水印分支布局序列W和S43中分支布局序列W’;
S4.5、输出水印对比结果,若W和W’一致,则表明成功提取软件水印W,即成功嵌入软件水印W;若W和W’不一致,则表明未能成功提取软件水印,结合其它软件保护技术进行辅助取证。
如图2所示,本发明还公开了一种基于控制流平坦化混淆的软件水印实现系统,包括:
预处理模块,用于处理待混淆和嵌入水印的源程序,获取基本块和控制流图;
水印构造模块,用于通过控制流图,选定奇数序列,计算奇数序列的迭代步长,通过迭代步长,获取软件水印特征;
水印嵌入模块,用于选取基本块中的混淆代码块,构建控制流平坦化代码混淆模型,以软件水印特征为指导,基于控制流平坦化代码混淆模型,获取嵌入软件水印的二进制代码文件;
分析模块,用于对二进制代码文件进行分析,获取分析结果;
预处理模块、水印构造模块、水印嵌入模块和分析模块依次连接。
以上所述的实施例仅是对本发明优选方式进行的描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。

Claims (8)

1.一种基于控制流平坦化混淆的软件水印实现方法,其特征在于,包括:
处理待混淆和嵌入水印的源程序,获取基本块和控制流图,通过所述控制流图,选定奇数序列,计算所述奇数序列的迭代步长;
通过所述迭代步长,获取软件水印特征,选取所述基本块中的混淆代码块,构建控制流平坦化代码混淆模型,以软件水印特征为指导,基于所述控制流平坦化代码混淆模型,获取嵌入软件水印的二进制代码文件。
2.根据权利要求1所述的基于控制流平坦化混淆的软件水印实现方法,其特征在于,通过所述控制流图,选定奇数序列包括:
通过所述控制流图,获取基本块的数量信息,基于所述基本块的数量信息,选定所述奇数序列。
3.根据权利要求1所述的基于控制流平坦化混淆的软件水印实现方法,其特征在于,通过所述迭代步长,获取软件水印特征包括:
以所述迭代步长作为权重,对自然分支布局序列进行排序,形成水印分支布局序列,作为所述软件水印特征。
4.根据权利要求1所述的基于控制流平坦化混淆的软件水印实现方法,其特征在于,构建所述控制流平坦化代码混淆模型包括:
选取所述混淆代码块,对所述混淆代码块进行分割,选取基本块中无条件的基本块,将所述无条件的基本块作为入口基本块;
对分割后的所述混淆代码块以及入口块进行初始化调度,构建所述控制流平坦化代码混淆模型。
5.根据权利要求4所述的基于控制流平坦化混淆的软件水印实现方法,其特征在于,对分割后的所述混淆代码块以及入口块进行初始化调度包括:
构建分发基本块,建立入口基本块到分发基本块的绝对跳转,构建返回基本块,建立返回基本块到分发基本块的绝对跳转,去除入口基本块的末尾跳转,添加到分发基本块的绝对跳跃,构建调度变量,通过调度变量记录各个基本块的跳转情况,并在所述分发基本块中插入switch指令实现分发功能。
6.根据权利要求4所述的基于控制流平坦化混淆的软件水印实现方法,其特征在于,获取所述嵌入软件水印的二进制代码文件包括:
通过所述控制流平坦化代码混淆模型,将所述软件水印特征中的基本块编号进行重新布局,修改所述软件水印特征中的基本块间的跳转关系,嵌入软件水印,获取所述嵌入软件水印的二进制代码文件。
7.根据权利要求1所述的基于控制流平坦化混淆的软件水印实现方法,其特征在于,该方法还包括:
提取所述二进制代码文件的分支布局,对所述二进制代码文件的分支布局与所述软件水印的分支布局进行对比,若所述分支布局与所述软件水印的分支布局一致,则表明成功提取软件水印,若所述分支布局与所述软件水印的分支布局不一致,则表明未能成功提取软件水印,结合其它软件保护技术进行辅助取证。
8.一种基于控制流平坦化混淆的软件水印实现系统,其特征在于,包括:
预处理模块,用于处理待混淆和嵌入水印的源程序,获取基本块和控制流图;
水印构造模块,用于通过所述控制流图,选定奇数序列,计算所述奇数序列的迭代步长,通过所述迭代步长,获取软件水印特征;
水印嵌入模块,用于选取所述基本块中的混淆代码块,构建控制流平坦化代码混淆模型,以软件水印特征为指导,基于所述控制流平坦化代码混淆模型,获取嵌入软件水印的二进制代码文件;
分析模块,用于对所述二进制代码文件进行分析,获取分析结果;
所述预处理模块、所述水印构造模块、所述水印嵌入模块和所述分析模块依次连接。
CN202311203917.7A 2023-09-19 2023-09-19 一种基于控制流平坦化混淆的软件水印实现方法及系统 Pending CN116956245A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311203917.7A CN116956245A (zh) 2023-09-19 2023-09-19 一种基于控制流平坦化混淆的软件水印实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311203917.7A CN116956245A (zh) 2023-09-19 2023-09-19 一种基于控制流平坦化混淆的软件水印实现方法及系统

Publications (1)

Publication Number Publication Date
CN116956245A true CN116956245A (zh) 2023-10-27

Family

ID=88454869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311203917.7A Pending CN116956245A (zh) 2023-09-19 2023-09-19 一种基于控制流平坦化混淆的软件水印实现方法及系统

Country Status (1)

Country Link
CN (1) CN116956245A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112115427A (zh) * 2020-08-14 2020-12-22 咪咕文化科技有限公司 代码混淆方法、装置、电子设备及存储介质
CN113031930A (zh) * 2019-12-24 2021-06-25 武汉斗鱼鱼乐网络科技有限公司 一种控制流平坦化的源代码混淆生成方法及装置
CN113254068A (zh) * 2021-07-14 2021-08-13 苏州浪潮智能科技有限公司 一种控制流平坦化自动检测方法、装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113031930A (zh) * 2019-12-24 2021-06-25 武汉斗鱼鱼乐网络科技有限公司 一种控制流平坦化的源代码混淆生成方法及装置
CN112115427A (zh) * 2020-08-14 2020-12-22 咪咕文化科技有限公司 代码混淆方法、装置、电子设备及存储介质
CN113254068A (zh) * 2021-07-14 2021-08-13 苏州浪潮智能科技有限公司 一种控制流平坦化自动检测方法、装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
徐国胜 等: "《软件安全》", 北京邮电大学出版社, pages: 325 - 327 *

Similar Documents

Publication Publication Date Title
CN101084478B (zh) 为计算机程序代码加水印
KR20110095049A (ko) 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법
KR101893034B1 (ko) 절차 텍스처를 편집, 최적화 및 렌더링하는 시스템 및 방법
CN106462677A (zh) 优化和保护软件
JP2002514333A (ja) ソフトウェアセキュリティを増強するための混乱化技術
CN112115427B (zh) 代码混淆方法、装置、电子设备及存储介质
CN100555300C (zh) 程序变换装置、安全处理装置、计算机程序及记录媒体
CN111444513B (zh) 一种电网嵌入式终端的固件编译优化选项识别方法及装置
CN105718765A (zh) 一种利用有限自动机实现代码混淆的方法
JP2021515314A (ja) コンパイルデバイス及び方法
Tsai et al. A graph approach to quantitative analysis of control-flow obfuscating transformations
US9607133B1 (en) Method and apparatus for watermarking binary computer code
CN116956245A (zh) 一种基于控制流平坦化混淆的软件水印实现方法及系统
CN110147238B (zh) 一种程序编译方法、装置及系统
CN110032838B (zh) 一种脚本文件加固方法、装置及设备
Bertholon et al. Shadobf: A c-source obfuscator based on multi-objective optimisation algorithms
CN111143787B (zh) 提高Java软件破解难度的方法及装置、验证方法及验证装置
CN116561717A (zh) 一种基于计算聚合联合混淆的Python扁平化控制流混淆方法
CN107247906B (zh) 一种用于数据的加密方法及装置
CN104200139B (zh) 一种Java软件水印虚方法中指令代码的生成方法
CN114357389B (zh) 一种基于llvm的指令加花混淆方法及装置
CN105095698A (zh) 基于最近执行的程序代码的程序代码模糊处理
CN110738384A (zh) 事件序列的校验方法及系统
US11783013B2 (en) Protected processing of operations
CN114662063B (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