源代码混淆方法和装置制造方法及图纸

技术编号:32138059 阅读:36 留言:0更新日期:2022-02-08 14:30
本说明书实施例公开了一种源代码混淆方法、装置、电子设备以及计算机可读存储介质。该方法包括:获取源代码中待混淆函数包含的调用函数的函数名;根据调用函数的函数名,将待混淆函数中调用调用函数的调用语句,替换为函数指针,以得到替换后的待混淆函数;根据占位符与调用函数的对应关系,对替换后的待混淆函数进行混淆处理,以得到目标函数;其中,函数指针包括待混淆函数的函数名、预设头部字节计算函数以及预先设置的对应于调用函数的占位符;预设头部字节计算函数用于计算在目标函数运行时的目标函数的预设数量的头部字节,以对函数指针进行解码。指针进行解码。指针进行解码。

【技术实现步骤摘要】
源代码混淆方法和装置


[0001]本说明书实施例涉及计算机
,尤其涉及代码的混淆方法、装置、电子设备和计算机可读存储介质。

技术介绍

[0002]C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。通过C语言编写的代码经过编译后会转化成可执行的二进制文件,以在操作系统上运行。而通过一些反编译工具,例如,交互式反汇编器专业版(Interactive Disassembler Professional,IDA Pro)软件等,可以反编译出二进制文件中原函数的实现逻辑等,从而使这些本应该安全度更高的底层代码也能够被破解。
[0003]为避免底层代码被破解,目前采用的主流代码混淆方法为:基于控制流扁平化的方法。该方法将源代码结构改变,即,改变源代码的整体的逻辑执行顺序。该方法虽然能有效增加逆向破解难度,但是使用该方法混淆后的源代码的代码体积会大幅增大,导致运行时占用内存过大,运行效率降低。

技术实现思路

[0004]本说明书实施例提供一种源代码混淆方法、装置、电子设备以及计算机可读存储介质,以解决现有技术本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种源代码混淆方法,其特征在于,包括:获取源代码中待混淆函数包含的调用函数的函数名;根据所述调用函数的函数名,将所述待混淆函数中调用所述调用函数的调用语句,替换为函数指针,以得到替换后的待混淆函数;所述函数指针包括所述待混淆函数的函数名、预设头部字节计算函数以及预先设置的对应于所述调用函数的占位符;根据所述占位符与所述调用函数的对应关系,对所述替换后的待混淆函数进行混淆处理,以得到目标函数;其中,所述预设头部字节计算函数用于计算在所述目标函数运行时的所述目标函数的预设数量的头部字节,以对所述函数指针进行解码。2.如权利要求1所述的方法,其特征在于,根据所述调用函数的函数名、将所述待混淆函数中调用所述调用函数的调用语句,替换为函数指针,以得到替换后的待混淆函数,包括:根据所述预设头部字节计算函数、所述预先设置的对应于所述调用函数的占位符以及所述待混淆函数的函数名,生成函数指针;根据所述函数指针和所述调用函数对应的索引值,生成函数指针数组;所述索引值用于指示所述函数指针数组中与所述调用函数对应的函数指针;根据所述函数指针数组和所述调用函数的函数名,将所述待混淆函数中调用所述调用函数的调用语句,替换为所述函数指针,以得到替换后的待混淆函数。3.如权利要求1所述的方法,其特征在于,根据所述占位符与所述调用函数的对应关系,对所述替换后的待混淆函数进行混淆处理,以得到目标函数,包括:将包含所述替换后的待混淆函数的源代码编译成可执行文件;确定所述可执行文件中所述调用函数的入口地址与所述可执行文件中所述待混淆函数的入口地址之间的地址偏移量;根据所述占位符与所述调用函数的对应关系,将所述占位符替换为所述地址偏移量与所述可执行文件中所述待混淆函数的预设数量的头部字节的差,以得到所述目标函数。4.一种基于权利要求3所述的源代码混淆方法的源代码监控方法,其特征在于,所述源代码监控方法包括:在所述目标函数运行时执行:通过所述预设头部字节计算函数计算所述目标函数的预设数量的头部字节,以得到计算结果;根据所述待混淆函数的函数名,确定所述可执行文件中所述目标函数的入口地址;计算确定出的所述目标函数的入口地址、所述计算结果以及所述差三者之间的和,以得到解码后的所述目标函数中的函数指针;根据解码后的函数指针是否指向所述目标函数中的所述调用函数,判断所述目标函数是否被非法篡改。5.如权利要求4所述的方法,其特征在于,所述根据解码后的函数指针是否指向所述调...

【专利技术属性】
技术研发人员:阚志刚程显龙李强林凯陈彪卢佐华
申请(专利权)人:北京梆梆安全科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1