Board logo

标题: [问题求助] Perl怎样查看可执行文件的十六进制编码? [打印本页]

作者: Perl    时间: 2011-10-24 15:21     标题: Perl怎样查看可执行文件的十六进制编码?

比如,我有一个可执行文件:
C:\Windows\System32\clip.exe
怎样查看它的十六进制编码?就像用UE打开那样
作者: plp626    时间: 2011-10-24 17:35

cmd命令行下 "seehex C:\Windows\System32\clip.exe"
  1. :: seehex.bat <file>
  2. @perl -x -S %~s0 %*&goto:eof
  3. #!perl
  4. open EXE,"@ARGV" or die "$!";
  5. binmode EXE;
  6. while (<EXE>) {
  7.     print &asc2hex($_);
  8. }
  9. sub asc2hex {
  10.     ($s = shift) =~ s/./sprintf("%02lx", ord $&)/egs;
  11.     return $s;
  12. }
复制代码

作者: sxw    时间: 2011-10-24 20:14

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. open(FH,"<",'C:\Windows\System32\clip.exe') or die;
  5. my $a;
  6. my $buffer;
  7. while (read(FH,$buffer,16)) {
  8.     $a=unpack("H*",$buffer);
  9. $a=~s/../$& /g;
  10. print $a;
  11. }
  12. close(FH);
复制代码

作者: Perl    时间: 2011-10-24 23:12

回复 3# sxw


多谢。用unpack和ord得到的结果有点差异,请问是为什么?
  1. open EXE,'C:\Windows\System32\clip.exe';
  2. binmode EXE;
  3. while (<EXE>) {
  4.     print &asc2hex($_);
  5. }
  6. sub asc2hex {
  7.     ($s = shift) =~ s/./sprintf("%02lx ", ord $&)/egs;
  8.     return $s;
  9. }
复制代码

作者: sxw    时间: 2011-10-25 16:54

本帖最后由 sxw 于 2011-10-25 17:17 编辑

回复 4# Perl


    呵呵,不清楚,plp26的结果比3楼的多了1kb,下面的也可以吧
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. open(FH,"<",'C:\Windows\System32\clip.exe') or die;
  5. my @a;
  6. my $buffer;
  7. while (read(FH,$buffer,16)) {
  8.     @a=unpack("H*",$buffer);#@a中只有一个元素
  9.          print $a[0],"\n";
  10.         }
  11. close(FH);
复制代码

作者: lllsoslll    时间: 2011-10-29 00:22

把2楼精简下:
  1. :: seehex.bat <file>
  2. @perl -x -S %~s0 %*&goto:eof
  3. #!perl
  4. open EXE,"@ARGV" or die $!;
  5. binmode EXE;
  6. while (<EXE>) {
  7.    $_ =~ s/./sprintf("%02lx", ord $&)/egs;
  8.    print;
  9. }
复制代码

作者: lllsoslll    时间: 2011-10-29 00:28

  1. open EXE,'C:\Windows\System32\clip.exe' or die $!;
  2. binmode EXE;
  3. while (<EXE>) {
  4.    $_ =~ s/./sprintf("%02lx", ord $&)/egs;
  5.    print;
  6. }
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2