Цитата Jekson07:
В связи с этим хотелось бы знать, что конкретно было подправлено/изменено в патченном файле syssetup.dll: »
|
Ну только ж не syssetup.dll, а setupapi.dll был исправлен.
Исправления не в ресурсах, а исполняемом коде модуля в его внутренней функции GetModuleEntryPoint:
Код:
.text:779562A4 call _pSetupGetFileTitle@4 ; pSetupGetFileTitle(x)
.text:779562A9 push eax
.text:779562AA push ebx
.text:779562AB push ebx
.text:779562AC push ebx
.text:779562AD push ebx
.text:779562AE push [ebp+var_674]
.text:779562B4 push [ebp+var_63C]
.text:779562BA call __VerifyFile@68 ; _VerifyFile(x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x)
.text:779562BF mov [ebp+dwErrCode], eax
.text:779562C5 cmp eax, ebx
.text:779562C7 jz short loc_77956313
.text:779562C9 mov eax, [ebp+var_658]
.text:779562CF cmp eax, ebx
.text:779562D1 jnz short loc_779562D9
.text:779562D3 mov eax, [ebp+lpMem]
.text:779562D9
.text:779562D9 loc_779562D9: ; CODE XREF: GetModuleEntryPoint(x,x,x,x,x,x,x,x,x,x,x,x,x,x,x)+225 j
.text:779562D9 push ebx ; int
.text:779562DA push ebx ; int
.text:779562DB push [ebp+var_63C] ; int
.text:779562E1 push [ebp+dwErrCode] ; dwErrCode
.text:779562E7 push [ebp+arg_34] ; int
.text:779562EA push [ebp+arg_30] ; int
.text:779562ED push eax ; int
.text:779562EE lea eax, [ebp+szStart]
.text:779562F4 push eax ; lpFileName
.text:779562F5 push [ebp+arg_28] ; int
.text:779562F8 push [ebp+var_670] ; int
.text:779562FE call _pSetupHandleFailedVerification@40 ; pSetupHandleFailedVerification(x,x,x,x,x,x,x,x,x,x)
.text:77956303 test eax, eax
.text:77956305 jnz short loc_77956313
.text:77956307 mov eax, [ebp+var_648]
.text:7795630D mov dword ptr [eax], 1
.text:77956313
.text:77956313 loc_77956313: ; CODE XREF: GetModuleEntryPoint(x,x,x,x,x,x,x,x,x,x,x,x,x,x,x)+21B j
.text:77956313 ; GetModuleEntryPoint(x,x,x,x,x,x,x,x,x,x,x,x,x,x,x)+259 j
.text:77956313 cmp [ebp+lpMem], ebx
.text:77956319 jz short loc_77956326
.text:7795631B push [ebp+lpMem] ; lpMem
.text:77956321 call _pSetupFree@4 ; pSetupFree(x)
.................
здесь по адресу .779562C7 команда условного перехода (условием является наличие/отсутствие цифровой подписи у модуля)
jz short loc_77956313
исправлена на команду безусловного перехода:
jmp short loc_77956313
С такой правкой в независимости от наличия/отсутствия подписи, переход осуществляется на ветку кода выполняемую при наличии цифровой подписи.
Подробней о механизме проблемы я писал в этом же топике, в посте #30.
По результатам просмотра реестра получился такой список установщиков классов устройств, подверженных сабжевой проблеме:
storprop.dll
SysSetup.dll
Desk.Cpl
MmSys.Cpl
mdminst.dll
NetCfgx.dll
printui.dll
nmwcdcls.dll
winscard.dll
sti_ci.dll
Batt.dll
btw_ci.dll
sdhcinst.dll
bthci.dll
wpd_ci.dll
Цитата Jekson07:
Я правда, в тестовый набор включил не только блокнот, но и все другие файлы, которые вызывают сообщение о батарее. »
|
А с этого места по подробней плиз! Какие еще файлы вызывают проблему батареи? Хотелось бы докопаться до сути...