去掉代码中的变量名

需求

一种常见的抄袭做法是修改方法名和变量名;
如果在查重的时候去掉这些元素,就可以避免相关误差。

做法

这个问题困扰我许久了…
思考过的解决方案:

常用词库

顾名思义就是把各个语言所有的常用语法列出来并保存,这些元素以及符号之外的字符就可以认为是变量名和方法名,处理源代码是删除它们即可。
这样做有很大的问题:
1.词库过于庞大。如python语言,不可能把所有外部库里的元素都遍历并储存。
2.失误率太高。一个变量名和词库中的某个词一致或相似,难以判断是否删除。
3.如何作为整体识别。以.或空格区分?效率太低且特殊情况太多。

混淆工具

下载了proguard-master。使用混淆工具问题也很突出:
1.功能不匹配。混淆工具会对代码进行整体检查,并把相应内容随机化;仅仅是去变量名,不太合适。
2.难以应用。即便使用混淆工具处理相关代码,一般需要修改代码,这就与查重相冲突;暂时修改的话,效率又太低。
3.语言的适应性。一般的混淆工具只能适应某一种语言,难以满足需求。

汇编级别

就像IDE能够识别代码中各个元素的性质一样,如果可以跨越到汇编层面,可能会实现相应功能;
这样全面展开的话,感觉会得不偿失,耽误进度。
故暂时不予尝试。

总而言之,没有实现。

猜你喜欢

转载自blog.csdn.net/Mr__666/article/details/116233307