Сейчас на форуме: asfa, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Shutdown in Windows 8 PE
Посл.ответ Сообщение

Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 17 июля 2013 23:01 · Поправил: YURETZS
· Личное сообщение · #1

Чем можно отловить шатдаун в Win8 PE
Нашел в в исследуемое проге вызов апи из ntdll

text:004192D7 loc_4192D7: ; CODE XREF: CImmersiveRecoveryUi::Terminate(_WINRE_EXIT_ACTION)+6Ej
.text:004192D7 push edi
.text:004192D8 call ds:__imp__NtShutdownSystem@4 ; NtShutdownSystem(x)
.text:004192DE jmp short loc_419350



Но в 8-ке дело до этого не доходит, в метро фейсе шатдаун происходит где-то в другом месте.
Пробовал в PE-сборке патчить ntdll на шатдаун (sysenter процедуры NtShutdownSystem заменил на nop)
но винда отказывается грузить патченную длл, нужно где-то убрать проверку.




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 17 июля 2013 23:05
· Личное сообщение · #2

YURETZS пишет:
но винда отказывается грузить патченную длл, нужно где-то убрать проверку.

Цифровая подпись.

-----
Лучше быть одиноким, но свободным © $me


| Сообщение посчитали полезным: YURETZS

Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 17 июля 2013 23:16
· Личное сообщение · #3

BoRoV
И вправду, цифровая подпись не действительна.
А чем сгенерить действительную ?
Там вроде RSA используется.
Тогда нужен приватный ключ, что практически нереально.




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 17 июля 2013 23:23
· Личное сообщение · #4

YURETZS
1. гадить процедуру проверки;
2. мемпатчить

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 17 июля 2013 23:27
· Личное сообщение · #5

ajax
1. Эта процедура в самом ntdll.dll ?
2. Если в винхексе замемпатчить ядреный модуль, система не падет в краш ?




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 17 июля 2013 23:30
· Личное сообщение · #6

YURETZS пишет:
замемпатчить ядреный модуль, система не падет в краш

winpe - хз. по идее, если есть права - все должно быть ровно

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 18 июля 2013 03:25
· Личное сообщение · #7

Патчи всё, патчи

Вот так оно должно робить http://yadi.sk/d/2II0TUcc6x64x



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 21 августа 2013 14:34 · Поправил: YURETZS
· Личное сообщение · #8

Ок, с этим разобрался, теперь возникла небольшая проблемка - при выходе из приложения исчезает курсор мыши.
Как его вернуть через апи.
ShowCursor из user32.dll почему-то в метро не работает.
Может в 8-ке используется что-то другое.
В аттаче http://rghost.ru/48267441 лог мониторинга апифункций во время пропадания курсора.



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 21 августа 2013 16:39
· Личное сообщение · #9

Нашел я эту функцию - она вызывается из user32.dll по ординалу.

.text:69E2B385 public Ordinal2519
.text:69E2B385 Ordinal2519 proc near ; DATA XREF: .text:off_69E01028o
.text:69E2B385 mov eax, 13D2h
.text:69E2B38A call sub_69E2B397
.text:69E2B38F retn 4
.text:69E2B38F Ordinal2519 endp



Вопрос - можно ли ее вызывать напрямую, без LoadLibraryW(x) и GetProcAddress(x,x) ?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 21 августа 2013 17:25
· Личное сообщение · #10

Напрямую откуда? И как ты собрался её адрес получить без GetProcAddress?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 21 августа 2013 17:28
· Личное сообщение · #11

call sub_69E2B397 - куда ведет? если целиком рипнуть, то теоретически да

-----
[nice coder and reverser]





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 21 августа 2013 17:49
· Личное сообщение · #12

На вызов в ядро он ведёт, полагаю. Но рипать вместе с индексом сисколла как минимум костыль.



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 21 августа 2013 17:55
· Личное сообщение · #13

