スキップしてメイン コンテンツへ

 none
windows8以降でのファイル削除時に利用するAPIについて RRS feed

  • 質問

  • こんにちは初めて投稿致します。

    DLLインジェクションでファイルの削除を検知しようとしているのですが、

    windows7までとは異なり、DeleteFileA(W)をフックしてもファイルの削除が検知できません。

    これはwindows8から削除時に利用するWinAPIが変わったのかなと思ったのですが、

    そのあたりについてご存知でしたら教えて頂きたいです。

    ※kernel32.dllではなく、 API-MS-WIN-CORE-FILE-L1-2-0.DLL内のDeleteFile を対象に

     アドレス書き換えを行っていますが、検知できていません。

    宜しくお願い致します。

    2014年5月23日 9:16

回答

  • すみませんだいぶ遅くなってしまったのですが、 NT_OpenFile のパラメータで区別できることがわかりました。

    助言いただき、ありがとうございました。

    • 回答としてマーク supao 2014年9月22日 12:57
    2014年9月22日 12:57

すべての返信

  • DeleteFileW()の方はやってみましたか。
    2014年5月23日 9:30
  • 中澤さん

    ありがとうございます。DeleteFileAもDeleteFileWもどちらもやってみましたがだめでした。

    2014年5月23日 9:39
  • In Windows 8 deletes from cmd (i.e. "del foo") and deletes from the Explorer shell now open the file with FILE_FLAG_DELETE_ON_CLOSE and then close the handle.
    http://osronline.com/showThread.CFM?link=226825
    2014年5月23日 10:18
  • すみません遅くなりました。

    homeclosetさん

    CreateFileAもCreateFileWもフックしてみましたが、実行されていませんでした。そのため、FILE_FLAG_DELETE_ON_CLOSE が利用されているとは考えられないのですが、他に何か考えられますでしょうか。

    2014年5月24日 6:15
  • 「CreateFile が呼ばれなかった」から「FILE_FLAG_DELETE_ON_CLOSE が利用されているとは考えられない」に直結する根拠が不明なのですが。API フックのようなローレベルで危険なことをしようというのに、その程度の意識や調査でよいのでしょうか。

    2014年5月24日 7:03
  • HomeClosetさん

    FILE_FLAG_DELETE_ON_CLOSE はCreateFileのフラグでは無いのでしょうか。CreateFileのフラグであると考えたので、CreateFileが実行されるはずだと考えましたが、何か間違っておりますでしょうか。

    他のAPIも調べた方が良い、など調べ方などをもしご存知でしたらご教示頂けないでしょうか。

    2014年5月24日 7:10
  • uf /c cmd!FastDeleteFile
    2014年5月24日 7:34
  • 目的がハッキリしてないので返信するのもどうかと悩みましたが・・・。

    > DLLインジェクションでファイルの削除を検知しようとしているのですが、

    通常アプリのファイル削除ならば DelateFile API 使うはずと考えると ...

    検知したいのがシステム動作と予想すれば気持ちは判らなくないですが、そんな危険な手法を使わないほうが良いのじゃないですか?

    リバースエンジニアリングとまではいかないでしょうから禁止ではないでしょうが、セキュリティ強化や API 追加で動かなくなるのが普通に考えられますから ...

    個人的にシステムフックもだけど DLL インジェクションが一般的になるのもどうかと思う・・・。

    システム動作の検知がしたいなら Win 8 は結構そのあたりの API 追加されてますから変わって当然でしょうね・・・。


    2014年5月24日 15:10
  • Process Monitorでどのような呼び出し方をしているか眺めるとか。
    2014年5月24日 23:11
  • すみませんだいぶ遅くなってしまったのですが、 NT_OpenFile のパラメータで区別できることがわかりました。

    助言いただき、ありがとうございました。

    • 回答としてマーク supao 2014年9月22日 12:57
    2014年9月22日 12:57