CN112883343A - 一种程序代码的混淆方法及装置 - Google Patents
一种程序代码的混淆方法及装置 Download PDFInfo
- Publication number
- CN112883343A CN112883343A CN201911198559.9A CN201911198559A CN112883343A CN 112883343 A CN112883343 A CN 112883343A CN 201911198559 A CN201911198559 A CN 201911198559A CN 112883343 A CN112883343 A CN 112883343A
- Authority
- CN
- China
- Prior art keywords
- word
- code
- module
- keyword
- replaced
- 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
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000004044 response Effects 0.000 claims description 25
- 239000000284 extract Substances 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 3
- 238000002360 preparation method Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 230000014509 gene expression Effects 0.000 description 11
- 238000005457 optimization Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000012216 screening Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 125000006850 spacer group Chemical group 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000005316 response function Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000007873 sieving Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及计算机技术领域。本发明提供一种代码的混淆方法及装置,该方法包括:包括显示屏;获取样本字符串;基于分隔符从所述样本字符串中析出代码的语言系统所约定的关键字的关键字集合;将所述关键字集合按照指定的项目名称保存至远端;凭借所述指定的项目名称从所述远端读取所述关键字集合;从所述关键字集合中析出所述关键字;获取第一代码;基于所述关键字,从所述第一代码中析出异于所述关键字的自定义单词;基于所述自定义单词选定待换单词;基于所述关键字、基于所述自定义单词,针对所述各个待换单词生成并记录在所述程序环境中具有唯一性的替换主体单词;基于所述替换主体单词替换所述第一代码中对应的所述待换单词,得到第二代码。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种计算机程序代码的混淆方法及装置。
背景技术
计算机程序代码是智力劳动的成果,若被盗用,有损于拥有者的利益。
特别是一些直接写在网页中的代码,例如JavaScript、VbScript等编程技术,构建时没有特殊处理代码,一旦发布,用户能从网页源文件直接完整地阅读通过此类技术实现的源代码,给代码安全带来隐患。
现有技术中,通常会使用一些混淆函数,例如escape函数,进行处理,增加非授权用户获得代码的难度。还有一些其他混淆工具,例如Proguard、YUI Compressor等,能够实现对变量名的混淆。
现有技术的共同特点是处理代码依赖特定的开发者提供的库函数,当上述库函数出现bug和计算机语言更新时,缺少用户主动修改库函数的途径和方法,同时造成社会资源的浪费。混淆加密代码后,对代码的调试是极其艰难的。
发明内容
有鉴于此,本发明的主要目的在于提供一种混淆代码的方法及装置,为用户处理代码增加一种途径,克服现有混淆工具无法及时更新和修正的技术问题。
为达到上述目的,本发明的技术方案是这样实现的:
一种代码的混淆方法,其特征在于,该方法包括:
包括显示屏;
制备阶段:
获取样本字符串;
基于分隔符从所述样本字符串中析出代码的语言系统所约定的关键字的关键字集合;
将所述关键字集合按照指定的项目名称保存至远端;
实施阶段:
凭借所述指定的项目名称从所述远端读取所述关键字集合;
从所述关键字集合中析出所述关键字;
获取第一代码;
基于所述关键字,从所述第一代码中析出异于所述关键字的自定义单词;
基于所述自定义单词选定待换单词;
基于所述关键字、基于所述自定义单词,针对所述各个待换单词生成并记录在所述程序环境中具有唯一性的替换主体单词;
基于所述替换主体单词替换所述第一代码中对应的所述待换单词,得到第二代码;
输出所述第二代码。
优化的,该方法还包括:
记录所述替换主体单词与相应的所述待换单词及其对应关系并以命名为第一关系名的形式保存所述对应关系;
基于所述第一关系名,获取所述对应关系;
基于所述对应关系,按预定的规则复现所述待换单词与所述替换主体单词。
优化的,该方法还包括:
获取所述第二代码;
基于所述对应关系,基于所述待换单词替换所述第二代码中的所述替换主体单词的方式将所述第二代码生成所述第一代码;
输出所述第二代码生成的所述第一代码 。
优化的,所述基于所述关键字,从所述第一代码中析出异于所述关键字的自定义单词包括:
于所述显示屏上设置一个用于输入单词前缀或单词后缀的命令窗口;
于所述命令窗口中,基于预先设定的规则指定单词前缀或单词后缀;
基于所述关键字,从所述第一代码中析出异于所述关键字的具有所述单词前缀或所述单词后缀的自定义单词。
优化的,所述获取第一代码包括:
检测添加端口命令;
响应于检测到所述添加端口命令,于所述显示屏上添加至少一个的包含呈对应关系的输入端口、输出端口的端口界面区;
将所述第一代码的相应的各个代码段分别以可识别的状态置于相应的所述输入端口;
所述输出所述第二代码包括:
将与所述输入端口中的第一代码的代码段所对应的所述第二代码的代码段输出到与所述输入端口同属于一个所述端口界面区的输出端口中。
与上述的代码的处理方法相应的一种代码的混淆装置,其特征在于,该装置包括:
包括显示屏;
第1模块,用于获取样本字符串;
第2模块,用于基于分隔符从所述样本字符串中析出代码的语言系统所约定的关键字的关键字集合;
第3模块,用于将所述关键字集合按照指定的项目名称保存至远端;
第4模块,用于凭借所述指定的项目名称从所述远端读取所述关键字集合;
第5模块,用于从所述关键字集合中析出所述关键字;
第6模块,用于获取第一代码;
第7模块,用于基于所述关键字,从所述第一代码中析出异于所述关键字的自定义单词;
第8模块,用于基于所述自定义单词选定待换单词;
第9模块,用于基于所述关键字、基于所述自定义单词,针对所述各个待换单词生成并记录在所述程序环境中具有唯一性的替换主体单词;
第10模块,用于基于所述替换主体单词替换所述第一代码中对应的所述待换单词,得到第二代码;
第11模块,用于输出所述第二代码。
优化的,该装置还包括:
第12模块,用于记录所述替换主体单词与相应的所述待换单词及其对应关系并以命名为第一关系名的形式保存所述对应关系;
第13模块,用于基于所述第一关系名,获取所述对应关系;
第14模块,用于基于所述对应关系,按预定的规则复现所述待换单词与所述替换主体单词。
优化的,该装置还包括:
第15模块,用于获取所述第二代码;
第16模块,用于基于所述对应关系,基于所述待换单词替换所述第二代码中的所述替换主体单词的方式将所述第二代码生成所述第一代码;
第17模块,用于输出所述第二代码生成的所述第一代码 。
优化的,所述第7模块包括:
第18模块,用于于所述显示屏上设置一个用于输入单词前缀或单词后缀的命令窗口;
第19模块,用于于所述命令窗口中,基于预先设定的规则指定单词前缀或单词后缀;
第20模块,用于基于所述关键字,从所述第一代码中析出异于所述关键字的具有所述单词前缀或所述单词后缀的自定义单词。
优化的,所述第6模块包括:
第21模块,用于检测添加端口命令;
第22模块,用于响应于检测到所述添加端口命令,于所述显示屏上添加至少一个的包含呈对应关系的输入端口、输出端口的端口界面区;
第23模块,用于将所述第一代码的相应的各个代码段分别以可识别的状态置于相应的所述输入端口。
所述第11模块包括:
第24模块,用于将与所述输入端口中的第一代码的代码段所对应的所述第二代码的代码段输出到与所述输入端口同属于一个所述端口界面区的输出端口中。
针对技术效果,本发明提供一种混淆C、phthon、go、JavaScript、VBScript等语言代码的方法,兼可压缩、调试。采取了可共享的方式处理各种代码,提供一种用户间相互协作处理代码的新方法,提供一种处理代码的新选择,更灵活更有效率的处理代码的手段,增加操作的便捷性,节约人力物力,节约时间,提高效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一的第一界面图;
图2为本发明实施例一的第二界面图;
所述第一界面图,第二界面图是实施例在不同状态下的界面图。
所述第一界面图,是所述实施例一的样本串输入窗口执行了析出关键词的操作后,生成的单词列表中的一个列表项显示其中的单词的上下文的操作后所述实施例一的界面的状态。
所述第二界面图,是所述实施例一的优化方案的样本串输入窗口执行了所述文本框筛选法析出关键词的操作后,相应的系统执行了混淆操作后生成了所述第二代码后所述实施例的界面的状态。
图3为本发明实施例二的所述第7模块的结构图;
图4为本发明实施例二的所述第6模块的结构图;
图5为本发明实施例一的处理方法流程图;
图6为本发明实施例二的处理装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例的应用场景:相应于开发语言的保留的关键字,在网络某些节点上存在,由A整理并经本发明处理,保存在远端。当B需要处理代码的时候,可以按名字的提示读取上述关键字,这样减少了对语言开发者的依赖。同时针对语言的升级会增加一些新的关键字,特别的将上述关键字复现在可编辑的可复制可删除的文本框中,也可及时被C在A的基础上整理成新的关键字集合,方便公众调取使用,提高工作效率。
实施例一、
参考图1,图2,图5本实施例针对的语言是Javascript。针对C、phthon、go、VBScript同样适用。
于系统的显示屏上生成用于操作的界面;
S101、获取样本字符串701;
获取包含处于可识别状态的所述代码的开发语言所保留的关键字的样本字符串701。这些关键字可以位于网络上,或个人在日常工作中积累而来,将这些关键字间隔以分隔符组合成一个样本字符串。样本字符串也可为一段经典的包含关键字的代码。
将所述样本字符串701粘贴到于界面上预先设置的样本串输入端口中,由系统读取。所述样本串输入端口可以为文本框,称为样本文本框700。
S102、基于分隔符从所述样本字符串701中析出代码的开发语言系统所约定的关键字的关键字集合;
以分隔符为标志,使用系统函数或正则表达式从所述样本字符串701可提取上述的关键字,将所得的关键字汇集成一个以字符串数组为载体的集合即为关键字集711。
优选的,获取关键字的方法包括:
设置有样本文本框700;
在所述样本文本框700中输入所述样本字符串701;
再使用文本框筛选法处理所述样本文本框700中的所述样本字符串701,从而得到所述关键字集711;
或优选的方式为,将所得的关键字集711汇集到一个列表702中。该列表项703具有选定自身是否被选定的功能,即具有多选按钮组件713,选定该多选按钮组件713,表征该列表项703选定或未选定。在网页上所述列表702用嵌套div标签实现,实现列表项703的div标签中包含多选按钮组件713,该div标签的文本节点即可装载该列表项703对应的关键字 712。for循环所述关键字集711同时在实现列表702的div标签中添加上述的实现列表项703的div标签即可将所得的关键字集711汇集到一个列表702中。
S103、将所述关键字集合按照指定的项目名称保存至远端;
将所述关键字集合711设定项目名称,将所述关键字集711形成关键字集成字符串即转换成JSON字符串或间隔符间隔的字符串,使用JSON函数或库函数和AJAX方法按照所述项目名称保存至远端的服务器。
优选的,将所述样本文本框700中的经所述文本框筛选法获得的所述关键字集711,辅以分隔符形成字符串或者用json形式保存至远端的数据库中,保存的时候加上项目名称。
或者另一优选方案:在所述列表702中挑选正确的、需要的关键字,辅以分隔符形成字符串,或者用json形式保存。具体为:用户点击多选按钮组件713,标识对应的关键词705为需要保存。当调用保存关键词的函数时,在实现列表702的div标签中搜索多选按钮组件,识别其cheched值为真的多选按钮组件,提取对应的关键词,利用push函数加入的将要发送的字符串数组中,最后将此字符串数组合并为json形式数据或间隔符间隔的字符串即所述关键字字符串。
保存项目的时候,在系统提示的输入端口内输入设定的项目名称,系统提取上述项目名称并将其与上述关键字集成字符串一并从送到远端的服务器中。
在远端服务器上建立一张项目名称表,保存所述设定的项目名称。同时设立一项目内容表,所述项目内容表保存所述关键字集成字符串。所述项目名称表的列表项包含本列表项id,所述项目名称,对应的项目内容即所述关键字集成字符串所在列表项的id。项目内容表的列表项包括本列表项id,本列表项对应的关键字集成字符串的具体字符表达,对应的项目名称表的对应的列表项的id。
S104、凭借指定的所述项目名称从所述远端读取所述关键字集合;
检测从所述远端来读取所述关键字集合的读取指令;
响应于检测到所述读取指令,不同人得到授权后或不用授权,即可按照所述项目名称从所述远端的数据库读取需要的所述关键字集合。所述关键字集合实现方式可以是分隔符间隔的单词形成的字符串,即是所述关键字集成字符串。
具体为:系统包含一个读取项目名称的指令,检测所述读取项目名称的指令,响应于检测到所述读取项目名称的指令,所述服务器根据上述项目名称表,返回全部的项目名称,在客户端,所述返回的项目名称插入到div标签实现的项目名称列表中,供用户选择项目名称。针对所述项目名称列表,拾取期望的项目名称,并针对所述项目名称激发触摸或点击事件,系统响应所述事件凭借AJAX方法从所述远端服务器中读取对应的所述关键字集成字符串至系统的缓存中。
项目名称携带一些表征该项目对应的语言的名字,修改人,更新次数等信息,对于用户,节约时间。
S105、从所述关键字集合中析出所述关键字;
从所述系统的缓存中读取的所述关键字集成字符串,使用正则表达式或JSON函数等库函数分裂出各个关键字,并保存到关键字字符串数组中;
优选的,将所述从远端得到的关键字集,使用正则表达式提取关键字,输出到清空的处于可编辑状态的所述样本文本框700。
S106、获取第一代码801;
将所述第一代码801的相应的各个代码段分别以可识别的状态置于相应的所述输入端口。
在界面上动态或静态方式设置代码输入窗口800,将所述第一代码801的分段或作为一个整体输入的所述代码输入窗口800中。
优选方式,检测添加端口命令。
于所述界面上设置添加端口的命令按钮,触摸或点击所述命令按钮,发送添加端口命令,响应于检测到所述添加端口命令,于所述显示屏上添加至少一个的包含呈对应关系的输入端口、输出端口的端口界面区;在hmtl实现的界面上,所述端口界面区为包含两个文本框的div标签实现并显示,并将所述两个文本框数据关联,一作为输入端口800,另一位输出端口803。按预定规则添加至少一个的包含输入端口800和输出端口803的端口界面区后,将所述第一代码的相应的各个代码段或模块分别以可识别的状态置于相应的所述输入端口800。传统的复制粘贴操作可以完成本步骤。
S107、基于所述关键字,从所述第一代码中析出异于所述关键字的自定义单词;
所述关键字集711可来自远端服务器或从样本文本框700以上面所述得到。
所述关键字集711源自所述远端服务器或所述样本文本框700或所述关键字字符串数组。一种方案是从所述样本文本框700中重新提取关键字集并置入所述关键字字符串数组中,用正则表达式从所述第一代码801提取单词,得到单词字符串数组,在上述单词字符串数组中遍历所述关键字集711中各个关键字,若存在则删除,循环执行所述遍历后所述单词字符串数组中剩余单词即为自定义单词。
自定义单词包括:变量名、函数名、类名、常量名等自定义的单词。在获取所述自定义单词时候,不仅期望的变量名、函数名,有些关键词或其他单词会被选入,根据需要在后续步骤挑出;
优选的方式:
编写代码时,约定自定义的单词带有特定的前缀或后缀,例如:var my_Var = 1;
<a class = ‘my_Class’>,function add_MyF(),分别对应前缀my_和后缀_MyF,诸如此类。
于所述显示屏的界面上设置用于输入单词前缀或单词后缀的命令窗口:前后缀输入端口806;基于预先设定的规则,在所述前后缀输入端口806指定单词前缀或单词后缀,例如设置单词前后缀字符串“my_|_MyF”,系统读取所述前后缀输入端口806中的单词前后缀字符串,根据分隔符得到代表前后缀的子字符串并将得到的所述子字符串分别赋值到设定的字符串数组A中,A[0]==‘my_’, A[1]==‘_MyF’。
基于所述关键字,从所述第一代码中析出异于所述关键字的相关于所述单词前缀或所述单词后缀的自定义单词。
读取代码,并从所述代码中析出单词。读取各个输入端口800中的代码段,分别从所述代码段中,以分隔符(空格、分号、逗号)标志或使用正则表达式从代码中读出单词集W。所述单词字符串数组为所述单词集W的实现。当所述输入端口800为多个时,分别从每个所述输入端口读取代码并得到单词集Wa、Wb、Wc……,然后再合并单词集Wa、Wb、Wc……,得到所述单词集W。对所述单词集Wa、Wb、Wc……,先行处理,再合并也可以。
基于所述设定的单词前缀或单词后缀即所述单词前后缀字符串,从单词集W中挑选出具有所述指定的单词前缀或单词后缀的单词。以所述字符串数组A中的每个字符串A[i]利用系统函数string检测单词W[j]是否包含所述字符串A[i],且要求字符串A[i]位于所述单词W[j]的端部,若满足要求W[j]即为期望的带有特定的前缀或后缀的自定义单词,这些经过挑选的单词中包含的关键字利用关键字集711屏蔽掉,剩余的单词中删除每个单词重复的部分即可得到自定义的变量名、函数名等。
把所述单词集Wa、Wb、Wc……先行纯化成具有所述指定的单词前缀或单词后缀的单词集,然后再合并成单词集W也可。即是所述自定义单词由所述各个代码段作为数据源所析出。
S108、基于所述自定义单词选定待换单词,可包括:
S1081、基于所述自定义单词、基于所述关键字形成单词列表;
S1082、从所述单词列表中甄选所述自定义单词作为待换单词;
或者,系统自动把所有的所述自定义单词选定为待换单词。
S1081、基于所述自定义单词、基于所述关键字形成单词列表;
如上所述,重新建立单词列表702。使用嵌套的div标签建立列表702,循环地添加列表项并且把所述自定义单词插入到表示列表项的div标签中,所述列表项带有选择组件,优选为多选按钮713。或把所述自定义单词写入可编辑的可删除字符串的文本框中,根据需要即可选定需要替换的单词。或者根据需要也可将所述关键字集711中元素添加到所述单词列表702,并可用不同的外观属性加以区别。
S1082、从所述单词列表中甄选所述自定义单词作为待换单词;
针对附图1、附图2中的多选按钮713的勾选状态与checked值关系是自定义的,如:checked==false,所述多选按钮713呈现勾选,checked==true,所述多选按钮713隐藏勾选。Javascript即可实现。
在列表702上选出需要的单词,为系统指明需要替换的单词。优选为点击所述列表项703的div标签中包含的多选按钮组件713,使其checked属性为true,设定该单词705被选定为待换单词之一。遍历列表702中所有列表项,按照选择组件的状态即cheched值,即得所述待换单词。
S109、基于所述关键字、基于所述自定义单词,针对所述各个待换单词生成并记录在所述程序环境中具有唯一性的替换主体单词;
所述替换主体单词即为将要替换等待替换的单词的单词。为保证替换的优化性,以数目多的单词优先用较短单词替换为原则,生成替换主体单词。所述替换主体单词异于所述关键字和代码中包括的所有单词和已经生成的替换主体单词。在上述第一代码801中统计每个待换单词的出现次数,并依据上述出现次数排序,优先为出现次数多的单词生成替换主体单词。在本次代码环境里,这个替换主体单词具有唯一性。同时,也可用一个包含异或运算的函数生成对应的替换主体单词。生成所述替换主体单词可使用约定字符串长度的随机算法。从长度为1的字符串开始,按照字母顺序生成字符串,此字符串表现为单词形式,字符串内部不含分隔符。检查此字符串是否在本程序环境中唯一,若是,则记录并选用;否则,寻找下一个。当所有长度为1的字符串被穷举后,将字符串长度设为2,如上法穷举;以此类推至无限长度的字符串。
为每个待换单词802按照上述方法生成与之对应的各自不同的替换主体单词805。
S110、基于所述替换主体单词替换所述第一代码中对应的所述待换单词,得到第二代码;
调用函数replace,用替换主体单词来替换代码或代码段中的对应的待替换的单词,如待换单词add用替换主体单词a替换。这里就可以达到压缩、混淆、替换敏感单词的目的。另一替换方法,待换单词为add,替换主体单词为abc,待换单词的替换结果变为addabc也可达到混淆和替换敏感单词的目的。
S111、输出第二代码;
将与所述输入端口中的第一代码的代码段所对应的所述第二代码的代码段输出到与所述输入端口同属于一个所述端口界面区的输出端口中。
替换后的代码识别度将至极低水平,将所述代码甄别出各个模块极难。
优选的方案为,将替换所得的所述第二代码804的各个代码段输出到所述第一代码801的对应的所述代码段所在的输入端口800对应的输出端口803中,藉此分别复制到使用者项目的相应位置,对于大型项目具有极高的提升工作效率的价值。即:将所述第一代码801的代码段的待换单词用对应的替换主体单词替换,并将替换结果输出到对应所述第一代码801的代码段所在的输入端口800的输出端口803中。
在输出所述第二代码804或所述第一代码801时候,所述输出端口803的数据源于对应的所述输入端口800中的所述第一代码801的或所述第二代码804的所述代码段。
至此,已经可以初步完成混淆代码的任务。
为利于调试已经混淆、压缩的代码,包括以下步骤:
S112、记录所述替换主体单词与相应的所述待换单词及其对应关系并以命名为第一关系名的形式保存所述对应关系;
为更加完善使用的技术效果,把替换主体单词和待换单词,按照对应关系保存起来。例如“addClass,a;fun,b;ff,c;”,这个字符串表达形式:“待换单词,替换主体单词;”即为对应关系字符串。
如上所述,按照系统提示设定关系名称,将所述关系名称连同表示替换主体单词和待换单词对应关系的字符串用JSON方式和AJAX技术,一并发送到远端服务器或保存在本地。远端服务器或本地的数据库中包含一张关系列表,所述关系列表的列表项包含所述关系名,所述对应关系字符串等信息。
S113、基于所述第一关系名,获取所述对应关系;
检测读取所述对应关系的读取指令;
响应于检测到所述读取指令,即可按照所述关系名从所述远端的数据库或本地读取所述对应关系字符串。具体为:预先读取所述远端的数据库的关系列表中的全部列表项并显示所述列表项承载的关系名在系统设定的关系名单中,用div标签实现并显示所述关系名单,针对期望的所述关系名激发触摸或点击事件,系统响应所述事件凭借AJAX方法从所述远端服务器中或本地读取对应的所述对应关系字符串至系统的缓存中。
S114、基于所述对应关系,按预定的规则复现所述待换单词与所述替换主体单词;
识别所述包含所述对应关系的所述对应关系字符串,利用json函数或正则表达式来从蕴涵所述对应关系的所述对应关系字符串中解析出各个对应的单词,保存到字符串数组A001中或以对象数组的形式保存,代码如下:
Var d = {};d.a = ‘fun’;d.b = ‘b’;var arr = [];arr.push(d);
对于“addClass,a;fun,b;ff,c;”,先识别各个单词,得到单词集“addClass,a,fun,b,ff,c”,按照顺序赋值到数组arrA中,arrA[0]== ‘addClass’, arrA[1]== ‘a’, arrA[2]==‘fun’, arrA[3]== ‘b’, arrA[4]== ‘ff’, arrA[5]== ‘c’,若i为偶数,arrA[i] 为待换单词,arrA[i+1]为对应的所述替换主体单词。
遍历所述字符串数组A001或对象数组,识别每组对应关系,将对应的单词以分隔符间隔作为div标签的文本节点,并添加到清空并重新构建的所述单词列表702中,以此达到显示、复原,解析出来的各个对应的单词的目的。或在文本框等组件上显示相互对应的单词,以方便调试。
S115、获取所述第二代码804;
调试程序的过程中,出现错误提示,其中包含的信息会包含替换主体单词如:a,b等,难以理解。如S106所述,按照预定的规则添加具有输入端口800、输出端口803的端口界面区;
把正向替换操作所得第二代码804的各个代码段分别添加对应的输入端口800中,由系统识别。
S116、基于所述对应关系,基于所述待换单词802替换所述第二代码804中的所述替换主体单词805的方式将所述第二代码804生成所述第一代码801;
优化的方式,参照所述对应关系,用所述待换单词替换所述第二代码中的所述替换主体单词的方式将所述第二代码生成所述第一代码。这里是步骤S111的逆向过称,可以复原混淆、压缩等操作之前的代码。
参照错误信息的提示,考虑整个的代码环境,即可分析调试代码。
S117、输出所述第二代码生成的所述第一代码。
如上所述输出所述第二代码804方法,将所述生成的第一代码801的各个代码段输出到各个对应的端口界面的输出端口803即文本框中,即可得到复原的第一代码801。
第二实施例:
一种代码的混淆装置,其特征在于,该装置包括:
包括显示屏;
第1模块,用于获取样本字符串;
第2模块,用于基于分隔符从所述样本字符串中析出代码的语言系统所约定的关键字的关键字集合;
第3模块,用于将所述关键字集合按照指定的项目名称保存至远端;
第4模块,用于凭借所述指定的项目名称从所述远端读取所述关键字集合;
第5模块,用于从所述关键字集合中析出所述关键字;
第6模块,用于获取第一代码;
优化的,所述第6模块包括:
第21模块,用于检测添加端口命令;
第22模块,用于响应于检测到所述添加端口命令,于所述显示屏上添加至少一个的包含呈对应关系的输入端口、输出端口的端口界面区;
第23模块,用于将所述第一代码的相应的各个代码段分别以可识别的状态置于相应的所述输入端口。
第7模块,用于基于所述关键字,从所述第一代码中析出异于所述关键字的自定义单词;
优化的,所述第7模块包括:
第18模块,用于于所述显示屏上设置一个用于输入单词前缀或单词后缀的命令窗口;
第19模块,用于于所述命令窗口中,基于预先设定的规则指定单词前缀或单词后缀;
第20模块,用于基于所述关键字,从所述第一代码中析出异于所述关键字的具有所述单词前缀或所述单词后缀的自定义单词。
第8模块,用于基于所述自定义单词选定待换单词;
第9模块,用于基于所述关键字、基于所述自定义单词,针对所述各个待换单词生成并记录在所述程序环境中具有唯一性的替换主体单词;
第10模块,用于基于所述替换主体单词替换所述第一代码中对应的所述待换单词,得到第二代码;
第11模块,用于输出所述第二代码。
所述第11模块包括:
第24模块,用于将与所述输入端口中的第一代码的代码段所对应的所述第二代码的代码段输出到与所述输入端口同属于一个所述端口界面区的输出端口中。
第12模块,用于记录所述替换主体单词与相应的所述待换单词及其对应关系并以命名为第一关系名的形式保存所述对应关系;
第13模块,用于基于所述第一关系名,获取所述对应关系;
第14模块,用于基于所述对应关系,按预定的规则复现所述待换单词与所述替换主体单词。
第15模块,用于获取所述第二代码;
第16模块,用于基于所述对应关系,基于所述待换单词替换所述第二代码中的所述替换主体单词的方式将所述第二代码生成所述第一代码;
第17模块,用于输出所述第二代码生成的所述第一代码 。
第一实施例与第二实施例功能上彼此相互对应,参照第一实施例即可解释说明第二实施例。
实施例子中还可细化为具有下列特征:
本发明所述远端可为远端的数据库、远端的数据源、远端的数据集。
文本框筛选法是这样的:文本框的上位概念为信息接收装置,或为文本框装置。
包括显示器;于所述显示器上显示操作界面;所述操作界面上设置有文本框;获取所述文本框中的字符串;基于分割符从上述字符串中析出单词并聚拢成单词集;对上述单词集进行唯一化处理;将上述单词集保存至缓存;清空上述文本框;将上述缓存中的上述单词集中的元素按照预先设定的顺序输出到上述文本框中;设置上述文本框为可编辑状态;优化的,还包括:设置上述文本框为可循环操作状态。优化的,还包括:为所述单词集设定单词集名称,并保存所述单词集名称和对应的所述单词集到远端;检测基于所述单词集名称的读取所述单词集的指令;响应于检测到所述读取单词集的指令,基于所述单词集名称,从所述远端读取所述单词集至所述呈可编辑状态的文本框中并显示。优化的,还包括:检测‘读取单词集名称列表指令’;响应于检测到所述读取单词集名称列表指令从所述远端获得单词集名称列表并显示;检测针对所述单词集名称列表的特定的列表项的读取单词集指令;响应于检测到所述读取单词集指令,基于所述特定的列表项从所述单词集名称列表析出所述单词集名称,从所述远端读取所述单词集名称对应的单词集至所述呈可编辑状态的文本框中并显示。另一种说法是这样:文本框筛选装置,它包括:显示设置有文本框的操作界面的显示器;第A1模块,用于获取所述文本框中的字符串;第A2模块,用于基于分割符从上述字符串中析出单词并聚拢成单词集;第A3模块,用于对上述单词集进行唯一化处理;第A4模块,用于将上述单词集保存至缓存;第A4模块,用于清空上述文本框;第A6模块,用于将上述缓存中的上述单词集中的元素按照预先设定的顺序输出到上述文本框中;第A7模块,用于设置上述文本框为可编辑状态;优化的,还包括:第A8模块,用于设置上述文本框为可循环操作状态。优化的,还包括:第A9模块,用于为所述单词集设定单词集名称,并保存所述单词集名称和对应的所述单词集到远端;第A10模块,用于检测基于所述单词集名称的读取所述单词集的指令;第A11模块,用于响应于检测到所述读取单词集的指令,基于所述单词集名称,从所述远端读取所述单词集至所述呈可编辑状态的文本框中并显示。优化的,还包括:第A12模块,用于检测‘读取单词集名称列表指令’;第A13模块,用于响应于检测到所述读取单词集名称列表指令从所述远端获得单词集名称列表并显示;第A14模块,用于检测针对所述单词集名称列表的特定的列表项的读取单词集指令;第A15模块,用于响应于检测到所述读取单词集指令,基于所述特定的列表项从所述单词集名称列表析出所述单词集名称,从所述远端读取所述单词集名称对应的单词集至所述呈可编辑状态的文本框中并显示。
上述可编辑状态是指文本框内的文字可以被添加或被删除等编辑操作允许被执行;上述可循环操作状态是指等待响应指令执行上述的从所述获取文本框中的字符串的步骤到所述设置上述文本框为可循环操作状态的步骤之间的各个步骤;上述唯一化是指,在本次操作环境里上述单词集所有的元素是不重复的;遍历所述单词集中所有的元素,删除所述元素的于上述单词集中的重复存在。
文本框筛选法具体例子为:
系统包括显示器,于所述显示器上显示操作界面,所述操作界面上设置有文本框;
S1、获取文本框700中的字符串;从文本框700里读取字符串701;S2、基于分割符从上述字符串701中析出单词并聚拢成单词集 711。以分隔符空格,逗号,分号等,运用系统函数或正则表达式从上述字符串提取单词,并将单词放入到所述单词集711的载体第一字符串数组。S3、对上述单词集711进行唯一化处理;在所述单词集711中的遍历每个单词,删除重复的部分,使每个单词在所述单词集711中是唯一的。S4、将上述单词集711保存至缓存;
建立第二字符串数组,将单词集711中的元素存入第二字符串数组中。S5、清空上述文本框700;S6、将上述缓存中的上述单词集711,按照预先设定的顺序输出到上述文本框700中;
可以按照单词长度或asc码值升序或降序排列;S7、设置上述文本框700为可编辑状态;进入编辑状态后,在上述文本框700中,删除单词来提纯上述单词集711,或增加字符串以添加新的单词来源;优化的,包括步骤S8、设置上述文本框700为可循环操作状态。所述文本框700等待指令来执行重复操作S1步到S8步,按需逐渐积累提纯上述单词集711。设置上述文本框为可循环操作状态。即是上述的操作步骤是可循环执行的。优化的,还包括:S9、将所述单词集命名并保存到远端;为所述单词集设定单词集名称,并保存所述单词集名称和对应的所述单词集到远端;将单词集合中的元素用json形式或以间隔符间隔形成单词集字符串。在系统提示的输入框中输入映射所述单词集的名字:第一单词集名,所述第一单词集名结合所述单词集的字符串表达传送至远端的服务器中,供读取,则更方便。在远端服务器的数据库中,建立一张表保存有所有的单词集名和对应的单词集的字符串表达,称为单词集名称表。 检测读取单词集名称列表指令。所述界面上设置期望读取单词集名称列表的第一按钮;检测针对所述第一按钮的触摸或点击事件,判断是否要向所述远端服务器发出读取单词集名称列表指令。响应于检测到所述读取单词集名称列表指令从所述远端服务器的单词集名称表中读取单词集名称并用div标签形成所述单词集名称列表并显示。检测读取单词集指令或检测基于所述单词集名称列表的特定的列表项的读取单词集指令;在所述单词集名称列表的列表项上检测代表选定指定的单词集名称的触摸或点击事件即读取单词集指令。响应于检测到所述读取单词集指令,基于所述特定的列表项从所述单词集名称列表中析出所述单词集名称,包装所述单词集名称形成读取指令发送到所述远端服务器,所述远端服务器根据所述单词集名称提取并返回所述单词集名称表中的对应的单词集的字符串表达至所述呈可编辑状态的文本框中并显示。
在简单模式下,系统直接将所述单词集保存至远端服务器中。系统检测读取单词集指令。响应所述读取单词集指令直接将单词读取到客户端并显示在所述文本框中,可行。
具体的可为,于预先设置的单词集名称输入框中设置特定的单词集名称,点击或触摸预先设定的响应按钮,触发系统事件,获取所述单词名称,配合使用AJAX从所述远端读取所述单词集。
在不同时段,取自不同节点的文本字符串逐步被处理提取需要的单词,如某种语言的关键词或某种文章的带有某种属性的关键词。
提高效率,节约时间,增加操作方式。
还有:
在选择关键词和所述自定义单词时候,通过下述的显示单词的方法,参考单词的上下文判断单词的属性和功能是提高效率的、同时也是节省时间的。
一种显示单词的方法,其特征在于,所述方法包括:
获取包含特定单词的字符串;显示列表,所述列表包括至少一个列表项;
所述列表项至少包括:显示所述特定单词的显示区、控制区;控制区设置有默认状态为拒绝接受指令的隐藏状态的方向指示装置;检测鼠标指针是否位于所述列表项上;响应于检测到所述鼠标指针位于所述列表项上,所述控制区显示所述方向指示装置;检测针对于所述方向指示装置的列表项控制指令;响应于检测到所述鼠标指针离开所述列表项,所述控制区的方向指示装置进入拒绝接受指令的隐藏状态;响应于检测到所述列表项控制指令,针对当前操作环境获取所述特定单词在所述字符串中的当前位置,当所述列表项控制指令的控制约定为向前时,基于所述当前位置向所述字符串的头部方向搜索所述特定单词,在所述搜索结果为真时,相应的基于所述搜索结果来重新确定并记录所述特定单词的当前位置;当所述列表项控制指令的控制约定为向后时,基于所述当前位置向所述字符串的尾部方向搜索所述特定单词,在所述搜索结果为真时,相应的基于所述搜索结果来重新确定并记录所述特定单词的当前位置;基于所述的重新确定的当前位置,按照预先设定的规则在所述字符串中以复制方式截取包含所述特定单词的局部字符串;将所述局部字符串显示在所述显示区;
一种显示单词的装置,其特征在于,所述装置包括:第B1模块,用于获取包含特定单词的字符串;第B2模块,用于显示列表,所述列表包括至少一个列表项;所述列表项至少包括:显示所述特定单词的显示区、控制区;控制区设置有默认状态为拒绝接受指令的隐藏状态的方向指示装置;第B3模块,用于检测鼠标指针是否位于所述列表项上;第B4模块,用于响应于检测到所述鼠标指针位于所述列表项上,所述控制区显示所述方向指示装置;第B5模块,用于检测针对于所述方向指示装置的列表项控制指令;第B6模块,用于响应于检测到所述鼠标指针离开所述列表项,所述控制区的方向指示装置进入拒绝接受指令的隐藏状态;第B7模块,用于响应于检测到所述列表项控制指令,针对当前操作环境获取所述特定单词在所述字符串中的当前位置,当所述列表项控制指令的控制约定为向前时,基于所述当前位置向所述字符串的头部方向搜索所述特定单词,在所述搜索结果为真时,相应的基于所述搜索结果来重新确定并记录所述特定单词的当前位置;当所述列表项控制指令的控制约定为向后时,基于所述当前位置向所述字符串的尾部方向搜索所述特定单词,在所述搜索结果为真时,相应的基于所述搜索结果来重新确定并记录所述特定单词的当前位置;基于所述的重新确定的当前位置,按照预先设定的规则在所述字符串中以复制方式截取包含所述特定单词的局部字符串;将所述局部字符串显示在所述显示区;
获得由众多的单词构成的字符串701作为数据源,并将所述字符串701置于缓存中;显示列表702,所述列表702包括至少一个列表项703;所述列表702以html标签或JavaScript等都能实现。所述列表项703至少设置有显示所述字符串中的特定单词的显示区704和控制区706;针对于所述列表项703的外观,划分出两个区域,显示区704和控制区706,在水平方向上,显示区704在前,控制区706在后,将所述字符串701中的所述特定的单词705显示在所述显示区704,并将这个单词705作为控制区706控制命令的输入参数。优选的,所述列表项703还设置有存储所述字符串中的特定单词的存储域。针对所述存储域,所述列表702可用div标签实现,所述存储域为所述div标签的数值属性data-;或所述存储域属于所述列表项涵盖范围内的html标签,例如:<span class=”clsData” style=‘display:none;’>border</span>,border为所述特定单词。所述控制区设置有默认状态为拒绝接受指令的隐藏状态的方向指示装置;所述控制区706的方向指示装置为可以接受单击动作的双向箭头707,鼠标点击向前的箭头触发向字符串701头部搜索所述单词指令;鼠标点击向后的箭头触发向字符串701尾部搜索所述单词指令。默认状态下所述双向箭头707是隐藏状态的。检测鼠标指针是否位于所述列表项上;响应于检测到所述鼠标指针位于所述列表项上,所述控制区显示所述方向指示装置,检测针对于所述方向指示装置的列表项控制指令;当所述鼠标指针位于所述列表项703上时候,在控制区706显示双向箭头707,所述双向箭头707可以接受鼠标单击,并具备响应函数;响应于检测到所述鼠标指针离开所述列表项,所述控制区的方向指示装置进入拒绝接受指令的隐藏状态;
当所述所述鼠标指针离开所述列表项703,双向箭头707消失。例如:<div style=’display:none;’>。响应于所述列表项控制指令,针对当前操作环境获取所述特定单词在所述字符串中的当前位置。在首次响应所述列表项控制指令时,所述特定单词705在所述字符串701中的当前位置约定为所述字符串701头部位置为零,否则,获取此列表项703的存储域保存的所述特定单词705的此时在所述字符串701中的位置或保存在缓存中的所述特定单词705的此时在所述字符串701中的位置。当所述列表项控制指令的控制约定为向前时,即当鼠标点击所述列表项703的向前的箭头,基于所述当前位置向所述字符串701的头部方向搜索所述特定单词705,在所述搜索结果为真时,相应的基于所述搜索结果来重新确定并在缓存中记录所述特定单词705的当前位置;当所述列表项控制指令的控制约定为向后时,即当鼠标点击所述列表项703的向后的箭头,基于所述当前位置向所述字符串701的尾部方向搜索所述特定单词705,在所述搜索结果为真时,相应的基于所述搜索结果来重新确定并在缓存中记录所述特定单词705的当前位置。当所述搜索中找到所述特定单词705,在缓存中记录新找到的位置为下次搜索基础,按照预先设定的规则在所述字符串701中以复制方式截取包含所述特定单词705的局部字符串709。优化的,所述特定单词705位于所述局部字符串709中部。即为,于所述字符串701中发现所述特定单词705的位置的前后按照预先设定的规则各取若干个字符或若干单词,复制这些单词组成的字符串,并于所述显示区704显示所述局部字符串709。在所述搜索结果为假时,所述显示区704不变。
在所述列表项703的div标签中设置属性data-pos = ‘单词的当前位置,初始值为零’,data-border=‘本列表项703对应的所述特定单词705’,在搜索所述特定单词705时读取data-pos、data-word属性即可。所述搜索结果为真时,将data-pos设置为搜索到的所述特定单词705的于所述字符串701中的位置。
或在环境中设置var posationWord = 0;//保存所述特定单词705位置,响应所述搜索单词的指令,预先判断是否为针对同一列表项的搜索指令,若是,直接读取posationWord,否则,posationWord设置为零,再读取。
Var wordStr = ‘’;//保存所述特定单词705,响应所述搜索单词的指令,预先判断是否为针对同一列表项的搜索指令,若否,直接读取wordStr,否则,针对所述列表项703,读取所述显示区704的显示内容:例如,<div>this is <span class=’clsData’>border</span></div>//div标签实现的列表项。getElementsByClass(’clsData’)[0].innerHTML即可得到所述特定单词705作为搜索指令的输入参数。优选的,所述显示区的显示内容清空,将所述局部字符串显示在所述显示区;
优选的,所述局部字符串实现方式为将所述特定单词705按照预先设定的规则用特定的标签包裹,再与所述特定单词705的上下文合并为所述局部字符串709,如下。
所述特定的标签优化为div或span。若在字符串701中搜索所述特定单词border,此时border的上下文为‘ate(0%,-50%); border: 1px solid re’。针对所述特定单词border此时在所述字符串中的位置,其前部单词为‘ate(0%,-50%);’,其后部的单词为‘:1px solid re’。所述局部字符串实现为:getElementById(‘列表项的id’).innerHTML =“ate(0%,-50%);<span class=’corlorRed’>border</span>: 1px solid re”,在所述显示区表现为‘ate(0%,-50%); border: 1px solid re’。清空所述显示区704,显示所述局部字符串709;
所述方向指示装置检测所述列表项控制指令;继续接受指令,以动态调整的所述当前位置为基础,在所述字符串701中向所述字符串701头部、向所述字符串701尾部搜索所述单词,并根据所述搜索结果显示其周围的单词。显示某个单词的上下文,对单词的性质进行研判。方便,增加一种显示单词前后文的方法。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,意为包括一系列要素的过程、装置、商品或者设备不仅包括所述要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、商品或者设备所固有的要素。
在没有更多限制的情况下,语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、装置、商品或者设备中还存在另外的相同要素。
第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
本发明的实施例可为装置、系统、或计算机程序。本发明可采用完全硬件实施例、完全软件实施例、或软件和硬件结合方面的实施例的形式。
本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序的形式。
本发明的描述是参照于本发明实施例的装置、设备(系统)、和计算机程序的流程图或方框图。应理解可由计算机程序指令实现流程图或方框图中的每一流程或方框、以及流程图或方框图中的流程或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程或方框图一个方框或多个方框中指定的功能的装置。
计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程或方框图一个方框或多个方框中指定的功能。
计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程或方框图一个方框或多个方框中指定的功能的步骤。
典型的配置:计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可包括计算机可读介质中的非永久性存储器,随机存取存储器或非易失性内存等形式,如只读存储器(ROM)或闪存。
内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何装置或技术来实现信息存储。
信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存、静态随机存取存储器、动态随机存取存储器(DRAM)、其他类型的随机存取存储器、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
以上对本发明实施例所提供的代码的处理方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种代码的混淆方法,其特征在于,该方法包括:
包括显示屏;
制备阶段:
获取样本字符串;
基于分隔符从所述样本字符串中析出代码的语言系统所约定的关键字的关键字集合;
将所述关键字集合按照指定的项目名称保存至远端;
实施阶段:
凭借所述指定的项目名称从所述远端读取所述关键字集合;
从所述关键字集合中析出所述关键字;
获取第一代码;
基于所述关键字,从所述第一代码中析出异于所述关键字的自定义单词;
基于所述自定义单词选定待换单词;
基于所述关键字、基于所述自定义单词,针对所述各个待换单词生成并记录在所述程序环境中具有唯一性的替换主体单词;
基于所述替换主体单词替换所述第一代码中对应的所述待换单词,得到第二代码;
输出所述第二代码。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
记录所述替换主体单词与相应的所述待换单词及其对应关系并以命名为第一关系名的形式保存所述对应关系;
基于所述第一关系名,获取所述对应关系;
基于所述对应关系,按预定的规则复现所述待换单词与所述替换主体单词。
3.根据权利要求2所述的方法,其特征在于,该方法还包括:
获取所述第二代码;
基于所述对应关系,基于所述待换单词替换所述第二代码中的所述替换主体单词的方式将所述第二代码生成所述第一代码;
输出所述第二代码生成的所述第一代码 。
4.根据权利要求1所述的方法,其特征在于,所述基于所述关键字,从所述第一代码中析出异于所述关键字的自定义单词包括:
于所述显示屏上设置一个用于输入单词前缀或单词后缀的命令窗口;
于所述命令窗口中,基于预先设定的规则指定单词前缀或单词后缀;
基于所述关键字,从所述第一代码中析出异于所述关键字的具有所述单词前缀或所述单词后缀的自定义单词。
5.根据权利要求1所述的方法,其特征在于,所述获取第一代码包括:
检测添加端口命令;
响应于检测到所述添加端口命令,于所述显示屏上添加至少一个的包含呈对应关系的输入端口、输出端口的端口界面区;
将所述第一代码的相应的各个代码段分别以可识别的状态置于相应的所述输入端口;
所述输出所述第二代码包括:
将与所述输入端口中的第一代码的代码段所对应的所述第二代码的代码段输出到与所述输入端口同属于一个所述端口界面区的输出端口中。
6.一种代码的混淆装置,其特征在于,该装置包括:
包括显示屏;
第1模块,用于获取样本字符串;
第2模块,用于基于分隔符从所述样本字符串中析出代码的语言系统所约定的关键字的关键字集合;
第3模块,用于将所述关键字集合按照指定的项目名称保存至远端;
第4模块,用于凭借所述指定的项目名称从所述远端读取所述关键字集合;
第5模块,用于从所述关键字集合中析出所述关键字;
第6模块,用于获取第一代码;
第7模块,用于基于所述关键字,从所述第一代码中析出异于所述关键字的自定义单词;
第8模块,用于基于所述自定义单词选定待换单词;
第9模块,用于基于所述关键字、基于所述自定义单词,针对所述各个待换单词生成并记录在所述程序环境中具有唯一性的替换主体单词;
第10模块,用于基于所述替换主体单词替换所述第一代码中对应的所述待换单词,得到第二代码;
第11模块,用于输出所述第二代码。
7.根据权利要求6所述的装置,其特征在于,该装置还包括:
第12模块,用于记录所述替换主体单词与相应的所述待换单词及其对应关系并以命名为第一关系名的形式保存所述对应关系;
第13模块,用于基于所述第一关系名,获取所述对应关系;
第14模块,用于基于所述对应关系,按预定的规则复现所述待换单词与所述替换主体单词。
8.根据权利要求7所述的装置,其特征在于,该装置还包括:
第15模块,用于获取所述第二代码;
第16模块,用于基于所述对应关系,基于所述待换单词替换所述第二代码中的所述替换主体单词的方式将所述第二代码生成所述第一代码;
第17模块,用于输出所述第二代码生成的所述第一代码 。
9.根据权利要求6所述的装置,其特征在于,所述第7模块包括:
第18模块,用于于所述显示屏上设置一个用于输入单词前缀或单词后缀的命令窗口;
第19模块,用于于所述命令窗口中,基于预先设定的规则指定单词前缀或单词后缀;
第20模块,用于基于所述关键字,从所述第一代码中析出异于所述关键字的具有所述单词前缀或所述单词后缀的自定义单词。
10.根据权利要求6所述的装置,其特征在于,所述第6模块包括:
第21模块,用于检测添加端口命令;
第22模块,用于响应于检测到所述添加端口命令,于所述显示屏上添加至少一个的包含呈对应关系的输入端口、输出端口的端口界面区;
第23模块,用于将所述第一代码的相应的各个代码段分别以可识别的状态置于相应的所述输入端口;
所述第11模块包括,第24模块,用于将与所述输入端口中的第一代码的代码段所对应的所述第二代码的代码段输出到与所述输入端口同属于一个所述端口界面区的输出端口中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911198559.9A CN112883343A (zh) | 2019-11-29 | 2019-11-29 | 一种程序代码的混淆方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911198559.9A CN112883343A (zh) | 2019-11-29 | 2019-11-29 | 一种程序代码的混淆方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112883343A true CN112883343A (zh) | 2021-06-01 |
Family
ID=76039373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911198559.9A Pending CN112883343A (zh) | 2019-11-29 | 2019-11-29 | 一种程序代码的混淆方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112883343A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419721A (zh) * | 2021-08-20 | 2021-09-21 | 杭州未名信科科技有限公司 | 基于web的表达式编辑方法、装置、设备和存储介质 |
-
2019
- 2019-11-29 CN CN201911198559.9A patent/CN112883343A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419721A (zh) * | 2021-08-20 | 2021-09-21 | 杭州未名信科科技有限公司 | 基于web的表达式编辑方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8495102B2 (en) | Method, system, and program product for organizing a database | |
US9519636B2 (en) | Deduction of analytic context based on text and semantic layer | |
US20130138425A1 (en) | Multiple rule development support for text analytics | |
JP4911438B2 (ja) | 操作監視装置 | |
KR20080045694A (ko) | 이종 정보 시스템의 데이터를 사용하여 협업애플리케이션의 문서에 주석을 삽입하는 방법 | |
US11263062B2 (en) | API mashup exploration and recommendation | |
CN110515896B (zh) | 模型资源管理方法、模型文件制作方法、装置和系统 | |
US20180268060A1 (en) | Identifying client states | |
US8607197B2 (en) | Displaying HTTP session entry and exit points | |
US10572122B2 (en) | Intelligent embedded experience gadget selection | |
US10585921B2 (en) | Suggesting patterns in unstructured documents | |
US20160124795A1 (en) | Evaluation method and apparatus | |
CN112883343A (zh) | 一种程序代码的混淆方法及装置 | |
US11030153B2 (en) | System and method for storing data with rules on containers for collections of data | |
CN115329753B (zh) | 一种基于自然语言处理的智能数据分析方法和系统 | |
US20230153358A1 (en) | Systems and methods for collecting digital forensic evidence | |
CN115016770A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN114595391A (zh) | 基于信息搜索的数据处理方法、装置和电子设备 | |
CN113094250A (zh) | 日志预警方法、装置、电子设备及存储介质 | |
JPH11306187A (ja) | カテゴリ付文書の検索結果の提示処理方法およびその装置 | |
CN105740272B (zh) | 资源文件搜索方法和系统 | |
JP2018181121A (ja) | 分析装置、分析プログラム及び分析方法 | |
KR20100014116A (ko) | 탭을 위한 규칙 기반의 사용자 정의된 wi-메카니즘 | |
Sterca et al. | Automatic Mapping of Business Web Applications. | |
JP2006039811A (ja) | ドキュメント管理プログラム、ドキュメント管理方法、及びドキュメント管理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210601 |
|
WD01 | Invention patent application deemed withdrawn after publication |