我有一些简单的C++作业,我知道学生共享了代码。这些都是聪明的学生,他们知道如何欺骗苔藓。我正在寻找一种可以根据变量类型重命名变量的工具(类型为int的第一个变量将为int1,第一个int数组将为intptr1 ...),或执行我现在无法想到的类似操作。您知道执行此操作的快捷方法吗?

编辑:我需要使用moss并报告90%匹配

谢谢

最佳答案

是的,您要寻找的工具称为编译器。 :)

严重的是,如果除了标识符名称以外提交的程序完全相同,则编译(没有调试信息)应得到完全相同的输出。

如果在打开调试的情况下执行此操作,则编译器可能会将元数据保留在每个可执行文件都不同的可执行文件中,因此有关确保关闭该文件的注释。这也是为什么此方法不适用于Java程序的原因-不管是否处于 Debug模式,这种信息都会存在(出于动态自省(introspection)的目的)。

编辑:我从添加到问题的注释中看到,您正在观察的某些提交内容不只是标识符名称不同。如果程序在结构上仍然等效,则此方法仍然有效。

编辑:鉴于必须使用moss,所以这可能不是可行的方法。尽管moss确实对比较汇编提供了一些支持-也许编译为汇编程序并将其提交给moss是一种选择(取决于您使用的编译器)。

10-04 21:40