Сейчас на форуме: 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 )




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

Создано: 25 января 2014 14:39
· Личное сообщение · #2

>> Ну а работа с пользовательскими модулями тривиальна - загружаем копию модуля с диска и юзаем в обход фильтров.
Ну чтобы подгрузить копии модулей, нужно же поснимать хуки с тех модулей, он же хукает LoadLibrary и прочие которые нужны чтобы обычным способом можна было инжектить. НУ а если поснимать то можна и ими самими воспользоватся и потом назад все хуки вернуть? Или я не правильно понял?

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

>> Дров пришлось олькой дизасмить, так как не нашёл тут иду в инструментах. Откуда её слить ?
Брал с трекера, первая ссылка по запросу "IDA pro"




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 25 января 2014 14:45 · Поправил: ARCHANGEL
· Личное сообщение · #3

MickeyBlueEyes
Да всё это уже когда-то было. --> Посмотрите тут<--

--> А потом тут <--

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

-----
Stuck to the plan, always think that we would stand up, never ran.


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


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

Создано: 25 января 2014 15:26
· Личное сообщение · #4

MickeyBlueEyes

> чтобы подгрузить копии модулей, нужно же поснимать хуки с тех модулей, он же хукает LoadLibrary

Через LoadLibrary() вы так просто не загрузите копию, я ведь дал вам семпл. Загрузку системных модулей никто лочить не будет, потому что бессмысленно.

Зачем из ядра лезть в юзермод ?



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

Создано: 25 января 2014 15:39
· Личное сообщение · #5

Ну как вижу, для начала сделать доступным для использования ядерное апи чтобы можна было открывать и писать в процесс. Потом идёт же стандартная загрузка dll(чита), но loadlibrary и прочее апи хукается уже самим приложением и перенаправляет всё длл фростколлектору. Дык нужно же както теперь сделать доступным использования этих апи чтобы подгружатся. Если что не правильно понял, сорь )




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

Создано: 25 января 2014 15:49
· Личное сообщение · #6

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



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

Создано: 25 января 2014 15:57
· Личное сообщение · #7

Ну записали, а дальше ж то всёрогно нада дёрнуть за апи процесса которое хукается.




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

Создано: 25 января 2014 15:59
· Личное сообщение · #8

MickeyBlueEyes

Так а что делать то, переключакем ап через аттач и напрямую пишем.

С загрузкой хз, поробуйте lwe заюзать, там нэйтив. Поток создав или испеользуя уже созданные.



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

Создано: 25 января 2014 16:09 · Поправил: MickeyBlueEyes
· Личное сообщение · #9

Dr0p
> lwe заюзат
lwe?

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

Archer
> К чему весь этот цирк с перехватом исключений, непонятно
Просто читал и пытался применить на практике, и походу возникали новые идеи, ну и щас клубок розматался что к исключениям и прерываниям дело это практические не имеет.




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

Создано: 25 января 2014 16:14 · Поправил: Dr0p
· Личное сообщение · #10

MickeyBlueEyes

Из юзермода можно писать через стандартные сервисы, без извратов. Как открыть процесс я вам сказал.

lwe - загрузчик из памяти. Передаёте ему для загрузки образ тестовой дллки и смотрите что произойдёт.

Я уверен что детекта не будет, так как мотор сей использует восстановленный с диска нэйтив.



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

Создано: 25 января 2014 16:18
· Личное сообщение · #11

> lwe - загрузчик из памяти.
Как росшифровать или дать правильно гуглу понять )




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

Создано: 25 января 2014 16:33
· Личное сообщение · #12

Loader Wrapper Engine.

053e_25.01.2014_EXELAB.rU.tgz - lwe.zip




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 25 января 2014 18:14
· Личное сообщение · #13

У меня вопрос к MickeyBlueEyes. Вот вы пишете здесь про перехваты, а если представим, что их нет. И тогда вам ничего не мешает записать желаемые значения в адресное пространство игры. Но что вы будете туда писать, вы уже определились с этим?

-----
Stuck to the plan, always think that we would stand up, never ran.





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

Создано: 25 января 2014 18:23 · Поправил: Dr0p
· Личное сообщение · #14

