You might want to look at the key_isValid and key_isValid_simple
subroutines.
Your time working on this is wasted.
I think I am not wasting time, as this code is 100% protected.
Unbreakable.
If you don't think so, make a change to the unpacked file and run it.
It gaves errors once the file is changed.
I looked at both key_isValid and key_isValid_simple. However, I did
not see any unicode or special charactors to prevent the file from
resave. How does he do that in the file? My theory is that there is a
character like "Copyright C" and text editors can not save it, so once
somebody trys to change the file and re save it. The whole script will
not work.
sub key_isValid
{
local($p, $i, $k) = @_;
$k = &key_format($k);
return (0, 0) if ($i eq "" || $k eq "");
return (1, 0) if ($k eq &key_make($p, $i));
local($t) = &clock_sub("%y%m%d", $^T);
local($d) = substr($k, 20, 4) . substr($k, 25, 2);
local($v) = $k eq &key_make_dated($p, $i, $d);
local($s) = sprintf("%s/%s/%s", substr($d, 0, 2), substr($d, 2, 2),
substr($d, 4, 2));
return ($v && $d > $t, $v ? $s : 0);
}
sub key_make
{
local($p, $i) = @_;
return &key_format(sprintf("%08x%08x", &crc32_calc($p . $i),
&crc32_calc($i x 3)));
}
sub key_make_dated
{
local($p, $i, $d) = @_;
return &key_format(sprintf("%08x%08x", &crc32_calc($p . $i . $d),
&crc32_calc(($i x 3) . $d)) . $d);
}
sub key_isValid_simple
{
local($p, $i, $k) = @_;
return &key_format($k) eq &key_format(sprintf("%08x",
&crc32_calc("$p:$i")));
}
sub key_format
{
local($s) = @_;
$s =~ s/o/0/ig;
$s =~ s/i/1/ig;
$s =~ s/s/5/ig;
$s =~ s/[^0-9a-f]//ig;
$s =~ s/(....)/$1\-/ig;
$s =~ s/\-$//;
return uc $s;
}