亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dumpxip.pl

?? wince 內核dump程序
?? PL
?? 第 1 頁 / 共 3 頁
字號:
#!perl -w# (C) 2003-2007 Willem Jan Hengeveld <itsme@xs4all.nl># Web: http://www.xs4all.nl/~itsme/#      http://wiki.xda-developers.com/## $Id: dumpxip.pl 1766 2008-04-10 11:57:58Z itsme $##  G:\archive\software\WINCE420/PUBLIC/COMMON/OAK/INC/pehdr.h#  G:\archive\software\WINCE420/PUBLIC/COMMON/OAK/INC/romldr.h### .... i think the problem is that there are 2 xip section both at the same virtual address#  ... see for instance decompress data of ceconfig.h#    ... it returns the wrong data.use strict;$|=1;use Getopt::Long;use IO::File;use Carp;my $g_fileseek;my $g_doprint= 0;my $g_savedir;my $g_use_wince3_compression;my %seen_extensions;my %g_xipchaininfo;#use XdaDevelopers::CompressUtils;# this requires a patch to Win32::API, which can be found at#   http://www.xs4all.nl/~itsme/projects/perl/Win32-API-0.41-wj2.tar.gz#use Win32::API;# CEDecompress is to be used for wince3.x roms# CEDecompressROM is to be used for wince4.x roms## problem is that this call sometimes crashes the app.# ##my $g_decompress= Win32::API->new("CECompress.dll", "CEDecompress", "PNPNNNN", "N", "_cdecl")#my $g_decompress= Win32::API->new("CECompress.dll", "CEDecompressROM", "PNPNNNN", "N", "_cdecl")#     or warn "error importing CEDecompress: $!\n";GetOptions(    "s=s"=> sub { $g_fileseek= eval($_[1]); },    "d:s"=> \$g_savedir,    "3"  => \$g_use_wince3_compression,) or die usage();sub usage {    return <<__EOF__Usage: dumpxip.pl -o baseoffet [-l length] [-d savedir] [-s fileseek] romfile__EOF__}my $g_filename= shift or die usage();die "$g_filename not found\n" if (!-e $g_filename);my $g_data= ReadFile($g_filename, $g_fileseek);my $rom= ROM->new($g_data);my $mem= MemSpace->new();my $xipblocks= XipBlock::FindXipBlocks($rom);# [0x00000000, 0x10078000], [0x00100000, 0x80000000], [0x00900000, 0x82040000], [0x015c0000, 0x82d00000], [0x01640000, 0x82d80000], [0x01940000, 0x83080000] for my $xipblock ( @$xipblocks ) {    $rom->setbase($xipblock->{ofs}, $xipblock->{base});    $mem->setvbase($xipblock->{ofs}, $xipblock->{base});    my $xip= XipBlock->new($rom, $mem, $xipblock->{base});    $xip->ParseXipBlock();    $xip->DumpInfo();    $xip->PrintFileList();    $xipblock->{parsedxip}= $xip;}$mem->pfillblanks($rom, 0, $rom->{size});$mem->print();if ($g_savedir) {    my $xipindex= 1;    for my $xipblock ( @$xipblocks ) {        $rom->setbase($xipblock->{ofs}, $xipblock->{base});        $mem->setvbase($xipblock->{ofs}, $xipblock->{base});        my $xipname= exists $g_xipchaininfo{$xipblock->{base}} ? "xip_".$g_xipchaininfo{$xipblock->{base}}{szName} : sprintf("xip_%02d", $xipindex);        $xipblock->{parsedxip}->SaveFiles($g_savedir, $xipname);        $xipindex++;    }}print "finished\n";exit(0);sub ReadFile {    my $fn= shift;    my $ofs= shift || 0;    my $len= shift || (-s $fn)-$ofs;    my $data;    my $fh= IO::File->new($fn, "r") or die "$fn: $!";    binmode $fh;    $fh->seek($ofs, SEEK_SET);    $fh->read($data, $len);    $fh->close();    return $data;}##########################################################################################################################################################package XipBlock;use POSIX;use strict;use Carp;use Dumpvalue;sub new {    my $class= shift;    my $rom= shift;    my $mem= shift;    my $start= shift;    return bless { rom_type=>undef, xipstart=>$start, rom=>$rom, mem=>$mem }, $class;}sub ParseXipBlock {    my $self= shift;    my $rom= $self->{rom};    my $mem= $self->{mem};    if ($rom->GetDword($self->{xipstart}+0x40) != 0x43454345) {        die "ECEC signature not found\n";    }    my $romhdrofs= $rom->GetDword($self->{xipstart}+0x44);    $mem->vadd($self->{xipstart}+0x40, 8, "ECEC signature + romhdr ptr");    my $romhdr= $self->{romhdr}= $self->ParseRomHdr($rom->GetVData($romhdrofs, 0x54));    $mem->vadd($romhdrofs, 0x54, $romhdr->{desc});    my $modlistofs= $romhdrofs+ 0x54;    my $modules= $self->{modules}= $self->ParseModulesList($rom->GetVData($modlistofs, 0x20*$romhdr->{nummods}));    $mem->vadd($modlistofs, 0x20*$romhdr->{nummods}, "modules list, %d modules", $romhdr->{nummods});    $_->{filename}= $rom->GetString($_->{lpszFileName}) for (@$modules);    my $filesofs= $modlistofs + 0x20*$romhdr->{nummods};    my $files= $self->{files}= $self->ParseFilesList($rom->GetVData($filesofs, 0x1c*$romhdr->{numfiles}));    $mem->vadd($filesofs, 0x1c*$romhdr->{numfiles}, "files list, %d files", $romhdr->{numfiles});    $_->{filename}= $rom->GetString($_->{lpszFileName}) for (@$files);    if ($romhdr->{ulCopyEntries}) {        $self->{copylist}= $self->ParseCopyList($rom->GetVData($romhdr->{ulCopyOffset}, 0x10*$romhdr->{ulCopyEntries}));        $mem->vadd($romhdr->{ulCopyOffset}, 0x10*$romhdr->{ulCopyEntries}, "copy list, %d entries", $romhdr->{ulCopyEntries});    }    else {        $self->{copylist}= [];    }    $self->AddModuleHeaders($_) for (@{$modules});    $self->ParseExtensions($romhdr->{pExtensions});}sub ParseExtension {    my $self= shift;    my $data= shift;    my @fields= unpack("A24V5", $data);    my @names= qw(name type pdata length reserved pNextExt);    my @fmt= qw(%s %08lx %08lx %08lx %08lx %08lx);    return  {        desc=>sprintf("extension: %s", join ", ", map { sprintf("%s:$fmt[$_]", $names[$_], $fields[$_]) } (0..$#names)),        map { ( $names[$_] => $fields[$_] ) } (0..$#names)    };}sub isValidRomOfs {    my ($ofs)= @_;    return ($ofs>=0x80000000 && $ofs<0xa0000000);}sub ParseExtensions {    my ($self, $extptr)= @_;    my $first=1;    while ($extptr) {        last if (!$self->{rom}->IsInRange($extptr));        last if ($seen_extensions{$extptr});        $seen_extensions{$extptr}= 1;        my $ext= $self->ParseExtension($self->{rom}->GetVData($extptr, 44));        last if (            ($ext->{pdata}!=0 && !isValidRomOfs($ext->{pdata}))            ||($ext->{pNextExt}!=0 && !isValidRomOfs($ext->{pNextExt}))            ||$ext->{length}>0x1000000);        if (!$first) {            $self->{mem}->vadd($extptr, 44, $ext->{desc});            $self->{mem}->vadd($ext->{pdata}, $ext->{length}, "data for extension %s: %s", $ext->{name},                join(",", map { sprintf("%08lx", $_); } unpack("V*", $self->{rom}->GetVData($ext->{pdata}, $ext->{length})))            ) if ($ext->{pdata});        }        $first= 0;        $extptr= $ext->{pNextExt};    }}sub SaveFiles {    my $self= shift;    my $savedir= shift;    my $xipname= shift;    if ($savedir) {        mkdir $savedir;    }    $savedir .= "/$xipname";    if ($savedir) {        mkdir $savedir;    }    die "$savedir does not exist\n" if (!-d $savedir);    print "saving files to $savedir\n";    $self->SaveFile($_, $savedir) for (@{$self->{files}});    print "saving modules to $savedir\n";    $self->SaveModule($_, $savedir) for (@{$self->{modules}});}sub DumpInfo {    my $self= shift;    $self->DumpFilesAreas();    $self->DumpModulesAreas();    $self->{mem}->vfillblanks($self->{rom}, $self->{romhdr}{physfirst}, $self->{romhdr}{physlast});    #$self->{mem}->print();}sub filetimestring {    my ($file)= @_;    # 100 ns intervals since 1-1-1601    my $win32ftime= $file->{ftTime_high}*(2**32)+$file->{ftTime_low};    my $unixtime= int($win32ftime/10000000.0-11644473600);    #return sprintf("%08lX%08lX", $file->{ftTime_high}, $file->{ftTime_low});    return POSIX::strftime("%Y-%m-%d %H:%M:%S", localtime $unixtime);}sub PrintFile {    my ($self, $file)= @_;    printf("@%08lx %6d %s %s\n",         $file->{ulLoadOffset},         exists $file->{nRealFileSize}?$file->{nRealFileSize}:$file->{nFileSize},         filetimestring($file),         $file->{filename});}sub PrintFileList {    my ($self)= @_;    $self->PrintFile($_) for (@{$self->{files}});    $self->PrintFile($_) for (@{$self->{modules}});}sub ParseRomHdr {    my $self= shift;    my $data= shift;    my @fields= unpack("V17v2V3", $data);    my @names= qw(dllfirst dlllast physfirst physlast nummods ulRAMStart ulRAMFree ulRAMEnd ulCopyEntries ulCopyOffset ulProfileLen ulProfileOffset numfiles ulKernelFlags ulFSRamPercent ulDrivglobStart ulDrivglobLen usCPUType usMiscFlags pExtensions ulTrackingStart ulTrackingLen);    return  {        desc=>sprintf("romhdr : %s", join ", ", map { sprintf("%s:%08lx", $names[$_], $fields[$_]) } (0..$#names)),        map { ( $names[$_] => $fields[$_] ) } (0..$#names)    };}sub ParseModulesList {    my $self= shift;    my $data= shift;    my @modules;    my $i;    for ($i= 0 ; $i<length($data) ; $i+=0x20) {        push @modules, ParseModuleEntry(substr($data, $i, 0x20), sprintf("module entry %d", $i/0x20));    }    if ($i!=length($data)) {        warn "uneven modules list\n";    }    return \@modules;}sub ParseModuleEntry {    my $data= shift;    my $desc= shift;    my @fields= unpack("V8", $data);    my @names= qw(dwFileAttributes ftTime_low ftTime_high nFileSize lpszFileName ulE32Offset ulO32Offset ulLoadOffset);    return  {        desc=>sprintf("%s : %s", $desc, join ", ", map { sprintf("%s:%08lx", $names[$_], $fields[$_]) } (0..$#names)),        map { ( $names[$_] => $fields[$_] ) } (0..$#names)    };}sub ParseFilesList {    my $self= shift;    my $data= shift;    my @files;    my $i;    for ($i= 0 ; $i<length($data) ; $i+=0x1c) {        push @files, $self->ParseFilesEntry(substr($data, $i, 0x1c), sprintf("files entry %d", $i/0x1c));    }    if ($i!=length($data)) {        warn "uneven files list\n";    }    return \@files;}sub ParseFilesEntry {    my $self= shift;    my $data= shift;    my $desc= shift;    my @fields= unpack("V7", $data);    my @names= qw(dwFileAttributes ftTime_low ftTime_high nRealFileSize nCompFileSize lpszFileName ulLoadOffset);    return  {        desc=>sprintf("%s : %s", $desc, join ", ", map { sprintf("%s:%08lx", $names[$_], $fields[$_]) } (0..$#names)),        map { ( $names[$_] => $fields[$_] ) } (0..$#names)    };}sub ParseCopyList {    my $self= shift;    my $data= shift;    my @list;    my $i;    for ($i= 0 ; $i<length($data) ; $i+=0x10) {        push @list, $self->ParseCopyEntry(substr($data, $i, 0x10), sprintf("copy entry %d", $i/0x10));    }    if ($i!=length($data)) {        warn "uneven copy list\n";    }    return \@list;}sub ParseCopyEntry {    my $self= shift;    my $data= shift;    my $desc= shift;    my @fields= unpack("V4", $data);    my @names= qw(ulSource ulDest ulCopyLen ulDestLen);    return  {        desc=>sprintf("%s : %s", $desc, join ", ", map { sprintf("%s:%08lx", $names[$_], $fields[$_]) } (0..$#names)),        map { ( $names[$_] => $fields[$_] ) } (0..$#names)    };}sub AddModuleHeaders {    my $self= shift;    my $module= shift;    my $rom= $self->{rom};    my $mem= $self->{mem};    if (!defined $self->{rom_type}) {        $self->{rom_type}= determine_rom_type($rom->GetVData($module->{ulE32Offset}, 0x70));    }    if ($self->{rom_type}==5) {        $module->{e32}= ParseE32Header_v5($rom->GetVData($module->{ulE32Offset}, 0x6e));        $mem->vadd($module->{ulE32Offset}, 0x6e, "e32 header %s", $module->{filename});    }    elsif ($self->{rom_type}==4) {        $module->{e32}= ParseE32Header_v4($rom->GetVData($module->{ulE32Offset}, 0x6a));        $mem->vadd($module->{ulE32Offset}, 0x6a, "e32 header %s", $module->{filename});    }    else {        die "unknown romtype $self->{rom_type}\n";    }    for my $objidx (1..$module->{e32}{objcnt}) {        push @{$module->{o32}}, ParseO32Header($rom->GetVData($module->{ulO32Offset}+($objidx-1)*0x18, 0x18));    }    $mem->vadd($module->{ulO32Offset}, 0x18*$module->{e32}{objcnt}, "o32 headers %s", $module->{filename});}sub determine_rom_type {    my @f= unpack("V*", shift);    if ($f[8] < $f[5] && $f[26]>0) {        return 4;    }    else {        return 5;    }}# with extra timestamp field!sub ParseE32Header_v5 {    my $data= shift;    my @fields= unpack("v2V2v2V5V18v", $data);    my @names= qw(objcnt imageflags entryrva vbase subsysmajor subsysminor stackmax vsize sect14rva sect14size timestamp EXP_rva EXP_size IMP_rva IMP_size RES_rva RES_size EXC_rva EXC_size SEC_rva SEC_size FIX_rva FIX_size DEB_rva DEB_size IMD_rva IMD_size MSP_rva MSP_size subsys);    return  {        map { ( $names[$_] => $fields[$_] ) } (0..$#names)    };}sub ParseE32Header_v4 {    my $data= shift;    my @fields= unpack("v2V2v2V4V18v", $data);    my @names= qw(objcnt imageflags entryrva vbase subsysmajor subsysminor stackmax vsize sect14rva sect14size EXP_rva EXP_size IMP_rva IMP_size RES_rva RES_size EXC_rva EXC_size SEC_rva SEC_size FIX_rva FIX_size DEB_rva DEB_size IMD_rva IMD_size MSP_rva MSP_size subsys);    return  {        map { ( $names[$_] => $fields[$_] ) } (0..$#names)    };}sub ParseO32Header {    my $data= shift;    my @fields= unpack("V6", $data);    my @names= qw(vsize rva psize dataptr realaddr flags);    return  {        map { ( $names[$_] => $fields[$_] ) } (0..$#names)    };}sub DumpFilesAreas {    my $self= shift;    for my $file (@{$self->{files}}) {        my $desc= $file->{filename};        $self->{mem}->vadd($file->{ulLoadOffset}, $file->{nCompFileSize}, (($file->{dwFileAttributes}&0x800)?"compressed ":"")."file data %s", $desc);        $self->{mem}->vadd($file->{lpszFileName}, length($file->{filename})+1, "file filename %s", $desc);    }}sub DumpModulesAreas {    my $self= shift;    my $mem= $self->{mem};    for my $mod (@{$self->{modules}}) {        my $desc= $mod->{filename};        $mem->vadd($mod->{lpszFileName}, length($mod->{filename})+1, "module filename %s", $desc);        for my $o32ent (@{$mod->{o32}}) {            my $l= $o32ent->{psize}; $l= $o32ent->{vsize} if ($o32ent->{vsize}<$l);            $mem->vadd($o32ent->{dataptr}, $l, 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区四区五区 | 国产一区二区三区免费在线观看| 亚洲综合激情另类小说区| 亚洲一区免费在线观看| 天天色综合成人网| 国产尤物一区二区在线| www.亚洲在线| 欧美在线观看一二区| 日韩视频免费观看高清完整版 | 美女被吸乳得到大胸91| 国产成人99久久亚洲综合精品| 一本到一区二区三区| 日韩欧美一区电影| 亚洲精品中文在线影院| 国产自产2019最新不卡| 欧美三级中文字幕在线观看| wwwwww.欧美系列| 一区二区三区中文免费| 国产成人三级在线观看| 欧美日韩美少妇| 自拍偷拍国产精品| 国产精品一区久久久久| 制服丝袜国产精品| 午夜精品aaa| 欧美性受xxxx| 亚洲综合无码一区二区| 97久久超碰精品国产| 国产欧美日韩亚州综合| 国产一区二三区| 欧美一区二区三区日韩视频| 亚洲欧美一区二区三区国产精品 | 亚洲最色的网站| 风流少妇一区二区| 中文字幕欧美日韩一区| 久久99国产精品久久99| wwww国产精品欧美| 国产成人av在线影院| 国产丝袜欧美中文另类| 精品影视av免费| 国产午夜精品久久久久久久| 九九精品视频在线看| 久久亚洲二区三区| 成人免费毛片aaaaa**| 中文字幕一区二区不卡 | 亚洲免费观看高清完整版在线观看熊| 国产精品亚洲成人| 亚洲精品视频在线观看免费| 欧美性色欧美a在线播放| 日本亚洲三级在线| 久久久久成人黄色影片| 在线视频国产一区| 久久99久久99| 亚洲激情图片qvod| 日韩三级视频中文字幕| 成人免费的视频| 亚洲福利电影网| 国产视频一区二区在线| 在线观看亚洲成人| 国产一区二区91| 亚洲一区二区三区国产| 久久久亚洲精品一区二区三区| 丁香桃色午夜亚洲一区二区三区| 亚洲精品成人a在线观看| 日韩精品一区二区三区老鸭窝| 经典三级视频一区| 亚洲成人激情综合网| 亚洲色图在线播放| 国产精品视频看| 欧美大片在线观看一区| 欧美日韩高清不卡| 欧美中文字幕亚洲一区二区va在线 | 亚洲综合一区二区| 自拍偷拍亚洲综合| 国产精品久久夜| 久久久99精品久久| 欧美va日韩va| 精品国产乱码91久久久久久网站| 欧美精品一卡二卡| 欧美性xxxxx极品少妇| 在线免费观看视频一区| 色伊人久久综合中文字幕| 粉嫩高潮美女一区二区三区 | 2020国产精品自拍| 国产欧美精品在线观看| 亚洲国产精品成人综合色在线婷婷| 日韩免费看网站| 欧美极品另类videosde| 久久久久97国产精华液好用吗| 国产亚洲一二三区| 最新国产精品久久精品| 亚洲欧美日韩一区二区| 亚洲在线免费播放| 久久99日本精品| 国产福利一区二区三区视频在线| 风间由美一区二区av101| 色综合久久久久网| 日韩一级在线观看| 久久久精品免费网站| 亚洲精品国产品国语在线app| 香蕉久久夜色精品国产使用方法| 美女任你摸久久| 99久久婷婷国产精品综合| 色综合色狠狠天天综合色| 欧美日韩成人在线| 欧美国产1区2区| 美国一区二区三区在线播放| 99久久久无码国产精品| 欧美久久一区二区| 一区二区三区影院| 国产成人免费av在线| 欧美四级电影网| 日本一二三不卡| 国产乱妇无码大片在线观看| 69堂国产成人免费视频| 亚洲免费资源在线播放| 高清在线观看日韩| 久久这里都是精品| 激情深爱一区二区| 91精品国产丝袜白色高跟鞋| 樱花影视一区二区| 99久久精品免费看国产| 国产欧美日韩视频在线观看| 久久 天天综合| wwwwxxxxx欧美| 国产精品99久久久久久久女警 | 精品综合免费视频观看| 欧美老年两性高潮| 日韩1区2区3区| 欧美日韩精品久久久| 午夜精品一区二区三区三上悠亚| 99vv1com这只有精品| 亚洲一区二区三区四区的| 日本电影亚洲天堂一区| 亚洲综合激情小说| 3d成人h动漫网站入口| 国模娜娜一区二区三区| 国产日韩精品一区二区三区| 不卡视频在线观看| 一区二区成人在线视频| 欧美疯狂性受xxxxx喷水图片| 视频一区二区三区中文字幕| 日韩欧美一区二区久久婷婷| 粉嫩一区二区三区在线看| 亚洲欧洲av另类| 日韩欧美成人一区二区| 成人黄页在线观看| 首页国产丝袜综合| 久久精品视频一区二区三区| 欧美影片第一页| 国产一区二区三区不卡在线观看 | 欧美视频日韩视频在线观看| 秋霞电影网一区二区| 国产精品美女久久福利网站| 精品污污网站免费看| 国产曰批免费观看久久久| 中文字幕一区二区三区不卡| 7777精品伊人久久久大香线蕉| 成人av资源在线| 国内精品久久久久影院色| 一区二区三区久久| 欧美极品少妇xxxxⅹ高跟鞋| 日韩欧美一级特黄在线播放| 欧美影视一区在线| 91免费观看在线| 东方欧美亚洲色图在线| 精品无人区卡一卡二卡三乱码免费卡| 亚洲人成小说网站色在线| 国产片一区二区三区| 精品成人佐山爱一区二区| 日韩免费视频一区| 欧美高清性hdvideosex| 欧美久久高跟鞋激| 欧美丰满少妇xxxxx高潮对白| 欧洲av一区二区嗯嗯嗯啊| 91网站在线播放| 欧美亚洲综合久久| 欧美人与z0zoxxxx视频| 欧美日韩一区二区三区四区五区| 欧美体内she精高潮| 欧美日本一区二区在线观看| 7777精品伊人久久久大香线蕉完整版| 91免费观看在线| 制服视频三区第一页精品| 日韩一区二区三区电影| 精品久久久久久综合日本欧美| 久久久亚洲国产美女国产盗摄| 中文字幕欧美区| 亚洲综合自拍偷拍| 蜜桃91丨九色丨蝌蚪91桃色| 国产伦精品一区二区三区免费| 国产一区二区剧情av在线| 成人美女视频在线观看18| 在线中文字幕不卡| 日韩三级伦理片妻子的秘密按摩| 久久美女高清视频| 亚洲线精品一区二区三区八戒| 蜜臀av性久久久久蜜臀av麻豆| 岛国一区二区三区| 日韩三级电影网址| 亚洲精品国产一区二区三区四区在线 |