ARCHANGEL

Чит будет загружать(dll) - #5.5; запись вероятно нужна для инжекта оной дллки.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 25 января 2014 18:45
· Личное сообщение · #15

Dr0p
Откуда уверенность, что эта длл заработает? Откуда вообще взялась эта длл? И почему тот, кто её сделал, не удосужился сделать модуль, который её грузит и выложить, иначе как проверить, что она вообще работает?

-----
Stuck to the plan, always think that we would stand up, never ran.





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

Создано: 25 января 2014 18:51 · Поправил: Dr0p
· Личное сообщение · #16

ARCHANGEL

Это левый чит, античит - общая защита от читов. Вот он и не даёт инжектнуть чит в защищаемый процесс. Знаю с лаба чувака, давно помогал ему античит пилить(маяк вроде). Туда пихают защиту от всего подрят, всёравно что хипс



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

Создано: 25 января 2014 19:07
· Личное сообщение · #17

ARCHANGEL
> Но что вы будете туда писать, вы уже определились с этим?

Ну как писать шел для LoadLibrary и CreateRemoteThread.




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

Создано: 25 января 2014 19:56
· Личное сообщение · #18

MickeyBlueEyes

Ну что там с загрузкой вышло, сколько ждать можно..



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

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

> Ну что там с загрузкой вышло, сколько ждать можно..
Lwe слишком тяжелая хрень для меня вышла, пока я в ней не розберусь. Благодаря вам и так уже знаю куда копать, сеня ночью подгружу да както )
................
Вышло подгрузится, востановил апи процесса и СДТ, и готово. Но проверят он хуки апи юмода, ктобы сомневался, и потом выкидывает. Так шо прийдётся писать трапы для нужного мне апи, скрывать либу и гуд.




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

Создано: 26 января 2014 09:38
· Личное сообщение · #20

MickeyBlueEyes

> Lwe слишком тяжелая хрень для меня

Куда ещё проще. Линкуете обьектник, либо подключаете дамп(сдампите из экзешника). Вызываете LWE() - это начало мотора передавая аргументы через стек и вызываемый сервис LWE_LOAD_DLL в rEax. В аргументах:

Code:
  1. typedef NTSTATUS (*PLWE)(
  2.    IN PVOID MapToLoad,     ; Адрес файлового образа длл(MZ).
  3.    IN PSTR DllName,        ; Имя модуля, значение имеет для самого модуля и того, кто его юзает.
  4.    OUT PVOID *DllHandle    ; Принимает адрес загрузки.
  5.    );


> прийдётся писать трапы

Какие трапы ?



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

Создано: 26 января 2014 14:31
· Личное сообщение · #21

> Куда ещё проще
Значить так показалось
> Какие трапы ?
Ну как пишу в ап процесса, орыгинальные 5 байт хученых апи, и сразу за ними jmp на апи+5 байт, и должно по идеи всё выполнятся хорошо.




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

Создано: 26 января 2014 15:11 · Поправил: Dr0p
· Личное сообщение · #22

MickeyBlueEyes

> должно по идеи всё выполнятся хорошо.

Не нужны вам эти ваши идеи. Так ничего не делается. Что вышло с загрузкой ?

Трап это тип исключения, ещё этим сами вектора называют и фреймы. Вы наверно имели ввиду траблы"



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

Создано: 26 января 2014 16:02 · Поправил: MickeyBlueEyes
· Личное сообщение · #23

> Трап это тип исключения, ещё этим сами вектора называют и фреймы. Вы наверно имели ввиду траблы"
Нет то я их так назвал, от слова "трамплин" ))) Сразу выполняется орыгинальные 5 байт, затем прижок на остальную не хученую функцию.
> Что вышло с загрузкой ?
У меня токо утро началось) пока ещё не добрался.
........................................................................
Решил все проблемы через перехват sysenter, ну и потом проксирую на не хученое апи и всё работает )




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

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

MickeyBlueEyes

Так это же нубский метод, вручную апишки забивать, обрабатывать, нэйтив портить..

Загрузка прошла или нет моим мотором, мне интересно.

