purebasic.info

PureBasic forum
Текущее время: Чт сен 21, 2017 5:08 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 133 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 10:03 am 
Не в сети
профессор

Зарегистрирован: Пн июл 04, 2011 7:38 am
Сообщений: 729
Откуда: Россия
Благодарил (а): 29 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
В Windows 2000 не пашет, пишет "Не удалось найти точку входа PsGetProcessId в драйвере ntoskrnl.exe" DDK то под XP, а XP на порядок выше чем win2k и с изменениями.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 10:10 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11012
Благодарил (а): 4 раз.
Поблагодарили: 367 раз.
SergeyA писал(а):
В Windows 2000 не пашет, пишет "Не удалось найти точку входа PsGetProcessId
Тот что я выложил - работает на Win 2000.
В исходнике ведь написано.
Код:
1
2
3
4
  Select *NtBuildNumber\u
    Case 2195  ; Win 2000
      gOpenProcId = $06A
      gTerminateProcId = 0 ; Не перехватывать, т. к. в ядре отсутствует Native фукнция PsGetProcessId()!

Если написано "не перехватывать", то зачем было в место нуля, указывать индекс функции NtTerminateProcess?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 10:14 am 
Не в сети
профессор

Зарегистрирован: Пн июл 04, 2011 7:38 am
Сообщений: 729
Откуда: Россия
Благодарил (а): 29 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
Пётр

У меня ругается, да и к чему вообще эта Win, всё что ниже XP - я не признаю.

Пётр

Ещё вот такой вопрос, допустим я сделаю NewList для хранения PID'ов, а как потом из списка очищать ненужный PID, то есть если мы завершили работу с процессом PID которого равен допустим 6300, его же нужно и из списка удалить, вдруг появится не мой процесс с этим PID'ом.

_________________
https://www.instagram.com/sergey.afonichev/


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 10:21 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Что за фигня? Вчера вечером тестил драйвер, кинул прогу и sys на рабочий стол. Сегодня включаю комп, файл драйвера удалился (причём не в Корзину), а Test.exe остался :)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 10:23 am 
Не в сети
профессор

Зарегистрирован: Пн июл 04, 2011 7:38 am
Сообщений: 729
Откуда: Россия
Благодарил (а): 29 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
Никита Однороб

Ох уж эти Windows'ы... :D

_________________
https://www.instagram.com/sergey.afonichev/


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 10:34 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11012
Благодарил (а): 4 раз.
Поблагодарили: 367 раз.
У меня не ругается, странно.

SergeyA писал(а):
Ещё вот такой вопрос, допустим я сделаю NewList
Его придется самому реализовать. Тот что есть, основан на WinAPI, а в драйвере их вызывать нельзя.

SergeyA писал(а):
как потом из списка очищать ненужный PID
Можно через DeviceIoControl_() сообщать драйверу что PID следует исключить из списка защиты.

Еще нужно подумать об случае, когда прога завершилась не сообщив драйверу об PIDах, исключаемых из таблицы.
В случае завершения проги, должна вызываться процедура, указанная в
Код:
1
*DriverObject\MajorFunction[#IRP_MJ_CLOSE]

Сейчас вызывается таже что и при
Код:
1
*DriverObject\MajorFunction[#IRP_MJ_CREATE]

Нужно будет использовать разные процедуры для этих событий

В ядре есть функция PsGetCurrentProcessId(), http://msdn.microsoft.com/en-us/library ... 35(v=vs.85).aspx
которая по судя по названию, возвращает PID процесса из которого в данный момент вызвана функция драйвера. Нужно запоминать этот PID при регистрации защищаемых процессов и в случае вызова функции из #IRP_MJ_CLOSE, исключать все PIDы, указанные этим процессом.

Никита Однороб писал(а):
файл драйвера удалился
Драйвер сделал харакири видя что из себя представляет Win8 изнутри. :D :D

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 10:40 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Пётр писал(а):
Драйвер сделал харакири видя что из себя представляет Win8 изнутри
:D :D :D

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 10:48 am 
Не в сети
профессор

Зарегистрирован: Пн июл 04, 2011 7:38 am
Сообщений: 729
Откуда: Россия
Благодарил (а): 29 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
Пётр

На счёт #IRP_MJ_CLOSE понял, а как реализовать список, Array тоже реализован на WinAPI? чтобы например структуру сделать и изменять размерность массива в структуре

P.S. В Windows Server 2003 дров работает


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 11:01 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11012
Благодарил (а): 4 раз.
Поблагодарили: 367 раз.
Связанный список можно самому сделать. В справке пурика есть показано как он реализован
Код:
1
2
3
4
5
6
7
8
  Structure Element
    *|/1/>Next.Element        ; Pointer to next element in list or zero if at last element
    *Previous.Element    ; Pointer to previous element in list or zero if at first element
 
    ; The users data type which the list was created with will follow
    ; those two variables (which means the user data can be found at
    ; the address of the new element + 8
  EndStructure

То есть это структура в которой есть указатель на структуру следующего элемента и предыдущего элемента, а так же непосредственно данные.
В ntddk.pbi есть структура LIST_ENTRY для реализации списка.
Код:
1
2
3
4
Structure LIST_ENTRY
  *Flink
  *Blink
EndStructure

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

http://web.archive.org/web/201203101103 ... .php?sid=9

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 11:17 am 
Не в сети
профессор

Зарегистрирован: Пн июл 04, 2011 7:38 am
Сообщений: 729
Откуда: Россия
Благодарил (а): 29 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
Пётр

Спасибо, вообщем буду решать по мере надобности, сейчас я думаю и для одного процесса хватит.

_________________
https://www.instagram.com/sergey.afonichev/


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 11:26 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11012
Благодарил (а): 4 раз.
Поблагодарили: 367 раз.
Вообще задачу можно упростить, если использовать статический массив, типа такого.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
#MaxIndex = 200
 
Structure PID_Proc
  ProcPID.l  ; PID процесса, который добавил запись.
  PID.l      ; PID, который нужно защитить.
EndStructure
 
Structure PID_List
  Ar.PID_Proc[#MaxIndex]
EndStructure
 
PID_List.PID_List

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

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 11:29 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Пётр, а не проще поменять адрес функции NtTerminateProcess() в ntdll.dll :)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 11:34 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11012
Благодарил (а): 4 раз.
Поблагодарили: 367 раз.
Никита, читай об этом. http://web.archive.org/web/201111191306 ... =apihook_1

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 11:36 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Пётр
Цитата:
Not Found

The requested URL /web/20111119130602/http://www.wasm.ru/article.php was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 18, 2013 11:38 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Там сейчас вообще wasm.ru в ауте

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 133 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB