一种基于有限状态机加固源代码的方法及装置

    公开(公告)号:CN108415709B

    公开(公告)日:2022-01-28

    申请号:CN201810146276.9

    申请日:2018-02-12

    Abstract: 本申请公开了一种基于有限状态机加固源代码的方法及装置,该方法包括:基于应用程序的原始源代码在编译或运行时的跳转逻辑,将应用程序的原始源代码按照跳转逻辑的代码位置,拆分成多个代码块,并为每个代码块设置不同的状态;基于代码块的状态以及代码块中的跳转逻辑,确定代码块跳转状态机,代码块跳转状态机用于表征各个状态之间的跳转关系;将代码块中的跳转逻辑通过代码块跳转状态机实现,以生成应用程序加固后的源代码,使得各个代码块中的跳转逻辑通过代码块跳转状态机实现,从而实现了对各个代码块中的跳转逻辑进行隐藏,有效防止攻击者通过反编汇、反编译和动态调式等操作轻易的破解各个代码块中的跳转逻辑,提高了应用程序的安全性。

    基于不透明谓词和有限状态机加固源代码的方法及装置

    公开(公告)号:CN108416191B

    公开(公告)日:2021-11-19

    申请号:CN201810146259.5

    申请日:2018-02-12

    Abstract: 本申请公开了一种基于不透明谓词和有限状态机加固源代码的方法及装置,该方法包括:定位应用程序的源代码中的第一条件变量;在第一条件变量中添加至少一个不透明谓词,得到第二条件变量;利用第二条件变量替换第一条件变量;基于原始源代码在编译或运行时的跳转逻辑,将原始源代码按照跳转逻辑的代码位置,拆分成多个代码块,并为每个代码块设置不同的状态;基于代码块的状态以及代码块中的跳转逻辑,确定代码块跳转状态机;将代码块中的跳转逻辑通过代码块跳转状态机实现,以生成应用程序加固后的源代码。该技术方案能够达到模糊、混淆源代码中的条件变量的目的,以及各个代码块中的跳转逻辑通过代码块跳转状态机实现,增加源代码的反编译难度。

    一种基于符号执行和单点逻辑的源代码加固方法及装置

    公开(公告)号:CN108446536B

    公开(公告)日:2021-08-13

    申请号:CN201810146277.3

    申请日:2018-02-12

    Abstract: 本申请公开了一种基于符号执行和单点逻辑的源代码加固方法及装置,可以确定待混淆的原始源代码中需要保护的目标变量;在所述原始源代码中插入至少一个中间变量,得到第一源代码;其中,所述至少一个中间变量用于访问所述目标变量;将所述第一源代码中的部分所述目标变量替换为任一所述中间变量,得到加固后的第二源代码;使用不透明谓词对所述第二源代码的函数中的条件变量进行模糊处理,得到加固后的第三源代码。该方法及装置可以提高源代码的防逆向分析能力。

    一种密钥不固定的对称白盒加密方法和装置

    公开(公告)号:CN106411518B

    公开(公告)日:2019-05-07

    申请号:CN201610853364.3

    申请日:2016-09-26

    Abstract: 本申请提供一种密钥不固定的对称白盒加密方法,包括步骤1:使用对称加密方法进行密钥扩展,得到多轮的加密密钥Kn;步骤2:对所述多轮的加密密钥Kn进行置换,得到置换后的密钥Kn′;步骤3:生成白盒库;步骤4:将白盒库和置换后的密钥Kn′传给用户;步骤5:用户利用置换后的密钥Kn′对待加密的数据进行白盒加密,白盒加密时利用白盒库进行查表,得到密文;其中,n表示对称加密方法的加密轮数。本发明不仅实现了白盒加密的密钥隐藏,而且白盒库与密钥相分离,用户可以自己设定密钥,方便灵活。

    一种源代码加固方法及装置

    公开(公告)号:CN108509773B

    公开(公告)日:2022-08-02

    申请号:CN201810147047.9

    申请日:2018-02-12

    Abstract: 本申请公开了一种源代码加固方法及装置,可以获取待加固的目标源代码;确定所述目标源代码中的函数的加固权重;根据所述加固权重从预设的加固算法集合中选取至少一种目标加固算法;采用选取的所述至少一种目标加固算法对所述目标源代码进行加固。由于该方法及装置可以依据待加固的源代码中的函数的加固权重,从预设的加固算法集合中自动选取合适的加固算法对所述源代码进行加固,因此,可以提高源代码的加固效率。

    基于执行顺序和单点逻辑的源代码加固方法及装置

    公开(公告)号:CN108509772B

    公开(公告)日:2022-01-07

    申请号:CN201810146606.4

    申请日:2018-02-12

    Abstract: 本申请公开了一种基于执行顺序和单点逻辑的源代码加固方法及装置,可以基于应用程序的原始源代码在编译或运行时的跳转逻辑,将原始源代码拆分成多个代码块;基于原始源代码在编译或运行时的跳转逻辑,建立表征所述多个代码块的执行顺序的跳转表,跳转表中保存有代码块标记与代码块的地址的对应关系;所述地址为加固后的第二源代码在编译或运行时、代码块在内存中的地址,代码块标记用于访问对应的代码块的地址;将原始源代码的代码块之间的跳转逻辑,通过所述跳转表中的代码块标记实现,以生成加固后的第一源代码;使用不透明谓词对第一源代码的函数中的条件变量进行模糊处理,得到所述加固后的第二源代码。该方法及装置可以提高防逆向分析能力。

    一种基于符号执行的源代码混淆方法及装置

    公开(公告)号:CN108446542B

    公开(公告)日:2021-09-03

    申请号:CN201810147040.7

    申请日:2018-02-12

    Abstract: 本申请公开了一种基于符号执行的源代码混淆方法及装置,可以确定待混淆的源代码中需要保护的目标变量;在源代码中插入至少一个中间变量,所述至少一个中间变量用于访问所述目标变量;将源代码中的部分所述目标变量替换为任一中间变量。由于部分目标变量被替换为中间变量,因此,可以达到模糊、混淆源代码中的目标表变量的目的,并相应的达到模糊、混淆目标变量与内存存储位置之间的对应关系的目的,给攻击者造成内存中原本存储目标变量的存储位置却为存储中间变量的存储位置的假象。由于攻击者感兴趣的变量是需要保护的目标变量而非中间变量,因此可以欺骗攻击者不对通过中间变量间接表示的目标变量进行分析,最终提高源代码的防逆向分析能力。

    非对称白盒密码加密方法和装置及设备

    公开(公告)号:CN106789963B

    公开(公告)日:2020-12-22

    申请号:CN201611101864.8

    申请日:2016-12-02

    Abstract: 本申请公开了一种非对称白盒密码加密方法和装置及设备。该方法包括:接收来自消息发送终端的加密消息、加密流水号;响应于获取消息内容的请求,将对应保存的加密消息和加密流水号发送到认证中心,以便认证中心对消息接收终端的身份进行认证并认证通过后,查找与接收到的加密流水号对应的消息分组方案、加密公钥,按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密;从认证中心接收解密得到的消息内容。本申请在攻击者能够取得对加密数据运行、存储环境的控制时仍能实现信息安全。

    基于顺序、符号执行和单点逻辑的源代码加固方法及装置

    公开(公告)号:CN108460253A

    公开(公告)日:2018-08-28

    申请号:CN201810146260.8

    申请日:2018-02-12

    Abstract: 本申请公开了一种基于顺序、符号执行和单点逻辑的源代码加固方法及装置,可以将所述原始源代码的代码块之间的跳转逻辑,通过所述跳转表中的代码块标记实现,以生成加固后的第一源代码;确定所述第一源代码中需要保护的目标变量;在所述第一源代码中插入至少一个中间变量,并将所述第一源代码中的部分所述目标变量替换为任一所述中间变量,得到加固后的第二源代码;使用不透明谓词对所述第二源代码的函数中的条件变量进行模糊处理,得到所述加固后的第三源代码。该方法及装置可以提高防逆向分析能力。

    基于有限状态机和符号执行的源代码加固方法及装置

    公开(公告)号:CN108446541A

    公开(公告)日:2018-08-24

    申请号:CN201810147039.4

    申请日:2018-02-12

    Abstract: 本申请公开了基于有限状态机和符号执行的源代码加固方法及装置,该方法包括:基于应用程序的原始源代码在编译或运行时的跳转逻辑,将原始源代码按照跳转逻辑的代码位置拆分成多个代码块,并为各代码块设置不同的状态;基于代码块的状态以及代码块中的跳转逻辑,确定代码块跳转状态机,代码块跳转状态机用于表征各个代码块对应的各个状态之间的跳转关系;将代码块中的跳转逻辑通过代码块跳转状态机实现,得到加固后的第一源代码;确定第一源代码中需要保护的目标变量;在第一源代码中插入至少一个中间变量,中间变量用于访问目标变量;将第一源代码中的部分目标变量替换为任一中间变量,得到加固后的第二源代码。可以提高源代码的防逆向分析能力。

Patent Agency Ranking