И с патчем шлюза вы явно хотите нас обдурить, ибо необходима маршрутизация из апи, которую вы реализовать не сможите



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

Создано: 27 января 2014 20:58 · Поправил: MickeyBlueEyes
· Личное сообщение · #25

> Так это же нубский метод, вручную апишки забивать, обрабатывать, нэйтив портить..
Почему, просто делаю копию таблици, и перенаправляю всё что нужно на копию.
> Загрузка прошла или нет моим мотором, мне интересно.
Пока не пробывал, но обязательно испытаю и отпишу.
> И с патчем шлюза вы явно хотите нас обдурить, ибо необходима маршрутизация из апи, которую вы реализовать не сможите.
Ну перехватил да, по логике вроде бы ничего особенного, всё должно заработать. Дурить не хотел, ну я попробую.
.................
Добавлю, ну если не извратами, то как ещё защиты обходить, если опыт в крекерстве никакой.
По поводу хакшилда, то там всё что касается игры упаковано в 23гб файл, и покрыт темидой. Открыл винхексом, сразу видно PE заголовок. Запустил поиск по файлу вбил "This program cannot" чтобы найти сколько dll там есть, то порядка 100 штук нашёл, дальше сканить не стал долго, та и смысла нету. Наверное стоит в Вад покопатся? Есть смысл?




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 27 января 2014 21:47
· Личное сообщение · #26

Вот мне интересно, откуда модули возьмутся в ваде, если их грузить вручную? А если их просто грузят из оверлея (а именно так, похоже, и происходит), иначе как объяснить 23 Гб ехе, когда х86 позволяет 4 Гб виртуальной памяти процессу иметь, из которых 2 будут ядерные на большинстве машин. Так вот если грузить из оверлея, то вполне могут и грузить не вручную, а стандартным LoadLibrary, тогда тот же RkU покажет эти модули, даже будь они скрыты из РЕВ.

Отсюда мораль - вряд ли стоит смотреть VAD.

-----
Stuck to the plan, always think that we would stand up, never ran.


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

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

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

> иначе как объяснить 23 Гб ехе,
Не exe нормального размера, просто рядом лежит запакованый файл размером 23гб.
> Так вот если грузить из оверлея
Оверлея? в 2х словах плс




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 27 января 2014 22:04
· Личное сообщение · #28

Да не важен в вашей задаче оверлей, тем более, что его там, похоже, не используют. Просто вы так написали - 23 Гб ехе. Нехилый ехе. А вон оно как.

Я просто знаю, чем закончится этот топик. Ну, предположим, найдёте вы способ грузить свой код. А что дальше? Есть одна книга, я вам её сейчас прикреплю. Там более-мене подробно описывается процесс разработки чита для WoW. Как вы считаете - оно того стоит?

--> Exploiting online games<--

-----
Stuck to the plan, always think that we would stand up, never ran.




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

Создано: 27 января 2014 22:14 · Поправил: MickeyBlueEyes
· Личное сообщение · #29

> Как вы считаете - оно того стоит?
Ну каждый своей дорогой ходит и доходит, надо же на чём-то тренироваться. Вот и взял руля в эту сторону.
> Посмотрел я всёровно в Rku и прочих, то даже никакого списке не отображает ) Типо не доступен из UserMode пишет, ну он сплайсит NtOpenProcess, и прочьи, так что нада предварительно всё поснимать. Ну всёрогно уж гляну чтобы спалось спокойней.
А за книгу благодарю, щас ознакомлюсь.
...........................................................
Это бред, почему я немогу росширить таблицу и сделать копию некоторых апи Nt* и просто менять значения eax на новое и чтобы работало, у винды что там ещё какаято системная инфа?




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

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

MickeyBlueEyes

> если не извратами, то как ещё защиты обходить

Сказал же, исполнять код в копии проекции.

> Наверное стоит в Вад покопатся?

Выдёргиваем понятия из потока инфы ?

> NtOpenProcess

Его фильтр снимать не нужно, вы читаете вообще что я пишу ?



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

Создано: 28 января 2014 17:47
· Личное сообщение · #31

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


<< . 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 » Выход » ЛС
   Для печати Для печати