2

これはばかげているように聞こえるかもしれませんが、次のことを行う方法を知りたいです。

.txt ファイルを作成しました。.txt ファイルの内容は、引用符のない「こんにちは」という単語です。したがって、.txt ファイルには 2 文字が含まれます。16 進エディタで .txt ファイルを開くと、「68」と「69」という 2 つの 16 進数のペアが表示されます。

Offset
00000000 68 69 hi

私がやりたいことは次のとおりです。「69」の 16 進数ペアを取得して、ハードディスク上の非常に特定のアドレスに配置したいと考えています。したがって、基本的には、バイトを取得して、ハードディスク上の非常に特定のアドレスに配置したいと考えています。

したがって、「68」はアドレスnに、「69」はアドレスn+1000000にある必要があります。

これはばかげた部分です。これを行った後、.txt ファイルのサイズを 2 バイトのままにして、メモ帳で .txt ファイルを開いて「こんにちは」という単語を表示できるようにしたいと考えています。これどうやってするの?

4

2 に答える 2

1

あなたが求めていることは、最新のオペレーティング システムとファイル システムが処理しようとしているすべてのものにほとんど反します。ディスク上のデータの文字どおりの場所とレイアウトは、意図的に抽象化されています。

ファイルシステムへの低レベルアクセスを取得する方法がおそらくどこかにあるでしょう。理論的には、ファイルの最初のバイトを 1 つのセクターに配置し、次にファイルの 2 番目のバイトを別のセクションに配置できる場合があります。ただし、これは、ファイルシステムが、ファイルがそこで終了することなく部分的に埋められる最初のセクターをサポートしていることを前提としています。また、これは、ユーティリティなどが登場せず、そのデータをまとめて圧縮しないことも前提としています。

一般的に言えば、そもそもそのようなことをしたいと思う理由はありません。私が想像できる唯一の理由は、これらの 2 バイトの間にデータを隠したいということです。文字通りのディスクに 1000000 バイト (またはいくつでも) を書き込むのと同じですが、実際にはファイルに最初と最後のバイトだけが存在すると OS に認識させます。そのため、通常の方法でファイルを表示する人は、真ん中に 999998 バイトが表示されることはありません。おそらく、特別に作成されたプログラムだけが、それらを取得する方法を知っているでしょう。

それが本当にあなたの目標である場合、それを行う方法があるかもしれませんし、ないかもしれません. その点に関して、他に具体的なアドバイスはありません。ただし、 TrueCryptのようなものと、ディスク上に暗号化された非表示のパーティションを作成する方法について調査することをお勧めします。

于 2010-08-16T20:20:10.070 に答える
1

起きていません。

ファイルシステムでは、同じセクター上のバイトにバイト位置を割り当てることはできません (通常 512 バイト)。

セクタにアラインされていないバイト位置を割り当てることができるファイルシステムはほとんどありません。

ほとんどのファイルシステムは、より大きなサイズのアロケーション ユニット (通常は 4096 バイト) を使用します。

于 2010-08-16T18:50:54.217 に答える