System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本说明书涉及计算机,尤其涉及一种代码加固方法、装置、设备及可读存储介质。
技术介绍
1、为了防止攻击者通过逆向工程的方式非法获取源代码,可以采用代码加固的方法,将程序的源代码进行转换,增加程序的源代码的复杂度,使其在不改变程序功能的前提下变得难以理解、分析和逆向工程,从而避免应用程序被盗版、攻击或者恶意修改。
2、目前,通常采用无意义的随机字符串替代源代码的变量名、函数名、类名等元素的方式,对源代码进行混淆,以实现代码的加固。
3、但是,上述方案中,随机字符串通常缺乏语义,且不符合编程习惯,导致加固后的代码仿真人为混淆的效果比较差,有经验的攻击者能够相对容易地识别出不具备实际功能的代码段,从而降低代码加固的效果。
技术实现思路
1、本说明书提供一种代码加固方法、装置、设备及可读存储介质,以部分的解决现有技术存在的上述问题。
2、本说明书采用下述技术方案:
3、本说明书提供了一种代码加固方法,包括:
4、预先在客户端注入动态库,并通过所述动态库获取所述客户端接收到的安装响应;
5、接收所述动态库获取后发送的安装响应,并从所述安装响应中提取各安装包获取地址;
6、根据所述各安装包获取地址,获取各应用安装包,并从所述各应用安装包中提取各应用的可执行文件;
7、从所述各应用的可执行文件中提取各代码命名,并将所述各代码命名存储到数据库;
8、响应于代码加固请求,获取待加固的应用代码,并
9、可选地,所述通过所述动态库获取所述客户端接收到的安装响应,具体包括:
10、向所述客户端发送安装包获取信号,使得所述客户端响应于安装包获取信号,生成安装包获取请求,并将所述安装包获取请求发送给后台服务器;
11、当所述后台服务器响应于所述安装包获取请求,向所述客户端发送安装响应时,通过所述动态库获取所述安装响应。
12、可选地,所述根据所述各安装包获取地址,获取各应用安装包,具体包括:
13、将所述各安装包获取地址分发给各子服务器;
14、接收所述各子服务器分别返回的各应用安装包,其中,所述各应用安装包是由所述各子服务器根据接收到各安装包获取地址分别获取的。
15、可选地,所述从所述各应用安装包中提取各应用的可执行文件,具体包括:
16、对所述各应用安装包分别进行重签名,并将重签名后的各应用安装包发送给所述客户端,以使所述客户端根据所述重签名后的各应用安装包安装各应用;
17、向所述客户端发送脱壳指令,并接收所述客户端返回的各应用的可执行文件,其中,所述各应用的可执行文件是由所述客户端响应于所述脱壳指令,对安装在所述客户端的各应用进行砸壳处理得到的。
18、可选地,所述从所述各应用的可执行文件中提取各代码命名,并将所述各代码命名存储到数据库,具体包括:
19、确定所述各应用对应的各应用类型;
20、从所述应用类型对应的各应用的可执行文件中提取各命名类型的各代码命名,所述命名类型至少包括类名、方法名、协议名;
21、根据从所述应用类型对应的各应用的可执行文件中提取各命名类型的各代码命名,构建所述应用类型、所述各命名类型和所述各代码命名之间的对应关系,并在数据库中存储各代码命名以及所述对应关系。
22、可选地,所述根据所述数据库存储的各代码命名对所述待加固的应用代码进行加固处理,得到加固后的应用代码,具体包括:
23、确定所述待加固的应用代码中各待加固代码命名分别对应的命名类型,所述待加固代码命名包括类名、方法名、协议名;
24、针对每个待加固代码命名,根据该待加固代码命名和所述对应关系,从所述数据库存储的各代码命名中查找与该待加固代码命名的命名类型匹配的代码命名,作为该待加固代码命名对应的各第一目标代码命名;
25、根据所述各待加固代码命名对应的各第一目标代码命名,对所述待加固的应用代码进行加固处理,得到加固后的代码。
26、可选地,所述根据所述各待加固代码命名对应的各第一目标代码命名,对所述待加固的应用代码进行加固处理,得到加固后的代码,具体包括:
27、确定所述待加固的应用代码对应的目标应用类型;
28、针对每个待加固代码命名,根据所述对应关系,确定该待加固代码命名对应的各第一目标代码命名分别对应的应用类型;
29、将该待加固代码命名对应的各第一目标代码命名分别对应的应用类型,与所述目标应用类型进行匹配,从该待加固代码命名对应的各第一目标代码命名筛选出该待加固代码命名对应的第二目标代码命名;
30、将所述待加固的应用代码中包含的各待加固代码命名替换为所述各待加固代码命名对应的第二目标代码命名,得到加固后的应用代码。
31、本说明书提供了一种代码加固装置,包括:
32、安装响应获取模块,用于预先在客户端注入动态库,并通过所述动态库获取所述客户端接收到的安装响应;
33、地址获取模块,用于接收所述动态库获取后发送的安装响应,并从所述安装响应中提取各安装包获取地址;
34、可执行文件获取模块,用于根据所述各安装包获取地址,获取各应用安装包,并从所述各应用安装包中提取各应用的可执行文件;
35、代码命名确定模块,用于从所述各应用的可执行文件中提取各代码命名,并将所述各代码命名存储到数据库;
36、加固模块,用于响应于代码加固请求,获取待加固的应用代码,并根据所述数据库存储的各代码命名对所述待加固的应用代码进行加固处理,得到加固后的应用代码。
37、本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述代码加固方法。
38、本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述代码加固方法。
39、本说明书采用的上述至少一个技术方案能够达到以下有益效果:
40、本说明书提供的代码加固方法中,预先通过输入客户端的动态库获取发给客户端的安装响应,从中提取安装包获取地址,并以此获取各应用安装包,以便从中提取各应用的可执行文件,并从各应用的可执行文件中提取各代码命名存储到数据库中,当接收到代码加固请求中,基于数据库存储的各代码命名对待加固的应用代码进行加固处理,得到加固后的应用代码。可见,通过上述方法,以可安装的应用的可执行文件中的代码命名对待加固的应用代码进行加固处理,使得加固后的应用代码中的代码命名仍然具有一定的语义并符合编程习惯,识别难度大,从而提升代码加固的效果和应用代码的安全性。
本文档来自技高网...【技术保护点】
1.一种代码加固方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述通过所述动态库获取所述客户端接收到的安装响应,具体包括:
3.如权利要求1所述的方法,其特征在于,所述根据所述各安装包获取地址,获取各应用安装包,具体包括:
4.如权利要求1所述的方法,其特征在于,所述从所述各应用安装包中提取各应用的可执行文件,具体包括:
5.如权利要求1所述的方法,其特征在于,所述从所述各应用的可执行文件中提取各代码命名,并将所述各代码命名存储到数据库,具体包括:
6.如权利要求5所述的方法,其特征在于,所述根据所述数据库存储的各代码命名对所述待加固的应用代码进行加固处理,得到加固后的应用代码,具体包括:
7.如权利要求6所述的方法,其特征在于,所述根据所述各待加固代码命名对应的各第一目标代码命名,对所述待加固的应用代码进行加固处理,得到加固后的代码,具体包括:
8.一种代码加固装置,其特征在于,包括:
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~7任一项所述的方法。
...【技术特征摘要】
1.一种代码加固方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述通过所述动态库获取所述客户端接收到的安装响应,具体包括:
3.如权利要求1所述的方法,其特征在于,所述根据所述各安装包获取地址,获取各应用安装包,具体包括:
4.如权利要求1所述的方法,其特征在于,所述从所述各应用安装包中提取各应用的可执行文件,具体包括:
5.如权利要求1所述的方法,其特征在于,所述从所述各应用的可执行文件中提取各代码命名,并将所述各代码命名存储到数据库,具体包括:
6.如权利要求5所述的方法,其特征在于,所述根据所述数据库存储的各代码命名对所述待...
【专利技术属性】
技术研发人员:刘春生,
申请(专利权)人:广州三七极耀网络科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。