Anonymous
просто хук убираю до вызова лол
Anonymous
так rax перезапишется
Anonymous
код возврата
Anonymous
упс, забыл нахуй
Anonymous
а
Anonymous
не
Anonymous
не всё ок
Anonymous
Anonymous
да, и насчет того что шадоуспейс надо делать, он же поидее коллером настроен уже
Anonymous
r9 я бы засейвил.. чисто если в dllmain что-то настраивается, там может быть стдколл к апи и перезапишет r9
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
а хде ему еще сидеть как на убогих виндоколлбеках ака SetThreadCreateNotifyRoutine
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/ntddk/nf-ntddk-pssetcreatethreadnotifyroutine как я понял Не думал что античиты так заморочены
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
хук через инт3 чтоли типо?
Anonymous
нет
Anonymous
нужно хукаемую функцию заставить сгенерить эксепшн
Anonymous
и его словить хэндлером
Anonymous
а затем вернуть выполнение куда надо
Anonymous
@EncodedSecurityDescriptor
Anonymous
нужно хукаемую функцию заставить сгенерить эксепшн
ноо ведь её полюбому патчить над тогда?
Anonymous
это целосность нарушит
Anonymous
нет