Русский / Russian English / Английский

Сейчас на форуме: IsNull (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› Windows 10 1903 и Proxy-DLLs
<< . 1 . 2 . 3 .
Посл.ответ Сообщение


Ранг: 85.5 (постоянный)
Статус: Участник

Создано: 20 августа 2019 00:07 · Поправил: RAMZEZzz New!
Цитата · Личное сообщение · #1

После обновления на 1903 люди начали жаловаться что перестали работать лекарства, реализованные через прокси-дллки.
Например version.dll
Для тех кто не в теме: винда по умолчанию (раньше) ищет загружаемую прогой dll сначала в папке самой проги, если не находит, то дальше идёт в ...\system32\ .Если мы создаём dll с системным именем, как например version.dll, сделаем в ней тот же экспорт, и "проксирование" этого экспорта на настоящую системную dll. То все будет работать как раньше, но наша dll уже инжектирована в процесс, причем на самом старте, и мы можем делать с ним что угодно.

Тепрь же это не прокатывает, dll сразу грузится из system32....
Комрады, в какую сторону копать? Чую какое то обновление виновато, может какие записи в реестре появились или еще что. Кстати в Win2012 после установки обнвлений та же беда...


Ранг: 327.8 (мудрец)
Статус: Участник

Создано: 26 октября 2019 20:59 New!
Цитата · Личное сообщение · #2

DenCoder

Code:
  1. 70005BED TrStep   0FB606         movzx eax,byte ptr ds:[esi]
  2. 70005BF0 8D43 28   lea eax,dword ptr ds:[ebx+28]
  3. 70005BF3 50             push eax
  4. 70005BF4 56             push esi
  5. 70005BF5 E8 69DCFFFF       call DiDecode


Code:
  1. TrAccess::
  2.          movzx eax,B[esi]
  3.          invoke DiDecode, Esi, addr [Ebx].Tr.Ia


- выборка при раскодировке. BugCheck D1, {75b14b0c, ff, 0, 70005bed} -> 70005bed: [75b14b0c], при этом откуда запрет на прерывания(0xFF -> !IF). Как такое возможно я хз.


Ранг: 573.7 (!)
Статус: Участник
_Вечный_Студент_

Создано: 26 октября 2019 23:12 New!
Цитата · Личное сообщение · #3

Alchemistry пишет:
Инфы в гугле предостаточно вместе с готовым кодом


искал, но то что нашел - все какая-то вода, общие слова. Может у меня гугл неправильный.
Будь другом, подскажи что-нибудь толковое и конкретное!


Ранг: 327.8 (мудрец)
Статус: Участник

Создано: 26 октября 2019 23:23 New!
Цитата · Личное сообщение · #4

plutos

Моя тема --> Link <--

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



Ранг: 573.7 (!)
Статус: Участник
_Вечный_Студент_

Создано: 27 октября 2019 02:45 · Поправил: plutos New!
Цитата · Личное сообщение · #5

difexacaw пишет:
Моя тема --> Link <--


Das ist zer gut! dankeschön!

Но все же хочется и от Alchemistry чего-нибудь интерсного!

Ранг: 138.0 (ветеран)
Статус: Участник

Создано: 27 октября 2019 07:43 New!
Цитата · Личное сообщение · #6

plutos
https://blogs.msdn.microsoft.com/reiley/2012/08/17/a-debugging-approach-to-application-verifier/
Я бы избежал использования не натив напрямую, но раз у афтара работает... Остальное гуглится по ключевым словам на гитхабе/гитлабе.

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



Ранг: 327.8 (мудрец)
Статус: Участник

Создано: 27 октября 2019 10:00 New!
Цитата · Личное сообщение · #7

Добавить особо нечего, есть только один нюанс по размеру структур:

Avrf:RTL_VERIFIER_PROVIDER_DESCRIPTOR_EX

Code:
  1. DllEntry proc uses ebx Module:PVOID, Reason:ULONG, Context:PVOID
  2.          .if Reason == DLL_PROCESS_VERIFIER
  3.                  mov ebx,fs:[TEB.Peb]
  4.                  assume ebx:PPEB
  5.                  mov edx,Context
  6.                  mov D[edx],offset Avrf
  7.                  .if ([Ebx].NtMajorVersion > 5) || ([Ebx].NtMinorVersion > 1)
  8.                         add Avrf._Length,sizeof(RTL_VERIFIER_PROVIDER_DESCRIPTOR_EX) - sizeof(RTL_VERIFIER_PROVIDER_DESCRIPTOR)
  9.                  .endif


Может проверка версии не совсем корректна, но я всегда эту конструкцию использую. Других проблем не возникает в общем.

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



Ранг: 322.8 (мудрец)
Статус: Участник

Создано: 27 октября 2019 17:02 New!
Цитата · Личное сообщение · #8

Alchemistry пишет:
Я бы избежал использования не натив напрямую

Ненатив просто надо знать, когда использовать.

Добавлено спустя 2 минуты
difexacaw пишет:
всегда эту конструкцию использую

Аналогично
Code:
  1.                               DWORD osver = 0;
  2.                               __asm
  3.                               {
  4.                                    mov eax, fs:0x18
  5.                                    mov ecx, dword ptr [eax + 0x30]
  6.                                    mov eax, [ecx + 0xa4]
  7.                                    mov osver, eax
  8.                               }
  9.  
  10.                               if(osver == 5)
  11.                                    vpd = *((PRTL_VERIFIER_PROVIDER_DESCRIPTOR_FOR_XP *)lpReserved) = &tVpdXp;
  12.                               else if(osver > 5)
  13.                                    vpd = *((PRTL_VERIFIER_PROVIDER_DESCRIPTOR_FOR_WIN7 *)lpReserved) = &tVpd7;

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



Ранг: 573.7 (!)
Статус: Участник
_Вечный_Студент_

Создано: 30 октября 2019 03:41 · Поправил: plutos New!
Цитата · Личное сообщение · #9

difexacaw пишет:
Моя тема --> Link <--


Загрузка провайдера верификации из памяти и инициализация.
> http://indy-vx.narod.ru/Bin/AVrf.zip


difexacaw,
Перезалей если можешь, тема уж больно интересная!!!


Ранг: 327.8 (мудрец)
Статус: Участник

Создано: 30 октября 2019 06:08 New!
Цитата · Личное сообщение · #10

plutos

Очень старый семпл. Включать нет смысла, верифер лишь способ загрузки, его вообще лучше выключить. Например если есть хук аллокаций(ZwAllocVI), то при запущенном верифере это приведёт к ошибке, так как в его обработке ошибка на какой то из версий.

{ Атач доступен только для участников форума } - AVrf.7z

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

<< . 1 . 2 . 3 .
 eXeL@B —› Основной форум —› Windows 10 1903 и Proxy-DLLs

Видеокурс ВЗЛОМ