FC2ブログ

記事一覧

SandBurst開発記録 ⑨

■ 更新 ■


SandBusrtを1.00から1.01に更新しました。

  ・サムネイルのサイズがズレていたのを修正
  ・オプションに「ウィンドウサイズを変更する」を追加
  ・ウィンドウサイズがゼロのウィンドウは取得しないように変更
  ・最小化されたウィンドウは拡大、停止できないように変更

更新内容はこの4つです。64bit対応はまだです。

ダウンロードはこちら
http://www.vector.co.jp/soft/winnt/game/se512157.html


■ 64bit 対応への道 APIフックの変更 ■

SandBurstはkernel32.dll、user32.dll、gdi32.dll の3つのカーネルモジュールの実行コードを書き換えることで
APIフックを行っています。これにはアセンブラが絶対に必要です。

が、VisualC++だとx64プログラムではインラインアセンブラが使えませんでした。
これは痛い


またx86ではJMP命令は

   JMP 任意のアドレス

で、この命令は5byteだけで出来ましたが、x64だと64bit版のこの命令はありません。そのため

  MOV RAX, 64bitアドレス
  JMP RAX

こんな風になると思います。
が、この命令だと12byte必要になります。
これだ大きい命令だと修復できないコードまで改ざんが及んでしまうため、
カーネルモジュールの書き換えによるAPIフックは現実的ではありません。


そんなわけでAPIフックをIATの書き換えに変更します。
スポンサーサイト

コメント

コメントの投稿

非公開コメント