タグ

dllに関するrydotのブックマーク (4)

  • メモリからDLLを読み込んでみる - Snoozy

    メモリからDLLを読み込んでみる DLL(dynamic link library)は通常、Windows APIのLoadlibraryやLoadlibraryEXを使ってディスク上から読み込んで使用する。 このLoadLibraryやLoadLibraryExは、ファイルシステム上のファイルでのみ機能し直接メモリからDLLをロードすることはできない。またこれを端的に実現できる公式のWindows APIも存在しない。 メモリからDLLを読み込むには疑似的なPEローダーを実装する必要がある。 ゲームやマルウェアの開発者は、解析難度の向上やアンチウイルスソフトによる検出回避を狙ってしばしばこういった手法をとることがある。 この記事では、メモリからDLLを読み込むために必要なPEファイルの構造について簡易に解説した後、以下のリポジトリを参考に実際にメモリからDLLを読み込ませてみる。 git

    メモリからDLLを読み込んでみる - Snoozy
    rydot
    rydot 2020/02/08
  • COM (Component Object Model)

    古いが未だに使われ続けるCOM (Component Object Model)ですが、今の最新の環境(Visual Studio 2008)で開発しようとすると、世の中にある情報が古く結構混乱します。また、COMの作成の仕方としてもATLを使う方法とMFCを使う方法、さらにDLL形式とEXE形式がありますが、これもさらに混乱する原因になっています。 ですので、ここでは、ATLやMFCを使わずに、Visual Studio 2008上でDLL形式のCOMを作成する方法について説明します。 もし、以前にCORBA、EJB、RMIやWebサービス等を開発したことがあるのなら、COMの構造はそれほど難しくありません。 まず、COM IDLですが、COMのインターフェイスを定義するテキストファイル(拡張子.idl)です。CORBAですと同じようにIDLがあります。EJBやRMIの場合、リモートイン

    rydot
    rydot 2010/09/10
  • VikiWiki - RubyでWindowsアプリ

    Ruby からDLLを呼ぶ DLLを作る http://www.angel.ne.jp/~mike/vb_dll/index.htmlなどを参照してDLLを作る。 DLLを呼ぶ require 'dl/win32' t=Win32API.new('test.dll','fncSub',['i','i'],'i') p t.call(1,5) のようにすると上でつくったDLLを呼べる。['i','i']は引数の型、'i'は戻り値の型を表す。 Win32APIを呼ぶ 同じようにuser32.dllを指定すれば呼べるのだが、ちょっと複雑なことまでサポートしようとすると 以下のようにしたほうが幸せかも。 require 'dl/win32' require 'dl/import' User32 = DL.dlopen("user32") #メッセージボックスを表示するだけ。 mb= User32[

    rydot
    rydot 2010/02/19
  • らっしーうぃき - Ruby/DLをWindowsで使う

    Ruby/DLとは? ダイナミックになんでもかんでもリンクして見ようってヤツ。 スタティックじゃーないよ。 なんでWindows? Win32API.soじゃ不満だから。 最大の理由はcallbackがWin32APIでは使えないみたい。 callbackがなければWin32APIで十分なことが多いです。 テクニック 全ての子Windowのハンドルを手に入れる。 子Windowを手に入れる場合はGetWindowを使う手段がある。 しかし、GetWindowは全ての子Windowを列挙するには向かない。 既に破棄されたWindowを呼び出したり、無限ループに陥る可能性があるからだ。 そこで列挙する場合はEnumChildWindowsを使う事が推奨されている。 詳しくはMSDNライブラリを参考。 EnumChildWindowは次のようになっている。 BOOL EnumChildWindo

  • 1