SQL Server2008プロセスに到着するクエリのインターセプトを調査しています。
SQLOSアーキテクチャは、次のシステムDLLに分割されています。
- sqlmin .dll :ストレージ、レプリケーション、セキュリティ機能など。
- sqllang.dll :TransactSQLクエリ実行エンジン、式の評価など。
- sqldk.dll :タスクのスケジュールとディスパッチ、作業スレッドの作成、メッセージループなど。
SQLSERVR サービスプロセスインスタンスSQLOSコンポーネントは sqlboot.dll および sqldk.dll を介して、ワーカースレッドはサーバー内の選択された接続方法(TCP / IP、ローカル共有メモリ、または名前付きパイプ)を介してクエリを受信します。
テキストクエリを検索するsqlservr.exeプロセスアドレス空間をデバッグしました。クエリ文字列は読み取り可能のようですが、SQLOSスケジューラに入るときにクエリが傍受される可能性のあるポイントを見つけることができませんでした。
パイプまたはTCP / IPをリッスンすることは現時点ではオプションではありません。より高いレベル、できればSQLOSコンポーネントレベルで注入したいと思います。
どこから調査を開始するかについて何か考えはありますか?