OllyDbg 2 Plugin インターフェイス変更点 その1 (2.01a4 暫定版)

暫く前になりますが 8月3日にリリースされた OllyDbg 2.01 alpha 4
でついにプラグインサポートが追加されました。
やはりプラグインあってこその OllyDbg ですよね。


ただ、現時点ではビルド済みのBookmarkプラグインのDLLとソースコード
ヘッダが置いてあるだけで、まだ完全なPDKでは無いようです。(.defファイルも無し)
ドキュメント無しでプラグイン書くのはマゾ的な記述が有ったりするので、
普通に開発する人は正式版PDKのリリースを待った方が無難だと思います。
取りあえず、付属のBookmarkプラグインを再コンパイルしてみるだけでも大変でした。


物はこの辺から拾えます。


残念な事に OllyDbg 1.10 のプラグインとの互換性は無くなっています。
似たような構造にはなっていますが、OllyDbg 1.10とImmunity Debuggerの様な
近さではないのでコンバータで変換するのは、事実上無理だと思います。
(不可能では無いかもしれませんが、そこまでがんばる人いるかなぁ)


弄っていて目に付いた変更点は以下の通りです。
2.01a4を元にしているので、次のバージョンでは変わってるかもしれませんがあしからず。

  • UNICODEビルド必須
    • デバッガとやりとりする文字関係はすべてワイドキャラクタに変更
  • エクスポートされている関数の追加、削除
    • 消えた関数多数、更に物によってstdcallとcdecl混在 (なぜ混ぜた...)
    • 同じ名前で残っていてもフラグやデフォルトの動作が変わってる物がある感じ
    • デバックビルドだからなのか見えてはいけないシンボルも見えてるような気も
  • プラグイン側でエクスポートするコールバック関数の変更
    • 中身も変わってる関数多数(メニューや初期化周りなど)
  • defineや構造体の変更
    • t_memory.sect => t_memory.sectname 等
  • Plugingetvalue廃止
    • 関数経由の取得から直接値がエクスポートされるように変更


と、こんな感じでソースコードがあったとしてもそのまま再コンパイルして動く
程度の変更では無くなっています。きっちりTCHARとか使って書いてた人は
インターフェイス変わった部分だけ追従すれば良いですが、ほとんどの人は
まずマルチバイト/ワイドキャラクタ対応部分から必要になるんじゃないかと思います。