Показать сообщение отдельно

  #23  
Старый 30.03.2008, 14:07
neprovad
Постоянный
Регистрация: 19.10.2007
Сообщений: 794
Провел на форуме:
1013791

Репутация: 711


Wink

Пункт первый:
Есть функция, работающая по таймеру и выполняющая RaizeHardError, нам такие фокусы не нужны поэтому обходим стороной.
Код:
PAGE:0007AFA90 ExpExpirationThread:
PAGE:0007AFA90  sub  rsp, 38h
PAGE:0007AFA94  test rcx, rcx
PAGE:0007AFA97  jz   short loc_7AFABF
PAGE:0007AFA99  lea  rax, [rsp+38h+arg_0]
PAGE:0007AFA9E  xor  r9d, r9d
PAGE:0007AFAA1  xor  r8d, r8d
PAGE:0007AFAA4  mov  [rsp+38h+var_10], rax
PAGE:0007AFAA9  xor  edx, edx
PAGE:0007AFAAB  mov  dword ptr [rsp+38h+var_18], 1
PAGE:0007AFAB3  call ExRaiseHardError
PAGE:0007AFAB8  mov  ecx, eax ; ExitStatus
PAGE:0007AFABA  call PsTerminateSystemThread
PAGE:0007AFABF
PAGE:0007AFABF  loc_7AFABF:
PAGE:0007AFABF  add  rsp, 38h
PAGE:0007AFAC3  retn
Меняем на
Код:
PAGE:0007AFA97  jmp  short loc_7AFABF
Пункт второй:
Есть функция выполняющая перезагрузку. Перезагрузка получится в случае обнуления счетчика. Если счетчик нулевой, то при булева переменная ExpNextExpirationIsFatal примет значение истина. Это сигнал для перезагрузки при следующем срабатывании таймера.
Сделаем так чтобы счетчик увеличивался и уменьшался но на перезагрузку не давал сигнала

Код:
PAGELK:0007DDFE9   cmp  cs:ExpNtExpirationData_2, ebx
PAGELK:0007DDFEF   jz      short time2refreshtimer
PAGELK:0007DDFF1   mov  rax, [rdi]
PAGELK:0007DDFF4   cmp  rax, cs:ExpNtExpirationDate
PAGELK:0007DDFFB   jl       short time2refreshtimer
PAGELK:0007DDFFD   cmp  cs:ExpNextExpirationIsFatal, bl
PAGELK:0007DE030   jnz   short OMG_shutdown
Меняем на
Код:
PAGELK:0007DDFEF   jmp  short time2refreshtimer
Скачать ntkrnlmp.exe
с внесенными изменениями.
 
Ответить с цитированием