トップ «前の日記(2006-07-10) 最新 次の日記(2006-07-12)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2006-07-11

_ ASR-1.8.4.3

ダウンロードサイト
以下を更新
  • rjb-0.2.7
  • racc-1.4.5
  • Exerb-4.0.0 (CVSヘッドからリリース版へ更新)
以下を追加
  • RubyGems-0.9.0

RubyGemsはRakeのinstallができるところまでは確認済み。

Raccは未確認。

Exerbはexamplesが動くとこまで確認。

追記:だめぽ。gem.cmdなどをそのまま使ったためテスト用のパス(c:\home\ruby\bin)が埋められている。他のbin内起動スクリプト同様、batに再構成する予定)

_ ws2_32のすり替え

実はまだはまっているのです。

#こうなってくると正しくフェイクできていないに一票。

_ ASR-1.8.4.4

Gemのcmdを削除し、代わりにbatを配置。

Exerbの使い方がわからなくなることがあるので、readme.ja.html以下を含めてスタートメニューから参照可能にした。

JVN#83768862およびJVN#13947696への対応(CVSヘッドの適用)はASR固有の問題がありえるため週明けまでには行う予定です。

本日のツッコミ(全11件) [ツッコミを入れる]
_ NyaRuRu (2006-07-11 15:29)

>ws2_32のすり替え<br>こちらの状況ですが,Windows Vista build 5456 日本語版ではカレントディレクトリに置く方法で置き換えられないことを確認しました。<br>モジュールのロード順序はこんな感じです。<br>test.exe<br>ntdll.dll<br>kernel32.dll<br>user32.dll<br>gdi32.dll<br>advapi32.dll<br>rpcrt4.dll<br>ws2_32.dll<br><br>静的インポートの依存性グラフ解決で、rpcrt4.dll あたりから ws2_32.dll が引きずられているんですかねぇ?

_ NyaRuRu (2006-07-11 15:46)

追記。<br>うまく行っている XP SP2 環境でのロード順序は、<br>test.exe <br>ntdll.dll <br>kernel32.dll <br>user32.dll <br>gdi32.dll <br>(ローカルの)ws2_32.dll<br>(SxSの)msvcr80.dll<br>msvcrt.dll<br>(SxSの)msvcp80.dll<br>imm32.dll<br>advapi32.dll <br>rpcrt4.dll <br>(以下ロード直後は system32 の ws2_32.dll は読み込まれず)<br><br>こんな感じでした。<br><br>背景事情としてはこのあたりの話かと思いますが、再現可能な環境が手に入ったので、後で時間が取れたらもう少し詳しく見てみようと思います。<br>http://blogs.msdn.com/mgrier/archive/2005/06/18/430409.aspx<br>http://blogs.msdn.com/mgrier/archive/2005/06/18/430522.aspx

_ arton (2006-07-11 16:57)

どうもありがとうございます。<br>確かに、他のDLLに引っ張られている可能性だと思います。直接LoadLibraryしたら呼び出せました(が、これは目的とする動作ではないわけで)。

_ NyaRuRu (2006-07-11 18:23)

これは確かに SxS 使わないときつそうですな.<br>SxS 使ってそれらしいの作ってみました.ご参考までに.<br>http://d.hatena.ne.jp/NyaRuRu/20060711

_ arton (2006-07-11 19:09)

ありがとうございます。見てみます。

_ NyaRuRu (2006-07-15 21:49)

Vista build 5456 で,ws2_32.dll の置き換えが出来ない件ですが,Vista では KnownDLLs に ws2_32.dll が追加されていたためのようです.<br>最新の Dependency Walker は SxS Components もちゃんとチェックしてくれるので,exe を投げ込んで F9 を押して各 DLL のパスを確認してみる,というのが第一歩かもしれません.(manifest ファイルもちゃんと読んでくれます)<br>http://dependencywalker.com/

_ arton (2006-07-15 21:58)

ああ、ついにws2_32もKnownDLLなんですか。<br>Dependency Walkerのポインタ、ありがとうございます。

_ NyaRuRu (2006-07-15 22:17)

たびたび済みません.さらに追記です.<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs に登録された DLL より,Dependency Walker のオプションから見ることが出来る KnownDLLs にリストアップされたものの方が多いようです.<br>直感的には,Dependency Walker が表示しているリストには KnownDLLs が直接参照している DLL も含まれているように見えますが.<br>また,Vista の rpcrt4.dll (これはレジストリの KnownDLLs に含まれる) は,遅延ロードでですが ws2_32.dll を直接参照するようになっています(XP / 2003 のものはそうではありませんでした).こちらの環境で Vista にて違いが現われたのはこのためでないかと疑っています.

_ NyaRuRu (2006-07-15 22:20)

というわけで,Vista でもレジストリの KnownDLLs には依然として ws2_32.dll は含まれていません.<br>ただ,Dependency Walker は「KnownDLLs だよ」と主張しているので,何か裏があるのかも知れません.<br>詳しくは Dependency Walker の "Options" -> "Configure Module Search Order" をどうぞ.

_ NyaRuRu (2006-07-15 22:28)

>何か裏<br>ありました.<br><br>http://support.microsoft.com/kb/164501/en-us<br><br>>A DLL is treated as a KnownDLL if a KnownDLL implicitly links to it.<br>>For example, MAIN.DLL uses functions from CHILD.DLL.<br>>If MAIN.DLL is listed in the KnownDLLs registry key, then Windows NT also treats CHILD.DLL as a KnownDLL.<br>>Another application or DLL that uses CHILD.DLL will use the DLL that was linked to MAIN.DLL.<br><br>ということで,KnownDLLs が暗黙にリンクしている DLL も KnownDLLs として扱われるようです.

_ arton (2006-07-16 09:41)

どうもありがとうございます。<br>教えていただいた資料へのポインタを<br>http://arton.no-ip.info/collabo/backyard/?DllLoadOrder<br>に、まとめてみました。<br>結論としては、Windows Vistaまでを視野に入れた場合、ユーザー提供DLL以外のすり替えはできないと前提したほうが良いということになりそうですね(誤読しているかも知れません)。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|

ジェズイットを見習え