api hook 続き – プログラミング – Home

通知
すべてクリア

[解決済] api hook 続き


tenteku
 tenteku
(@tenteku)
ゲスト
結合: 15年前
投稿: 38
Topic starter  

http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+201108/11080004.txt

引き続き時間があるときにちょこちょことログを取得するソフトを作っています
フックしたいライブラリ関数がアプリ側で

class lib
{
private:
HINSTANCE m_instance;
typedef ...func();
...func* _func;

public:
lib()
{
m_instance = LoadLibrary();
if(m_instance)
_func = GetProcAddres(..
}
...Func(){ if(_func) _fucn() };
};

このようにアドレスを保存しそれを呼び出す形にしていた場合に
先にフックを仕掛ける側が起動していればLoadLibraryが改変されているため機能するの
ですが
仕掛けられる側が先に起動していた場合うまくフックがかけられないようです。
何かよい方法ありますでしょうか?
#多分今の実力では手が出せないのですが…


引用未解決
トピックタグ
ロマ
 ロマ
(@ロマ)
ゲスト
結合: 18年前
投稿: 170
 

「IATを書き換える」で検索すると色々出てくるようです。


返信引用
r
 r
(@r)
ゲスト
結合: 22年前
投稿: 48
 

Microsoft社の研究所が公開しているMS Detoursタイプのフックを使えばできます。
APIの先頭数命令をフックルーチンへの分岐命令で置きかえる手法です。
フックルーチンが終了すると置き換えた元の数命令を実行するtrampoline
ルーチンを経由して元のAPIの次の命令に分岐する仕掛け。

■論文
http://research.microsoft.com/pubs/68568/huntusenixnt99.pdf

■MS DetuorsおよびDetours類似のライブラリ
Microsoft Detuors(商用有償 US$ 10,000)
http://research.microsoft.com/en-us/projects/detours/

MinHook - The Minimalistic x86/x64 API Hooking Library(無償)
http://www.codeproject.com/KB/winsdk/LibMinHook.aspx

Powerful x86/x64 Mini Hook-Engine(無償)
http://www.codeproject.com/KB/system/mini_hook_engine.aspx


返信引用
tenteku
 tenteku
(@tenteku)
ゲスト
結合: 15年前
投稿: 38
Topic starter  

回答ありがとうございます。
まず提示のHPで勉強してわからなかったりうまくいかなかったら
よろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました