0

今日、私はEXEファイルからいくつかのバイトを削除しようとしています。

EXEの中に、EXEがロードする必要のあるファイルへのパスが見つかりました。パスを変更したいのですが、そのためにはいくつかの../../文字を削除する必要があります。それを行ってファイルを保存すると、アイコンが失われ、実行しようとすると「win32unknowformaterror」が表示されます。

これらのバイトを削除せずに、に置き換える0と、アイコンは失われず、ファイルは正しく表示されます。しかし、パスは正しくありません。

したがって、バイトを削除すると、リソース(アイコン)を含むファイル内の他の情報の位置が失われるように見えます。これらのバイトを削除した後、他のデータの同じサイズと位置を維持するために、他の6バイトを追加する必要があります。どこでやればいいですか?これらのバイトをファイルの最後に追加すると、機能しません。手がかりを教えていただけますか?ありがとう!

4

1 に答える 1

3

文字列の先頭から../../を削除した後、文字列の末尾に6つの0バイトを貼り付けます(手動で末尾を識別できると想定しています)。そうすれば、ファイル内のすべてのオフセットは同じままです。6バイトを完全に削除することにより、文字列の後のオフセットが変更されます。6バイトを0に置き換えると、文字列のオフセットが変更されます(+ 6の場合は実際になります)。

于 2012-06-11T22:16:43.297 に答える