>
http://jet.breeze.jp/program/tips/forceimp.htmの記事を書いた当事者です。
| EXTERN_C BOOL WINAPI _imp__IsDebuggerPresent(void)
| { return FALSE; }
だけでは問題があることを、こちらでも確認しました。
理由としては、もともと「__imp__IsDebuggerPresent@0」(装飾済み)は関数ではなく変数であり、例えば CRT が IsDebuggerPresent を呼び出す、invarg.c 171行目
| wasDebuggerPresent = IsDebuggerPresent();
では、アセンブラは「変数 __imp__IsDebuggerPresent@0」から関数アドレスを取得して実行していることが分かりました。
そこで新しい回避コードを作成しました。上記のページに更新してあるのでそちらを利用してください。なお、新しいコードは Windows 95 でもテスト(呼び出しテスト)をしているので大丈夫だと思われます。
お手数かけますがよろしくお願いします。