
30.03.2008, 14:07
|
|
Постоянный
Регистрация: 19.10.2007
Сообщений: 794
Провел на форуме: 1013791
Репутация:
711
|
|
Пункт первый:
Есть функция, работающая по таймеру и выполняющая 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
с внесенными изменениями.
|
|
|