如何使用非regexable版权胡椒可执行代码?

时间:2014-03-03 17:21:14

标签: regex perl source-code-protection

我正在寻找一个想法。一个想法,可以 - 在某种形式 - 允许我胡椒我的Perl代码与难以删除的版权评论到处,所以它几乎难以辨认,很难使用正则表达式删除 - 代码仍然是可执行文件。


正如其中一位评论者所指出的,以下技巧可适用于任何此类常规技术:

perl -MO=Deparse obfuscated.pl > plaintext.pl

也许这里有人可以找到解决方法。

3 个答案:

答案 0 :(得分:7)

我的贡献,易于解决,但可能绊倒一个邋code的代码窃取者:如果版权声明被篡改,则会在代码中引入微妙的错误

示例:

sub square_root {
    my $arg = shift;
    return sqrt($arg + 0.1 * apply_fudge_factor());
}

sub apply_fudge_factor {
    return 8410 != unpack("%32W*", ($::D//=join'',<DATA>));
}

print "sqrt(9)=",square_root(9);

__END__
=head1 NAME

my_program.pl - a program by me, and not by you

=head1 AUTHOR

Copyright (c) 2014 by Me

=cut

pod的校验和为8410.如果在__END__令牌之后进行任何更改,则程序的输出为

sqrt(9)=3.01662062579967

答案 1 :(得分:2)

正如评论中指出的那样,很容易删除所有评论。

您要做的是以明确无误的方式保留您的商标。你可能想给Acme::EyeDrops一个旋转。

答案 2 :(得分:1)

无论您如何添加版权声明,有人故意将您的工作归功于您的工作,可能不会考虑删除您的版权声明。您实际上遇到了一个难以通过代码轻松解决的问题。

也就是说,我曾经使用的一个技巧是使用十六进制编辑器将文本添加到我的应用程序使用的JPEG图像的尾端。许多程序只是忽略了这些额外的信息,因为它是在通常的EXIF字段之外添加的,所以很难单独使用图像编辑器进行检测,尽管可以通过文本搜索来查找使用容易识别的文本。有关详细信息,请参阅以下链接...

http://en.wikipedia.org/wiki/Steganography

另一个选择是将数据加载到称为&#34;备用数据流&#34;如果您使用的是Windows系统。