SSブログ

GavotteRamdiskの解析 [ドライバ開発]

GavotteRamdiskが中国のサイトを使っているのを見て、ネトウヨの自分は同じ機能を自分で作れないかとちょっと調査してみた。

まず、ベースとなっているのはWDKに入っているRamdiskドライバのソースなのは間違いない。

標準のRamdiskドライバはメモリをExAllocatePoolWithTagを使っている。これだと目的とする3GB越えの場所のメモリを取得できない。
そこで、MmAllocatePagesForMdlを使っているっぽい。これは物理メモリからMDLを作成するもので、これで得たアドレスをMmMapLockedPagesSpecifyCacheなどでアクセスできるようにしているようだ。

http://msdn.microsoft.com/en-us/library/ff554482(VS.85).aspx
PMDL MmAllocatePagesForMdl(
__in PHYSICAL_ADDRESS LowAddress,
__in PHYSICAL_ADDRESS HighAddress,
__in PHYSICAL_ADDRESS SkipBytes,
__in SIZE_T TotalBytes
);

とのことなので、物理アドレスさえわかっていれば使えるようだ。
またSkipBytesに4GB上限をいれている節がある。
Ramdiskの問題としては、電源をオフにすると消えてしまうので、有料版のRamPhantomではその点を強化している。

ExAllocatePoolWithTagの変わりにするだけでいけるならお手軽だなと思いつつ、手軽なデバッグ環境がないので、あくまで調査で終わり。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。