суббота, 8 мая 2010 г.

Выдираем из Hiew-листинга байты инструкций

Получил тут листинг, который ребята получили в результате копирования в режиме Code из Hiew. Чтобы удобней было анализить, т.е. юзать IDA pro и ставить коменты в ходе анализа, то написал небольшой скрипт на Perl:

extract_code.pl:


#!/usr/bin/perl
use strict;
use warnings;

sub ParseFile
{
open (SRCFILE, $_[0]) or die "Can't open source file";
open (DESTFILE, ">$_[1]") or die "Can't create destination file";

while()
{
chomp;
if(/(\.[A-F0-9]{8}: )([A-F0-9]+)(.*)/)
{
my $bin = pack('H*', $2);
syswrite DESTFILE, $bin;
}
}

close(DESTFILE);
close(SRCFILE);
}

ParseFile($ARGV[0],$ARGV[1]);


extract_code.pl usage:
extract_code.pl

Хавает листинг вида:
.0043F3A5: 74F4 jz 00043F39B -- 1
.0043F3A7: 8D441812 lea eax,[eax][ebx][012]
.0043F3AB: EB12 jmps 00043F3BF -- 2
.0043F3AD: 8D742600 lea esi,[esi][0]

Комментариев нет: