Anonymous
просто хук убираю до вызова лол
Anonymous
так rax перезапишется
Anonymous
код возврата
Anonymous
упс, забыл нахуй
Anonymous
а
Anonymous
не
Anonymous
не всё ок
Anonymous
Anonymous
да, и насчет того что шадоуспейс надо делать, он же поидее коллером настроен уже
Anonymous
r9 я бы засейвил.. чисто если в dllmain что-то настраивается, там может быть стдколл к апи и перезапишет r9
Anonymous
Anonymous
нет, перед оригиналфн
Anonymous
да
Anonymous
полюбому
Anonymous
р9 это аргумент и да надо засейвить внатуре
Anonymous
хотя дллмаин сама его должна сейвить
Anonymous
но похуй
Anonymous
Anonymous
А вот я хз точно. Дллмейн сейвит все регитры или нет
Anonymous
Компилер там че генерит
Anonymous
Надо глянуть годболт
Anonymous
push rcx
push rdx
push r8
push r9
mov rcx, ImageBase
mov rdx, DLL_PROCESS_ATTACH
mov r8, ImageSize
sub rsp, 0x28
mov rax, DllMain
call rax
add rsp, 0x28
pop r9
pop r8
pop rdx
pop rcx
push rbx
mov rax, OriginalFunc
mov rbx, pFunction
mov [rbx], rax
pop rbx
call OriginalFunc
ret
Anonymous
Должно сработать. С PeekMessage
Anonymous
должно сработать со всей хуйней из винапи поидее
Anonymous
но хукать риална буду пикмессейдж или че нить подобное
Anonymous
ну мне кажется там доступ некорректный будет
Anonymous
из-за повторного колла
Anonymous
всмисле
Anonymous
Просто какбы, вызываемая функци допустим, принимающая 5 параметров, хочет получить доступ к пятому
Anonymous
согласно stdcall он лежит за shadow space
Anonymous
<ret addr>
<shadow space>
<arg>
Anonymous
код в функции ну там PeekMessage написан так, что учитывается вот такая структура стека
Anonymous
я ставлю хук допустим
Anonymous
у меня вот такая структура
Anonymous
я хочу вызвать оригинал
Anonymous
к этой структуре наверх я добавляю ещё один адрес возврата
Anonymous
в итоге. PeekMessage получит такое
Anonymous
<ret addr>
<ret addr>
<shadow>
<arg>
Anonymous
когда она по смещению захочет взять аргумент, возьмётся из shadow мусор
Anonymous
по факту я мать ебал рет аддра по этому могу забить хуй и не пушить рет аддр
Anonymous
т.е там джампнет в оригинал сразу
Anonymous
тогда так да
Anonymous
т.е mov rax, origfn
jmp rax
Anonymous
тогда ретернаддресс не отложица, да?
Anonymous
Ну да, всё равно только 1 раз хук нужен. Да, тогда ретурн адреса доп не будет никакого
Anonymous
все, пасиба
Anonymous
push rcx
push rdx
push r8
push r9
mov rcx, ImageBase
mov rdx, DLL_PROCESS_ATTACH
mov r8, ImageSize
sub rsp, 0x28
mov rax, DllMain
call rax
add rsp, 0x28
pop r9
pop r8
pop rdx
pop rcx
push rbx
mov rax, OriginalFunc
mov rbx, pFunction
mov [rbx], rax
pop rbx
jmp OriginalFunc
Anonymous
по идее щас вот топово
Anonymous
домой приду заюзаю, посмотрим как оно
Anonymous
thread notify routine
image load notify routine
ObRegisterCallbacks с довольно широкой маской
еще минифильтры для блока загрузки dll
и еще как то блокают APC (lol) , наверное через что то выше
+ цикл гуляющий по handle table и ДКОМящий обратно хендлы сдублированные от сиспроцессов или повышеные дкомом вручную
Anonymous
и написать подобный драйвер - как хуем по маслу помазать
Anonymous
@EncodedSecurityDescriptor
Anonymous
все это хуйня и обходится на раз два
Anonymous
если бы 200iq парни из М$ сделали бы сука просто возможность перехватывать сисколлы из под р0 с включенным патчгардом, было бы большее поле что бы разыграца
Anonymous
а так АЧ юзают че есть и все
Anonymous
так вообще у меня есть желание поглазеть на кпп/пг и его отключить либо попробовать что то хукнуть в р0 через эксепшны с кпп/пг включеным
Anonymous
но метод с эксепшенами слишком тривиален для того что бы ПГ на него не триггерился
Anonymous
или я мб не прав и пг реально похуй на то что какая нить хуйня в ntoskrnl пульнет exception_access_violation reading location nullptr(lol)
Anonymous
у меня дохуя годных идей есть в голове по поводу этого всего
Anonymous
но я слишком ленивый и времени нет это реализовывать
Anonymous
Anonymous
э? дак есть он
Anonymous
Патчгуард?
Anonymous
где то в НикитосКернел.ехе
Anonymous
да
Anonymous
Ну да, где-то
Anonymous
была где то статейка описывающая его
Anonymous
Я так понимаю это не единый объект или структура, а куски провероке разбросанные по кернелу.
Anonymous
и апдейтами механизм меняется
Anonymous
Anonymous
хук через инт3 чтоли типо?
Anonymous
нет
Anonymous
нужно хукаемую функцию заставить сгенерить эксепшн
Anonymous
и его словить хэндлером
Anonymous
а затем вернуть выполнение куда надо
Anonymous
@EncodedSecurityDescriptor
Anonymous
Anonymous
это целосность нарушит
Anonymous
нет