home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

741 - 750 / 1320    [|<]  [|<]  [<]  71  72  73  74  75  76  77  78  79  80   [>]  [>|][>|]
タイトル/名前 更新者 更新日
C言語系/memos/VC++/07, DLLのエクスポート転送(forwarding) msakamoto-sf 2010-06-04 09:04:43
C言語系/memos/VC++/05, モジュール定義ファイル(".DEF")とDLLのエクスポート msakamoto-sf 2010-06-02 15:17:53
日記/2010/05/31/PEファイルのインポート情報を表示するPython(作りかけ) msakamoto-sf 2010-06-01 22:00:31
日記/2010/05/31/PEファイルをメモリ上に「仮」ロードするPython(作りかけ) msakamoto-sf 2010-05-31 23:44:03
Python msakamoto-sf 2010-05-31 23:34:37
読書メモ/「APIで学ぶWindows徹底理解」/Part1-Part5 msakamoto-sf 2010-05-26 11:19:31
日記/2010/05/26/IMAGE_SECTION_HEADERを覗いてみる。 msakamoto-sf 2010-05-26 10:51:02
日記/2010/05/25/IMAGE_OPTIONAL_HEADERを覗いてみる。 msakamoto-sf 2010-05-25 20:34:16
日記/2010/05/25/IMAGE_NT_HEADERSとIMAGE_FILE_HEADERを覗いてみる。 msakamoto-sf 2010-05-25 19:47:44
日記/2010/05/25/PEフォーマットのIMAGE_DOS_HEADERを眺めてみる msakamoto-sf 2010-05-25 19:28:39
ソート項目 / ソート順     1ページ 件ずつ表示

C言語系/memos/VC++/07, DLLのエクスポート転送(forwarding)  

所有者: msakamoto-sf    作成日: 2010-06-04 09:01:23
カテゴリ: C言語 Windows 

DLLにはエクスポートするシンボルの実体を別のDLLに転送(forward)する機能がある。例えばWindowsXP(SP3)上のKERNEL32.DLLのエクスポート情報を表示してみると、NTDLL.DLLへ転送されているシンボルがいくつか見つかる。

> dumpbin /exports c:\WINDOWS\System32\kernel32.dll
...
   708  2C3          RtlCaptureContext (forwarded to NTDLL.RtlCaptureContext)
   709  2C4          RtlCaptureStackBackTrace (forwarded to NTDLL.RtlCaptureStackBackTrace)
   710  2C5          RtlFillMemory (forwarded to NTDLL.RtlFillMemory)
   711  2C6          RtlMoveMemory (forwarded to NTDLL.RtlMoveMemory)
   712  2C7          RtlUnwind (forwarded to NTDLL.RtlUnwind)
   713  2C8          RtlZeroMemory (forwarded to NTDLL.RtlZeroMemory)
...

forwardingによるDLLの階層化やインポートライブラリの集約は、ライブラリやソースの構成・依存関係の整理に役立つだろう。

今回はモジュール定義ファイル(.def)を使ったDLLのforwardingを試してみる。

参考:

対象:Visual C++ 2008 Express Edition

> cl
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.
> link
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

なお動作確認は Windows XP SP3 上で行っている。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-04 09:04:43
md5:5bea9e7ec5953816800b282420e805b6
sha1:87562dcfb20524db9a809e091867073f0f9953d6

C言語系/memos/VC++/05, モジュール定義ファイル(".DEF")とDLLのエクスポート  

所有者: msakamoto-sf    作成日: 2010-06-02 14:26:32
カテゴリ: C言語 Windows 

DLL開発時に"__declspec(dllexport)"を使ってシンボルをエクスポートする例は C言語系/memos/VC++/04, Win32のEXE,LIB,DLL開発入門(C言語) 参照。
本記事では".DEF"ファイルを使ってシンボルをエクスポートする機能を試してみる。

参考MSDN(Express Edition):

  • 「Visual C++」→「C/C++ プログラムのビルド」→「C/C++ ビルドのリファレンス 」→「リンク」→「モジュール定義 (.def) ファイル 」

対象:Visual C++ 2008 Express Edition

