dampee v0.3.1.6 公開


v0.3.1.6[2008/01/20]
起動引数に/ejectを付けると、プロセスに注入した監視DLLを除去し、終了するようにした。
監視APIにCreateServiceA/W, LoadLibraryA/W, LoadLibraryExA/W, GetProcAddressを追加。
CreateRemoteThreadをフックし、外部プロセスにフックした関数のアドレスを実行させてエラーになるバグを修正。

色々と強化。安定度も増したんじゃないかな?
GetProcAddressとかしなアカンのは分かってたけど、後回しにしてたので今回それに手を付けた。
こことか参考にさせて頂きました。
CreateRemoteThreadは、なるほどー!!って感じで、やってみたらバグらなくなったのでびっくり。

ダウンロード


4 Responses to “dampee v0.3.1.6 公開”

  1. egggarden Says:

    はじめまして、egggardenと申します。
    生まれて初めてトラックバックを受けたのが嬉しくて飛んできました。
    記事を参考にしていただいたようで何よりです。

    IATの改竄はGetProcAddressをフックしないと満足に機能しないのですが、
    これをフックするとプロセス間のメモリ共有を利用しているときが面倒ですよね。
    CreateRemoteThreadさえ見ておけば大体はOKなんですが、
    GetProcAddressの戻り値を含む構造体をWriteProcessMemoryしている場合なんかはどうにもならなかったり。

    凄いアプリを作られていますね。
    dampeeのようなものは過去に作ろうとしたとはありますが、
    面倒で投げてしまいました(こんなの作れるようになりたい…)。
    ところで、ちょっと試したところ障害が出てたっぽいので掲示板のほうに投げておきました。
    ご確認いただけると幸いです。

  2. Noradaiko Says:

    ををををを。はじめまして!
    有用な情報ありがとうございます。
    俺はトラックバックしてばっかりで、まだされた事ないです笑

    プロセス間のメモリ共有まで考えてなくて、なんでたまに不安定になるんだろうと考えあぐねていたところでした。
    GetProcAddressの戻り値を含む構造体を別プロセスに渡すなんてことは、そうあるものなんでしょうか??

    作り出したら止まらない性格なので、満足できるまでやってしまいます。笑
    C++の経験は浅いのですが、作りながら勉強してます。システム関係の知識もほとんど無いので、難しかったです。
    デバイスドライバも色々コピペしまくったし・・笑
    egggardenさんはそこら辺強そうですね。
    掲示板の報告ありがとうございます!確認させて頂きます。

  3. egggarden Says:

    >GetProcAddressの戻り値を含む構造体を別プロセスに渡すなんてことは、そうあるものなんでしょうか??
    実装される頻度はあまり無いかもしれませんが、手法としては割と知られたものだと思います。
    http://japan.internet.com/developer/20050830/26.html
    で紹介されている3番目の実装がこのアプローチです。
    1リモートスレッドで複数の処理が必要な場合もこのやり方になりますね。
     ex:リモートLoadLibraryの失敗時に続けてGetLastErrorを実行させたいときとか

    ではまた

  4. Noradaiko Says:

    なるほどー!!
    CreateRemoteThreadでリモートで呼び出せる関数は、引数が一つだけのもののみと思っていましたが、二つ以上でも可能だったんですね。
    ありがとうございますm(_ _)m

Leave a Comment