人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

COMライブラリを使用しているアプリケーションをリバースエンジニアリングしたいのです。あるトレードの執行ソフトなのですが、APIが公開されておらず、これ自体がコアのCOMを使用したアプリケーションです。やりたい事は、このクライアントアプリとCOMの間の通信を解析して、外部アプリケーションからそのCOMにオーダーの信号を送ったり、情報、イベントを取るという事です。http://www.topshareware.com/DrCOM-Monitor-download-5364.htmこのソフトがリアルタイムにその挙動をトレースしているようなのですが、まだ不十分です。アプリ-COM間の細かい内容を解析したり、実際に意図したメッセージをCOMに送信してみたりできるようになるのでしょうか?いわゆるCOMの乗っ取り、hackなのですが、この辺り詳しい方、ツール、勉強のソース、アドバイスいただけたら幸いです。

●質問者: kenokabe
●カテゴリ:コンピュータ
✍キーワード:API アドバイス アプリ アプリケーション イベント
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● kiichigo
●10ポイント

http://www.chiyoclone.net/details.html#listexp

ちよクロシステム

DLLをラップしてログをとってみるとか


2 ● える
●10ポイント

http://homepage1.nifty.com/emk/vmselect.html

Java VM Selector for IE v0.91

自分の日記のリンク元に?があったので気興味を持って開いてみると、まだ回答できるようなので...回答するのは初めてなので不手際があったら申し訳ありません。

URL は C++ ですが、Internet Explorer から起動される Microsoft VM を Java Plugin の Java VM に置き換えるというものです。

目的とする COM コンポーネントがブラウザで閲覧できるということですので、目的とするコンポーネントが持つ COM Interface も判明していることと思います。

このような置き換え手法を利用することで、「アプリケーション⇔自作COMオブジェクト⇔本物のCOMオブジェクト」というメソッド呼び出しの関係を作成することは容易であることはわかりますか?

この時点で「どのメソッドがどの順番で呼び出されるか」というアプリケーション操作と時間軸の対応、そしてそれに伴うすべての引数の実値を確認するのは容易ですよね。

http://www.microsoft.com/japan/msdn/net/bda/cominterop.asp

ご指定のページが見つかりません

次のURLは .NET ⇔ COM に関する文章です。

C# を利用されているということですので、このような仕組みの助けを借りなければ .NET の世界と COM の世界は接続しません。

そして、この文章から単純に C# だけによって前述のような CoClass オブジェクトの置き換えは実現できないということがわかると思います。

もし、開発環境として .NET Framework SDK ではなく Visual Studio.NET や Visual C#.NET といった製品を利用されているならば、C++ コンパイラが付属していると思いますので、C# でできない部分だけ……もしくはすべて……を C++ で記述することになるかと思います。

(当然、他の開発環境……Delphiとか……があれば、それでも問題ありません)

http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=5859

また、C# によって前述のようなメソッド呼び出しの関係を作成すると、COM(CLIENT)⇔CCW⇔.NET⇔RCW⇔COM(SERVICER) というような関係になります。

3番目の URL は、そのような状況に関するやり取りです。

以上、参考になれば。


3 ● aki73ix
●50ポイント

http://www.wakhok.ac.jp/~tetsuo/delphi/text/chap_a/pb_a03.html

APIの公開されていないCOMオブジェクトであっても

VCやBCBでActiveXの取り込みを行うことで関数や、定数を取り込むことがで来ます

それを利用してサンプルプログラムを作って見てはいかがですか?

◎質問者からの返答

回答ありがとうございます。

今C#.netを使っていて、そのCOMはオブジェクトブラウザですべてクラスは閲覧できます。それを利用して0からある程度動くものを自作しようと心見ましたが、ものが複雑でSDKのドキュメントなしでは無理です。私が要望しているのは、静的なCOMのクラスビューとかではなく、リアルタイムで現行のアプリケーションがどういうデータのやり取りをしているかトレースできるものです。

また、内容が解析できたとして、そこに外部のアプリケーションが信号を挿入する事は可能なのか?という事も識者の方にご教授していただければありがたいです。


4 ● くいっぱ
●50ポイント

http://www.st.rim.or.jp/~k-kazuma/SI/SI521.html

私の得意技:逆アセンブルしながら処理内容を解析

リバースエンジニアリングは通常禁止されています。ま、それはおいて置いて。隠しAPIとのやり取りを探るというような事でよろしいでしょうか?

例えばMS系の開発ツールで言うと、

Dependency Walkerなどで、どのCOMを参照しているかを確認し、spy++などのツールでプロセスやクラスを確認することによりある程度の内容はわかったりしますが…。

逆アセンブルのプロはURLみたいな手順を踏むみたいです。

◎質問者からの返答

ありがとうございます。非常に参考になります。

隠しAPIというかはよくわかりませんが、とりあえず、複数のDLLファイルがEXEと同じフォルダにあって、VSのオブジェクトブラウザでクラスの一覧は参照できます。ある動作、たとえばあるオーダーを執行したときに、どういうデータがどのCOMへどのような信号を送っているのか解析して、外部のアプリケーションからその動作をエミュレートし、その挙動は外部アプリからコントロールできるようにする、といった事が目的なのですが、このエミュレートという部分が可能なのか?という疑念もあります。引き続き詳しい方のアドバイスをお待ちしております。


5 ● くいっぱ
●50ポイント

http://d.hatena.ne.jp/ladybug/200312

is BUG ready ?

ん〜。前のレスを見て…。

ようするにイベントをハンドリングしたいだけかな?とか思うのですが…。

C#さわったことないので、詳しく検索できませんでした。おそらくこの手の情報であれば、リーバスエンジニアリングなどのような言葉で探すのではなく、ハンドリングとかキャプチャリングで、C#コミュニティで聴いてみた方がサンプル等あって判りやすいかと思います。

http://www.antoine.st/EventFromVisualBasicComponent.html

Event From Visual Basic Component

てきとうに…。C#ハンドリングでひっかかったサイトをご紹介。

http://bbs.wince.ne.jp/ch1/mqbbs.cgi?UMODE=BETA&FILE=bbs.log.95

例えばイベントをハンドリングして、COMに送る前に情報を受け取って、加工してから、Sendmaseageで、おくっちゃうなんてやり方もできると思いますよ。

…関数仕様がわからないとキツイか…。

◎質問者からの返答

図にしてみると

既存アプリケーション-----COM

自作アプリ-----」

のようにCOMを共有して処理をわりこませたいということです。NETでターゲットのCOMを参照すると、自分のディレクトリにコピーを置いているのでイベントも読めないようです。まずはこの共有COMとかいうところから調べていかないとだめかなとか思っています。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