〜〜〜〜〜〜〜〜〜〜前提〜〜〜〜〜〜〜〜〜〜
ドライバファイル(sys)
※主要箇所のみ抜粋

/*APIフック*/
KeServiceDescriptorTable.ServiceTableBase(0xXXX) = 自作API;

/*サービステーブル書換*/
NewServiceTable = ExAllocatePool(NonPagedPool, (KeServiceDescriptorTable.NumberOfServices) * 4);
memcpy(NewServiceTable, KeServiceDescriptorTable.ServiceTableBase, (KeServiceDescriptorTable.NumberOfServices) * 4);
KeServiceDescriptorTable.ServiceTableBase = NewServiceTable;

〜〜〜〜〜〜〜〜〜〜問題〜〜〜〜〜〜〜〜〜〜
上記、プログラムをコンパイル/実行すると、『APIフック部分』でフックした
自作APIがよびだされる。
しかし、上記プログラムを実行した後、あるプログラム(以降、プログラムX)を実行すると、
APIフック部分でフックした自作APIが呼び出されずに、本物のAPIがよびだされる。
『サービステーブル書換』で、テーブルの書換えを行っているにもかかわらずだ。

ここで問題。
1.プログラムXは、どやって、本物のAPIのアドレスを取得しているのか?
2.プログラムXは、どやって、本物のサービステーブルのアドレスを取得しているのか?
以上、わかるやつは、かかってこい