> cl
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.
> link
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.
(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-02 15:17:53
md5:5c76218a6fbe51ab6cd7f56eb07b5023
sha1:06b3112b6a3db290f6b07d6ce45bb88d42b0055a

日記/2010/05/31/PEファイルのインポート情報を表示するPython(作りかけ)  

所有者: msakamoto-sf    作成日: 2010-06-01 21:29:02
カテゴリ: Python Windows 

日記/2010/05/31/PEファイルをメモリ上に「仮」ロードするPython(作りかけ) の続き。

とりあえずインポート情報("Import Directory" Data Directory)を元にIAT(Import Address Table)とINT(Import Name Table)を取り出すことが出来た。序数でimportしたのとか、"Bound Import Directory"やDelayed DLL Loading使ってるのは未対応。

IATをダンプ・・・といっても、OSにロードされていないPEファイルの状態では、アドレステーブルの内容はINTのコピーになっているので見ても面白くない。

さすがに解説を加えないと(後で自分自身が)理解不能になりつつあるので、ソースを載せた後、ポイントとなる部分だけ解説しておく。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-01 22:00:31
md5:cd1ee4b8fa8d9aea209256855f14697c
sha1:9f01e6ab1589ccc5a500787794c84e5be59495f5

日記/2010/05/31/PEファイルをメモリ上に「仮」ロードするPython(作りかけ)  

所有者: msakamoto-sf    作成日: 2010-05-31 23:38:07
カテゴリ: Python Windows 

作りかけ。

に出てくる、PEヘッダー情報を基にして、実際にPEイメージがロードされた時と同様なレイアウトで、ヘッダーやセクションデータをメモリ上にコピーする箇所だけとりあえず作ってみようとした。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-05-31 23:44:03
md5:53384ffd555b60cc357dab521a3d58c5
sha1:0b294893e72cbdd724245f30f13c6fa4470b03b4

Python  

所有者: msakamoto-sf    作成日: 2009-02-22 19:54:11
カテゴリ: Python 





プレーンテキスト形式でダウンロード
現在のバージョン : 5
更新者: msakamoto-sf
更新日: 2010-05-31 23:34:37
md5:90fa163df3f93ca890433ce5d998a046
sha1:43aad2ac42df590e3e85707702def31edd2762f8

読書メモ/「APIで学ぶWindows徹底理解」/Part1-Part5  

所有者: msakamoto-sf    作成日: 2010-05-19 23:24:53
カテゴリ: C言語 Windows 読書 

"APIで学ぶWindows徹底理解"のPart1 - Part5までの読書メモです。
この読書メモのスタンス、およびサンプルコードの入手については以下を参照して下さい。
読書メモ/「APIで学ぶWindows徹底理解」

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-05-26 11:19:31
md5:ffa2b9e35f57d4988413316a2f4c2a7c
sha1:943c8526efc1411558491f395a950c0fb0d10ac3

日記/2010/05/26/IMAGE_SECTION_HEADERを覗いてみる。  

所有者: msakamoto-sf    作成日: 2010-05-26 10:33:58
カテゴリ: Python Windows 

日記/2010/05/25/IMAGE_OPTIONAL_HEADERを覗いてみる。の続き。IMAGE_FILE_HEADER.NumberOfSectionsの数だけ、IMAGE_NT_HEADERSの後ろに存在するIMAGE_SECTION_HEADERを読み込む。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-05-26 10:51:02
md5:32448f8acd9fe7d33e0e7964debf84ed
sha1:039e583d2308de2adbecff408a6e211e9bc1a541

日記/2010/05/25/IMAGE_OPTIONAL_HEADERを覗いてみる。  

所有者: msakamoto-sf    作成日: 2010-05-25 20:29:21
カテゴリ: Python Windows 

これで、SECTIONヘッダーを除けば

> DUMPBIN /HEADERS foo.exe

と同じ情報をとれるようになった。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-05-25 20:34:16
md5:7a68193d19b78997ae3a525519bcc750
sha1:04bd2e5428cae793cead00692c4eac4c2d2412d3

日記/2010/05/25/IMAGE_NT_HEADERSとIMAGE_FILE_HEADERを覗いてみる。  

所有者: msakamoto-sf    作成日: 2010-05-25 19:37:40
カテゴリ: Python Windows 

PEフォーマットを覗いてみた。あとついでにPythonを忘れかけてたので復習。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-05-25 19:47:44
md5:a0e16ed93b359d1018ba523c2ac99d5b
sha1:8439078afcb396b544744bacd88ca03bf80c6bd9

日記/2010/05/25/PEフォーマットのIMAGE_DOS_HEADERを眺めてみる  

所有者: msakamoto-sf    作成日: 2010-05-25 17:42:36
カテゴリ: Assembler Python Windows 
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-05-25 19:28:39
md5:f30e53e43e8c1fd7c13773adab9b8571
sha1:389010c39d0f011afe0ff4e07668be588d4357c7