⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bin2h.pl

📁 给程序加密(upx1.25)
💻 PL
字号:
#! /usr/bin/perl -w##  bin2h.pl --##  This file is part of the UPX executable compressor.##  Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer#  Copyright (C) 1996-2004 Laszlo Molnar#  All Rights Reserved.##  UPX and the UCL library are free software; you can redistribute them#  and/or modify them under the terms of the GNU General Public License as#  published by the Free Software Foundation; either version 2 of#  the License, or (at your option) any later version.##  This program is distributed in the hope that it will be useful,#  but WITHOUT ANY WARRANTY; without even the implied warranty of#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the#  GNU General Public License for more details.##  You should have received a copy of the GNU General Public License#  along with this program; see the file COPYING.#  If not, write to the Free Software Foundation, Inc.,#  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.##  Markus F.X.J. Oberhumer              Laszlo Molnar#  <mfx@users.sourceforge.net>          <ml1050@users.sourceforge.net>#use Compress::Zlib;$delim = $/;undef $/;       # undef input record separator - read file as a whole$ifile = shift || die;$ident = shift || die;$ofile = shift || die;$opt_q = "";$opt_q = shift if ($#ARGV >= 0);# open ifileopen(INFILE,$ifile) || die "open $ifile\n";binmode(INFILE);# check file size@st = stat($ifile);if (1 && $st[7] <= 0) {    print STDERR "$ifile: ERROR: emtpy file\n";    exit(1);}if (1 && $st[7] > 64*1024) {    print STDERR "$ifile: ERROR: file is too big (${st[7]} bytes)\n";    if ($ifile =~ /^fold/) {        print STDERR "  (please upgrade your binutils to 2.12.90.0.15 or better)\n";    }    exit(1);}# read whole file$data = <INFILE>;close(INFILE) || die;$n = length($data);die if ($n != $st[7]);# open ofileopen(OUTFILE,">$ofile") || die "open $ofile\n";binmode(OUTFILE);select(OUTFILE);$if = $ifile;$if =~ s/.*[\/\\]//;$of = $ofile;$of =~ s/.*[\/\\]//;if ($opt_q ne "-q") {printf ("/* %s -- created from %s, %d (0x%x) bytes\n", $of, $if, $n, $n);print <<"EOF";   This file is part of the UPX executable compressor.   Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 1996-2004 Laszlo Molnar   All Rights Reserved.   UPX and the UCL library are free software; you can redistribute them   and/or modify them under the terms of the GNU General Public License as   published by the Free Software Foundation; either version 2 of   the License, or (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; see the file COPYING.   If not, write to the Free Software Foundation, Inc.,   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.   Markus F.X.J. Oberhumer              Laszlo Molnar   <mfx\@users.sourceforge.net>          <ml1050\@users.sourceforge.net> */EOF}$s = $ident;$s =~ tr/a-z/A-Z/;printf("#define %s_ADLER32 0x%08x\n", $s, &adler32($data));printf("#define %s_CRC32   0x%08x\n", $s, &crc32($data));printf("\n");printf("unsigned char %s[%d] = {", $ident, $n);for ($i = 0; $i < $n; $i++) {    if ($i % 16 == 0) {        printf("   /* 0x%4x */", $i - 16) if $i > 0;        print "\n";    }    printf("%3d", ord(substr($data, $i, 1)));    print "," if ($i != $n - 1);}while (($i % 16) != 0) {    $i++;    print "    ";}printf("    /* 0x%4x */", $i - 16);print "\n};\n";close(OUTFILE) || die;select(STDOUT);undef $delim;exit(0);# /***********************************************************************# //# ************************************************************************/sub adler32_OLD {    local($d) = @_;    local($n) = length($d);    local($i);    local($s1) = 1;    local($s2) = 0;    for ($i = 0; $i < $n; $i++) {        $s1 += ord(substr($d, $i, 1));        $s2 += $s1;        $s1 %= 65521;        $s2 %= 65521;    }    return ($s2 << 16) | $s1;}# vi:ts=4:et

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -