3

この質問に似た答えを探していますが、7zipではなくWinRARを探しています。基本的に、少なくとも「バージョン420のデフォルトSFXファイルで作成されたすべてのWinRAR生成自己解凍型実行可能ファイルは、位置0x00027400にバイト0x15、0xa1、0x45、0xcc、0x21、0x98、およびその他の非SFXファイルにこの署名が付いている可能性は低いです。」さらに良いことに、WinRAR SFXファイルのすべてのバージョンで同じ署名が見つかった場合、それらが異なる場所にある場合でも同様です。

SFXの動作の性質上、ファイルのアーカイブ部分を除いて、それらは非常に似ていますが、一部の文字列は不十分な識別子になります(たとえば、「このプログラムはDOSモードで実行できません」はすべてのSFXにありますが、他のほとんどのWindows実行可能ファイルにもあります)

現在、署名を決定する私の方法は、WinRAR SFXのさまざまなバージョンを調べて、すべてのファイルに共通する4バイトまたは6バイトのシーケンスを見つけることです。残念ながら、これらはたくさんあり、1つを選ぶのは難しいです。

4

2 に答える 2

2

WinRARインストールフォルダのTechNote.txtから:

  1. SFXアーカイブを処理するには、アーカイブ内のマーカーブロックを検索するSFXモジュールをスキップする必要があります。SFXモジュール自体にはマーカーブロックシーケンス(0x52 0x61 0x72 0x21 0x1a 0x07 0x00)はありません。

これはあなたがすでにあなた自身に示したものです:unrarソースコードはarchive.cppにそれがファイルをどのように読み取るかというコードを持っています。SFXパーツの最大サイズは、rardefs.hppで定義されている数より大きくなることはありません。

#define  MAXSFXSIZE        0x100000
于 2012-11-08T22:04:19.923 に答える
0

私がそれを正しく持っているなら、あなたはファイルを調べて、それがWinRARで構築された有効なSFXファイルであるかどうかを確認したいですよね?

この場合、これらは検索する必要のあるPE署名です(まだ試していませんが、下部にリンクされているPE sig DBにリストされています)。

WinRAR-SFX = 80E9A1C1C11368E4167546C1C1055EEB019D6864863746EB028CE05FF7D0 WinRAR-SFX = EB0102EB02CD20B880

エントリポイントを取得して、これらのバイトが正しい順序で続いているかどうかを確認してください。PE署名の広範なリストは、http://tot-ltd.org/packer.dbで入手できます。

于 2012-11-08T00:57:47.140 に答える