Hellspawn

.text:69E2B397 sub_69E2B397 proc near ; CODE XREF: Ordinal2519+5p
.text:69E2B397 mov edx, esp
.text:69E2B399 sysenter
.text:69E2B39B retn
.text:69E2B39B sub_69E2B397 endp
.text:69E2B39B



Да уже разобрался, в 9 байт вызов по ординалу ну никак не встроить.
Код вызова такой:


.text:1000F4CF ?_EnableMouseInputForCursorSuppression@CImmersiveCursor@Shell@Windows@@AAE_NH@Z proc near
.text:1000F4CF ; CODE XREF: BUXFrame::_SwapPage(BUX_NAVIGATE_OPTIONS,BUXPage *)+104p
.text:1000F4CF ; BUXFrame::_SwapPage(BUX_NAVIGATE_OPTIONS,BUXPage *)+1F0p
.text:1000F4CF
.text:1000F4CF arg_0 = dword ptr 8
.text:1000F4CF
.text:1000F4CF mov edi, edi
.text:1000F4D1 push ebp
.text:1000F4D2 mov ebp, esp
.text:1000F4D4 push ebx
.text:1000F4D5 xor ebx, ebx
.text:1000F4D7 cmp [edi], ebx
.text:1000F4D9 jz short loc_1000F4E0
.text:1000F4DB cmp [edi+4], ebx
.text:1000F4DE jnz short loc_1000F516
.text:1000F4E0
.text:1000F4E0 loc_1000F4E0: ; CODE XREF: Windows::Shell::CImmersiveCursor::_EnableMouseInputForCursorSuppression(int)+Aj
.text:1000F4E0 cmp [edi+8], ebx
.text:1000F4E3 jnz short loc_1000F516
.text:1000F4E5 push offset LibFileName ; "user32.dll"
.text:1000F4EA call ds:__imp__LoadLibraryW@4 ; LoadLibraryW(x)
.text:1000F4F0 mov [edi+8], eax
.text:1000F4F3 test eax, eax
.text:1000F4F5 jz short loc_1000F516
.text:1000F4F7 push 9D7h ; lpProcName
.text:1000F4FC push eax ; hModule
.text:1000F4FD call ds:__imp__GetProcAddress@8 ; GetProcAddress(x,x)
.text:1000F503 push 9D8h ; lpProcName
.text:1000F508 push dword ptr [edi+8] ; hModule
.text:1000F50B mov [edi], eax
.text:1000F50D call ds:__imp__GetProcAddress@8 ; GetProcAddress(x,x)
.text:1000F513 mov [edi+4], eax
.text:1000F516
.text:1000F516 loc_1000F516: ; CODE XREF: Windows::Shell::CImmersiveCursor::_EnableMouseInputForCursorSuppression(int)+Fj
.text:1000F516 ; Windows::Shell::CImmersiveCursor::_EnableMouseInputForCursorSuppression(int)+14j ...
.text:1000F516 mov eax, [edi]
.text:1000F518 test eax, eax
.text:1000F51A jz short loc_1000F526
.text:1000F51C push [ebp+arg_0]
.text:1000F51F call eax
.text:1000F521 test eax, eax
.text:1000F523 setnz bl
.text:1000F526
.text:1000F526 loc_1000F526: ; CODE XREF: Windows::Shell::CImmersiveCursor::_EnableMouseInputForCursorSuppression(int)+4Bj
.text:1000F526 mov al, bl
.text:1000F528 pop ebx
.text:1000F529 pop ebp
.text:1000F52A retn 4
.text:1000F52A ?_EnableMouseInputForCursorSuppression@CImmersiveCursor@Shell@Windows@@AAE_NH@Z endp


пришлось патчить еще одну либу.
Просто хотелось сократить чило патченных либ, но видно никак не получится.


 eXeL@B —› Вопросы новичков —› Shutdown in Windows 8 PE
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати