Сейчас на форуме: jinoweb, bartolomeo, rmn (+4 невидимых)

 eXeL@B —› Программирование —› Перехват прерываний и исключений
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . >>
Посл.ответ Сообщение

Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 09 декабря 2013 15:35
· Личное сообщение · #1

Руководствуясь Хоглундом и Батлером на тему перехват прерываний и исключений , написать и запустить драйвер получается но перехват не выходит, пытался перехватить как 0x04 OF так и 0x13 ошибки доступа к памяти, запускал на VB xp 32 с одним процессором, но увы, не опытность даёт знать, вот код на Си который вышел:

init.c:
Code:
  1. #include <ntddk.h>
  2. #include "IDT.c"
  3.  
  4. #define MAKELONG( a , b )( ( LONG ) ( ( ( USHORT ) ( a ) ) | ( ( ULONG ) ( ( USHORT ) ( b ) ) ) << 16 ) )
  5.  
  6. #define NT_SYSTEM_SERVICE_INT 0x13
  7.  
  8. ULONG RealSystemPtr;
  9.  
  10. void MyInt()
  11. {
  12.          __asm
  13.          {
  14.                  pushad
  15.                  pushfd
  16.                  push fs
  17.                  mov bx , 0x30
  18.                  mov fs , bx
  19.                  push ds
  20.                  push es
  21.          }
  22.          
  23.          DbgPrint("Is MyInt");
  24.          
  25.          __asm
  26.          {
  27.                  pop es
  28.                  pop ds
  29.                  pop fs
  30.                  popfd
  31.                  popad
  32.                  jmp RealSystemPtr;
  33.          }
  34. }
  35.  
  36. void Hook()
  37. {
  38.          IDTINFO idt_info;
  39.          IDTENTRY * idt_entries;
  40.          IDTENTRY * int2_entry;
  41.          
  42.          __asm sidt idt_info
  43.          
  44.          idt_entries = ( IDTENTRY * ) MAKELONG( idt_info.LowIDTbase , idt_info.HiIDTbase );
  45.          
  46.          RealSystemPtr = MAKELONG( idt_entries[ NT_SYSTEM_SERVICE_INT ].LowOffset ,
  47.                                                                              idt_entries[ NT_SYSTEM_SERVICE_INT ].HiOffset );
  48.                                                                                     
  49.          int2_entry = &idt_entries[ NT_SYSTEM_SERVICE_INT ];
  50.          
  51.          __asm
  52.          {
  53.                  cli
  54.                  lea eax , MyInt
  55.                  mov ebx , int2_entry
  56.                  mov [ ebx ] , ax 
  57.                  shr eax , 16
  58.                  mov [ ebx + 6 ] , ax
  59.                  sti
  60.          }
  61.  
  62. void DriverUnload( IN PDRIVER_OBJECT DriverObject );
  63.  
  64. NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject , IN PUNICODE_STRING RegPath )
  65. {
  66.          DriverObject -> DriverUnload = DriverUnload;
  67.          Hook();
  68.          return STATUS_SUCCESS;
  69. }
  70.  
  71. void DriverUnload( IN PDRIVER_OBJECT DriverObject )
  72. {
  73.          DbgPrint("Bye!\n");
  74. }


IDT.c
Code:
  1. typedef struct
  2. {
  3.          USHORT IDTLimit;
  4.          USHORT LowIDTbase;
  5.          USHORT HiIDTbase;
  6. }        IDTINFO ;
  7.  
  8. #pragma pack( push , 1 )
  9. typedef struct
  10. {
  11.          USHORT LowOffset;
  12.          USHORT selector;
  13.          UCHAR   unused_lo;
  14.          unsigned char unused_hi : 5;
  15.          unsigned char DPL : 2;
  16.          unsigned char P : 1;
  17.          USHORT HiOffset;
  18. } IDTENTRY ;
  19. #pragma pack( pop )





Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 28 января 2014 20:40 · Поправил: Dr0p
· Личное сообщение · #2

MickeyBlueEyes

Ахренеть просто, вы полезли в вады - очень сложная тема, но не можите изменить атрибуты страницы, фейк. Нет к сожалению времени на анализ. Я понял что вы нас дурите. Вам нет доверия, это сказано не для вас, а для тех, кто с вами будет связан.



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 28 января 2014 21:10 · Поправил: MickeyBlueEyes
· Личное сообщение · #3

> но не можите изменить атрибуты страницы
С чего вы взяли? Какое отношение имеют атрибуты страницы к загрузке dll? Или вы вспомнили, о перехвате #PF и его маршрутизации? Дык вроде как за это уже давно не вспомнилось, да и с этим то какие проблемы в плане реализации.
> Я понял что вы нас дурите
Как же? И зачем мне это? Я сюда пришёл за помощью, и всё что мне подсказали и подсказывают я обязательно просматриваю и практикую, на данный момент проблема с аппаратной виртуализацией которую мне посоветовал Арчер, на хакере нашёл статьи только по AMD, а на Intel там всё отличается, а ман интела по этой теме я на данный момент вкурить не могу. Нашёл пару абстрактных статей по интелу кое-как, сижу пробую и пытаюсь найти что нить полезное в сорцах virtualbox.
Нащёт Vad я хз что вы там представляете, я её представляю как древовидную структуру описывающую регионы выделеной памяти. И планировал там и поискать информацию о dll. Как-то вы не верно провели анализ по мне, и как вообще здесь может фигурировать слово "Дурить"?




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 29 января 2014 10:24
· Личное сообщение · #4

MickeyBlueEyes

Смысл в том, что вы в дебри лезите не понятно зачем. Какая виртуализация, накой она нужна для скрытия длл и обхода патчей. Зачем вады трогать, если ваши задачи элементарно в юзермоде решаются сервисами. Если проекция файловая, то нет нужды ядерные структуры трогать, есть сервис для получения файла связанного с проекцией.

На счёт дурить - вы сказали про сискол, но он к апи имеет косвенное отношение.



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 29 января 2014 14:09
· Личное сообщение · #5

> Зачем вады трогать
Ну в вадах я хотел найти то что скрывает ХакШилд.
> Если проекция файловая, то нет нужды ядерные структуры трогать, есть сервис для получения файла связанного с проекцией.
Спасибо, тоесть они могли проецировать dll как ваш мотор? и тогда их не видно?
> На счёт дурить - вы сказали про сискол, но он к апи имеет косвенное отношение.
Ну да, я заменяю на свой обработчик и просто в нём хотел исправить нужные мне eax на другие значения чтобы смаршрутизировать на нехученое апи, но не вышло. Я просто забежал наперёд, думал траблов никаких не возникнет.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 30 января 2014 21:03
· Личное сообщение · #6

MickeyBlueEyes

> в вадах я хотел найти то что скрывает ХакШилд.

Вы сами то понимаете что сказали ?

> Ну да, я заменяю на свой обработчик и просто в нём хотел исправить нужные мне eax на другие значения чтобы смаршрутизировать на нехученое апи, но не вышло. Я просто забежал наперёд, думал траблов никаких не возникнет.

Изменив rEax вы измените номер сервиса. Бред.
Маршрутизация причём к сервисам(я знаю) ?

Такое впечатление что вы термины из словаря берёте и кидаете их сюда.



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 30 января 2014 21:37
· Личное сообщение · #7

> Вы сами то понимаете что сказали ?
Ну вад описывает регионы выделеной памяти, память же для dll выделяется вот я и хотел там поискать )
> Изменив rEax вы измените номер сервиса. Бред.
Ну я предполагал что будет всё норм и windows дурак.
> Такое впечатление что вы термины из словаря берёте и кидаете их сюда.
Примерно так всё и происходит, но не всё.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 30 января 2014 21:45
· Личное сообщение · #8

MickeyBlueEyes

> Ну вад описывает регионы выделеной памяти, память же для dll выделяется вот я и хотел там поискать )

Я же говорил что понятие длл валидно для загрузчика. Файловый образ уже не модуль, хоть имя файла можно получить - MemoryMappedFileNameInformation на скока помню, ну или ImageFileName, хотя возможно я путаю инфоклассы для разных сервисов - давно я кода не видал.

> Примерно так всё и происходит, но не всё.

Это верный путь для развития, но не верный для решения задачи. Вам для себя следует расставить приоритеты как грится.

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


Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 09 февраля 2014 11:34
· Личное сообщение · #9

MickeyBlueEyes

Вышло что с загрузкой ?



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 13 февраля 2014 00:23
· Личное сообщение · #10

Если только для фроста, с хакшилдом ещё не пробывал. Копаю ядро.



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 20 февраля 2014 21:09
· Личное сообщение · #11

Хм, тут вот решил перехватить начало выполнения одной программы, а точнее поставить hw бряк на ep.
Поставил, запускаю приложение, не срабатывает, а если запускаю через ольку, то срабатывает. У меня где-то косяк или фича какаято?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 февраля 2014 21:19
· Личное сообщение · #12

Ты какой ответ-то ждёшь, если не дал никаких данных? У тебя косяк. Легче стало?

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

Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 20 февраля 2014 21:34
· Личное сообщение · #13

Да там давать дело в том что нечего, так что косяк видимо у меня где-то.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 февраля 2014 21:37
· Личное сообщение · #14

И что ты тогда хотел? Пожаловаться? Тебя пожелать?
Могу погадать, что на систем бряке нельзя ставить хв бряк, ибо он слетит. И об этом даже виндбг предупреждает.

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

Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 20 февраля 2014 21:43 · Поправил: MickeyBlueEyes
· Личное сообщение · #15

Да нет, не нужно жалеть ) Та и жаловаться тоже не хотел.
> что на систем бряке нельзя ставить хв бряк
на систем бряке?




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 20 февраля 2014 22:52
· Личное сообщение · #16

MickeyBlueEyes

Сколько прошло времени, вы так и не затестили мой мотор. Я уверен что вы понимаете что это не годится, ведь я приложил некоторые усилия и время на вас, но вы друг мой не посчитали нужным даже проверить, тупо заюзав дамп. Для меня не существенно, так как я знаю результат чисто теоретически, но мне интересно.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 21 февраля 2014 09:34
· Личное сообщение · #17

MickeyBlueEyes пишет:
на систем бряке?

Это в ольке так называется ранний бряк до перехода на ЕП. Что-то вроде аналога CREATE_SUSPENDED, но чуть позже. Дык вот на нём ставить хв нельзя. И об этом даже виндбг скажет, если в нём сразу после старта процесса попытаться ткнуть хв.



Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 21 февраля 2014 17:40
· Личное сообщение · #18

Объясните плиз, что _принципиально_ может помешать процу поставить hw бряк в любой момент и в любом месте кроме кривой реализации дебаггера?
PS
Понятно, что rw бряк на некоторых системных областях (IDT, GDT, ринг0 стек и пр.) может закрашит систему, но это явно не тот случай



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 21 февраля 2014 17:55 · Поправил: MickeyBlueEyes
· Личное сообщение · #19

> Объясните плиз, что _принципиально_ может помешать процу поставить hw бряк в любой момент и в любом месте
Ну я предполгалал что процессор сам по себе ничего не делает, пока ему не скажешь )

> Сколько прошло времени, вы так и не затестили мой мотор.
Ваш мотор у меня лежит, я его сразу посмотрел и многое не разобрал и отложил в ящик, просто суть не в том чтобы сразу у меня всё работало, а для начала разоробратся как оно работает, мне же для себя. Если суть попробывать работоспособоный ли ваш пример на защищёных приложениях или нет, то на выходных проверю и отпишу.



Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 21 февраля 2014 18:22
· Личное сообщение · #20

MickeyBlueEyes пишет:
Ну я предполгалал что процессор сам по себе ничего не делает, пока ему не скажешь

у кэпа появился достойный конкурент



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 22 февраля 2014 22:11
· Личное сообщение · #21

> у кэпа появился достойный конкурент
У какого кэпа?)




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 27 февраля 2014 01:43
· Личное сообщение · #22

MickeyBlueEyes

За это время можно было пол ядра реализовать..



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 27 апреля 2014 15:51
· Личное сообщение · #23

Слишком уж пол ядра )
А по существу, то вышло написать загрузчик. Либы грузятся, никакие античиты не помогают. С перехватом вышло как через бряк так и через копию dll. Единственное что не вышло это подрузить с диска либы kernel32/ntdll/user32 и перестроить импорт на них. Но вышло сделать копию либы которая уже в памяти, поснимать хуки с копии и перестроить свой ИАТ на копию и работает, покрайней мере с user32.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 27 апреля 2014 23:12
· Личное сообщение · #24

MickeyBlueEyes

Ну и зачем было тратить время на написание лодера, если вы не виксер

Сурсы я так понимаю мегопривад ?



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 30 апреля 2014 22:23
· Личное сообщение · #25

Dr0p
> если вы не виксер
Виксер?
> Сурсы я так понимаю мегопривад ?
Да нет, щас тулзу одну докатываю, протестирую на разных осях, и покажу.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 05 мая 2014 21:09
· Личное сообщение · #26

MickeyBlueEyes

> Виксер?

Да. Предельный случай сис коденга. Особая идеалогия, стремление к знаниям.

> Да нет, щас тулзу одну докатываю, протестирую на разных осях, и покажу.

Одного не пойму. Зачем пилить велосипед.



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 06 мая 2014 16:18 · Поправил: MickeyBlueEyes
· Личное сообщение · #27

> Одного не пойму. Зачем пилить велосипед.
Руку набить, так как область новая.
ps: в процессе тестирования, не вышло форму запустить, но всё остальное апи работает вроде как пока стабильно.
Подумал мож из-за отсутствия запсей в пебе, но нет. Если загрузить легально либу и позатирасть весь пеб, то работает всё, затирал как давал пример когда-то NightShade в этой теме --> Link <--, но если затирать хедер, даже достаточно затереть MZ чтобы уже форма не открывалась. Скорее всего когда регистрируется окно проиходят какие-то проверки или же что скорее всего поиск ресурсов, и винда начинает искать либу, но не находит, и можна предположить что пеб не единственное место где хранятся записи о загруженых dll, или же я не всё в пебе позатирал и вывод ошибочен. Вообщем че гадать, пойду за отладчик.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 06 мая 2014 18:03
· Личное сообщение · #28

MickeyBlueEyes

Механизм исключений не будет работать в таком случае.



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 06 мая 2014 21:13
· Личное сообщение · #29

> Механизм исключений не будет работать в таком случае.
Ну если добавить записи куда надо? Или загрузчики везде по разному себя ведут, и надо под каждую версию винды подстраиваться? Хотелось бы загрузчик довести до ума так сказать, без форм и исключений можно и обойтись, ну а если сильно надо, то можна и легально загрузить либу просто положив все потоки таргет процесса, снять перехваты, выполнить инжект и затереть пеб, не пробывал ещё, но думаю будет работать в 99% случаев, если только античит не работает в отдельном процессе, но тогда можна и его положить Весь сербор в универсальном загрузчике который бы работал всегда, ну как-то так А то смотреть каждый раз что за античит в таргет процессе и подстраиватся, зато без проблем с загрузкой. Вообщем нашел статью по PE --> Link <--, много кода который устроен как-то сложно или это с первого взгляда, ну наверное это код жесткий системщиков и им он понятен). Есть ли там то что решало бы проблему с формами и експешенами? Смысл есть копатся с формами и исключениями или там всё тонко, что лучше использовать загрузчик виндовса? Спасибо.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 06 мая 2014 21:29
· Личное сообщение · #30

MickeyBlueEyes

Говорю же, вы велосипед изобретаете. Ищите решение сами, мне лень эти основы описывать



Ранг: 51.6 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 06 мая 2014 21:34 · Поправил: MickeyBlueEyes
· Личное сообщение · #31

Говорю же, вы велосипед изобретаете. Ищите решение сами, мне лень эти основы описывать.
Ничего се основы ;) Ну это гуд если уже есть решения. Открыл в какой раз исходники LWE, в нём должно это работать?
Признаю что бот, и не смог запустить lwe.


<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . >>
 eXeL@B —› Программирование —› Перехват прерываний и исключений
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати