XP の RSAENH.DLL が Windows 2000で使えない理由と USERENV.DLL

Windows XP の RSAENH を 拡張カーネル v15jで使おうとすると、UserEnv.dll と Advapi32.dll の不正アクセスでDLLの初期化に失敗します

これはなんでか調べてみました


具体的にどこで問題が発生しているかというと

 L680234B0:
          lea    eax,[ebp-0000041Ch]
          push    eax
          push    0000000Ch
          call    SUB_L68022047
          cmp    eax,edi
          jnz    L680234D9
          lea    eax,[ebp-00000210h]
          push    eax
          push    [ebp-0000041Ch]
          call    [USERENV_dll_DelayImport_Ord.149]
          cmp    eax,edi
          jz     L680234E0
 L680234D9:

ここで、例外が発生して例外処理にスローされます

関数名 2000 XP
? (162[3]) (148[2])
? (163[3]) (149[2])
CheckXForestLogon (175) 159
CreateEnvironmentBlock 132 160
DeleteProfileA 133 161
DeleteProfileW 134 162
DestroyEnvironmentBlock 135 163
DllCanUnloadNow   164
DllGetClassObject   165
DllInstall   166
DllRegisterServer   167
DllUnregisterServer   168
EnterCriticalPolicySection 136 169
ExpandEnvironmentStringsForUserA 137 170
ExpandEnvironmentStringsForUserW 138 171
ForceSyncFgPolicy   172
FreeGPOListA 139 173
FreeGPOListW 140 174
GenerateRsopPolicy   175
GetAllUsersProfileDirectoryA 141 176
GetAllUsersProfileDirectoryW 142 177
GetAppliedGPOListA 143 178
GetAppliedGPOListW 144 179
GetDefaultUserProfileDirectoryA 145 180
GetDefaultUserProfileDirectoryW 146 181
GetGPOListA 147 182
GetGPOListW 148 183
GetNextFgPolicyRefreshInfo   184
GetPreviousFgPolicyRefreshInfo   185
GetProfileType 149 186
GetProfilesDirectoryA 150 187
GetProfilesDirectoryW 151 188
GetUserProfileDirectoryA 152 189
GetUserProfileDirectoryW 153 190
LeaveCriticalPolicySection 154 191
LoadUserProfileA 155 192
LoadUserProfileW 156 193
ProcessGroupPolicyCompleted 157 194
ProcessGroupPolicyCompletedEx   195
RefreshPolicy 158 196
RefreshPolicyEx   197
RegisterGPNotification 159 198
RsopAccessCheckByType   199
RsopFileAccessCheck   202
RsopLoggingEnabled   203
RsopResetPolicySettingStatus   204
RsopSetPolicySettingStatus   205
UnloadUserProfile 160 206
UnregisterGPNotification 161 207
WaitForMachinePolicyForegroundProcessing - 208
WaitForUserPolicyForegroundProcessing - 209

ついでにXPには未定義関数 100~158, 200/201
2000には 100~131,162,163,175 があります

2000では、CheckXForestLogon は隠し関数の175で
引数が2つあるXPの Ord.148/149は 引数が3つの Ord.162/163関数と互換性があるようです。

違いは Ord.162/163 の第2パラメータがフラグと使用されていて、0以外の時 Local AppData を使用。 通常は XP と互換の AppData を使用します。

おすすめ

コメントを残す

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