Skype 6.1のruntime error 217 と レジストリ

runtime error 217 at 0053CE7D - Skype Support Network
Why am I getting a runtime error 217 after updatin- Skype Support Network

runt

Windows 2000で Skype 6.1 を利用すると  Runtime error 217 at 0053CE7D が出るのですが、調べてみたところ結構海外では起こってる事例みたいなので解析してみました。


まず、Skype.exe 自体が暗号化されてるので、デバッガ上での逆アセンブルになります。

SUB_L004075AC:
 or eax,eax
 jnz L004075BA
 mov eax,000000D8h
 call SUB_L00407CC0
       :
 push ecx
 push 00000001h
 push 0EEDFADEh
 mov eax,esp
 call edx
 add esp,00000030h
 L00407612:
 jmp [L01636014]
 retn

まず、Dependency Walker でトレースしてみると 0xEEDFADE という例外が起こっているのでそこを調べてみます。

SUB_L0053DA64:
 
push ebx
 
mov ebx,eax
 
push ebx
 
push 00000000h
 
xor ecx,ecx
 
mov dl,01h
 
mov eax,[L0053A8C0]
 
call SUB_L0053D8F8
 
call SUB_L004075AC <-
 
pop ebx
 
retn

スタックトレースをさかのぼります

SUB_L0053DA80:
 test eax,80000000h
 jz L0053DA8C
 call SUB_L0053DA64 <- raise exception.
 L0053DA8C:
 retn

ここに、エラーがかえった時に例外が発生させるというところがありました。

0053D200 push eax
0053D201 mov eax,[esp+10h]
0053D205 push eax
0053D206 mov eax,[ebx+4Ch]
0053D209 push eax
0053D20A mov eax,[eax]
0053D20C call [eax+38h]
0053D20F call SUB_L0053DA80 <- eax=8002802A
0053D214 jmp L0053D222

ここで 0x8002802A (TYPE_E_WRONGTYPEKIND)
が返っています。

この関数をもう一度実行してみましょう
oleaut32.dll in StringFromGUID2 を TYPELIB に対して実行しようとして失敗していることが分かりました。

キーは

HKEY_CLASSES_ROOT\TypeLib\{B9AA1F11-F480-4054-A84E-B5D9277E40A8}

でした。

正常に動作している環境を見るとすごいことが分かりました。

レジストリーキーを Skype 初期起動時に 278 x 5 の値 と キーを HKEY_CURRENT_USER に生成しているのです。

レジストリエディタで B9AA1F11-F480-4054-A84E-B5D9277E40A8 を検索してみると
HKEY_CURRENT_USER\Software\Classes\Interface
HKEY_CURRENT_USER\Software\Classes\TypeLib\{B9AA1F11-F480-4054-A84E-B5D9277E40A8}
に出てくるのが引っかかるの全てそうです。
このレジストリ追加だけで、500kほどレジストリが増えそうです。

ちなみに、Windows 2000は生成する前に落っこちています ・ω・;

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です