Сейчас на форуме: UniSoft, _MBK_, laslo, bartolomeo (+7 невидимых)

 eXeL@B —› Программирование —› SendInput, KeyBd_Event не работают
Посл.ответ Сообщение

Ранг: 16.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 22 июня 2011 18:18 · Поправил: 50Hz_220B_1200W
· Личное сообщение · #1

Доброго времени суток!
Проблема в следующем: после обновления программы перестали работать SendInput, KeyBd_Event. Т.е. они работают, но при запуске программы, они перестают работать. Ввод с клавиатуры нормально.
Как с этим бороться?

Заранее спасибо.
D7 WinXP




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 22 июня 2011 18:39
· Личное сообщение · #2

Может хук какой глобальный ставится и фильтрует сообщения для своего приложения?

-----
Yann Tiersen best and do not fuck




Ранг: 16.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 22 июня 2011 18:46 · Поправил: 50Hz_220B_1200W
· Личное сообщение · #3

Вряд ли хук, т.к. после запуска программы не работает KeyBD_Event, Mouse_Event и в моем приложении и в созданном приложении для иследовании проблеммы =)). т.е. нигде не работает. Решил с бубном, перекинул себе User32.dll, загрузил либу, заюзал из нее процедуру, - проблема осталась. Траблы =)




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 22 июня 2011 19:35
· Личное сообщение · #4

50Hz_220B_1200W пишет:
Вряд ли хук, т.к. после запуска программы не работает KeyBD_Event и в моем приложении и в созданном приложении для иследовании проблеммы =)). т.е. нигде не работает.

отсюда и следует, что хук глобальный

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 16.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 23 июня 2011 11:11 · Поправил: 50Hz_220B_1200W
· Личное сообщение · #5

Даж не знаю с чего начать исследование проблемы. Нет опыта ни с работай драйвера клавиатуры, ни с удалением (не своих) глобальных хуков. В инете тольк для "чайников" как поставить хук и что такое хук. Грусть.
Необходимо сделать нажатие клавиш, возможно без участия KeyBD_Event. Пока вижу один вариант - юзание i8042prt.sys. Как из D7 добраться до $60h $64h. Хелп!



Ранг: 16.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 24 июня 2011 12:41
· Личное сообщение · #6

как можно осуществить эмуляцию нажатия клавиш через драйвер клавиатуры 'i8042prt.sys', вроде порты $60h $64h? Я понимаю что на дельфях это почти не возможно, но все же. Если можно помогите исходником. Если на языке<>дельфях, придется осваивать новое. Заранее спасибо.



Ранг: 16.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 30 июня 2011 07:10 · Поправил: 50Hz_220B_1200W
· Личное сообщение · #7

Приложение скрытое найдено, хендл его определен. Но, драйвер, устанавливаемый перехватывает NtWriteVirtualMemory (805B4396->B36F6772). К приложениию подключаются бибиотека (XXX).dll. Имеются три нити, одна из которых по всей видимости устанавливая глобальных хук фильтрует сообщения (но не от клавиатуры!).
Собственно вопросы:
1. Определить, установлен ли на самом деле хук, или по другому фильтруются сообщения, если установлен найти, обойти.

2. есть ли аналог:

Code:
  1. Procedure GetProcessList(var NameList, HandleList: TList);
  2. asm 
  3.  push ebp 
  4.  mov ebp, esp
  5.  push ecx
  6.  push ebx
  7.  push esi
  8.  push edi
  9.  mov esi, edx
  10.  mov ebx,eax
  11.  push $05
  12.  call @GetInfoTable
  13.  jmp @InfoTableEnd
  14.  @GetInfoTable:
  15.  push ebp
  16.  mov ebp, esp
  17.  sub esp, $04h
  18.  push esi 
  19.  push 0
  20.  pop dword ptr [ebp - $04] 
  21.  mov esi, $4000
  22.  @GetInfoTable_doublespace:
  23.  shl esi, $01
  24.  push esi
  25.  push 0
  26.  call LocalAlloc
  27.  test eax, eax
  28.  jz @GetInfoTable_failed 
  29.  mov [ebp-$04], eax 
  30.  push 0
  31.  push esi
  32.  push eax
  33.  push dword ptr [ebp + $08]
  34.  call @OpenKernelData
  35.  jmp @Cont 
  36.  @OpenKernelData: 
  37.  mov eax, $AD 
  38.  call @SystemCall 
  39.  ret $10 
  40.  @SystemCall: 
  41.  mov edx, esp 
  42.  sysenter 
  43.  @Cont: 
  44.  test eax, $C0000000 
  45.  jz @GetInfoTable_end 
  46.  cmp eax, $C0000004
  47.  jnz @GetInfoTable_failed 
  48.  push dword ptr [ebp - $04] 
  49.  call LocalFree 
  50.  jmp @GetInfoTable_doublespace 
  51.  @GetInfoTable_failed: 
  52.  push 0 
  53.  pop dword ptr [ebp - $04] 
  54.  @GetInfoTable_end: 
  55.  mov eax,[ebp - $04] 
  56.  pop esi 
  57.  leave 
  58.  ret $04 
  59.  @InfoTableEnd: 
  60.  mov [edi], eax 
  61.  @FindData: 
  62.  mov edx, [eax + $3C] 
  63.  mov eax, [ebx] 
  64.  call TList.Add  //NameList.Add 
  65.  mov eax, [edi] 
  66.  lea edx, [eax + $44] 
  67.  mov eax, [esi] 
  68.  call TList.Add  //HandleList.Add 
  69.  mov eax, [edi] 
  70.  cmp [eax], 0 
  71.  jz @EndData 
  72.  add eax, [eax] 
  73.  mov [edi], eax 
  74.  jmp @FindData 
  75.  @EndData: 
  76.  pop edi  
  77.  pop esi 
  78.  pop ebx 
  79.  pop ecx 
  80.  pop ebp 
  81.  ret 
  82. end;

этот код возвращает список процесоов, нужен аналог для сокрытия процессов ниже ZwQuerySystemInformation

3. Найти хуки (глоб. перехваты) в цепочке хуков
з.ы. Обход данной защиты только для сугубо личных целей и не будет служить для разработки вредных программ. Только для использования на моем компьютере.

ps только что нашел что установлен перехват на ntUserSendInput, поэтому вопрос о глобальных хуках отпал. Этот перехват из драйвера. Вопрос: можно ли обойти не снимая сам перехват? т.е. реализация SendInput на низком уровне.

Заранее спасибо



Ранг: 16.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 02 июля 2011 04:59
· Личное сообщение · #8

В статье Ms-Rem'a (Перехват API функций в Windows NT (часть 3). Нулевое кольцо) написано:
В NativeAPI пользовательского уровня мы имеем пары аналогичных функций, отличающиеся только префиксами Zw и Nt, там они отличаются только названием, а имеют одну и ту же точку входа. На уровне ядра мы также имеем аналогичные пары функций, но между ними имеется одно различие, функции с префиксом Zw производят перед выполнением действия проверки системы безопасности (прав пользователя), а функции с префиксом Nt - нет.

Отсюда возник вопросы:
1. Если нету проверки безопасности, то можно перехватить нужную nt функцию из юзермода, например, подменой jmp'a на свой (ну соотв. с возвратом =)).
2. Если первое возможно, то ... Если драйвер (не мой) ставит перехват на нужную мне nt функцию, то будет ли полезен мой перехват? Т.к. я буду перехватывать саму функцию, миную цепочку перехватов. Перехват драйвера (если он установлен после моего перехвата) будет бесполезен.

Пытался доступно объяснить, извините, если где то не понятно. Если не прав, прошу поправить. Заранее спасибо




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

Создано: 02 июля 2011 10:33
· Личное сообщение · #9

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




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

Создано: 02 июля 2011 13:00
· Личное сообщение · #10

50Hz_220B_1200W
Вам бы вот эту тему почитать, там про перехваты написано достаточно.

--> Ссылко <--

Есть ещё и рабочий пример, правда, в вашем случае нужно это перенастрить на KeServiceDescriptorShadow.
Но почитать, думаю, всё же стоит.

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




Ранг: 16.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 02 июля 2011 15:59 · Поправил: 50Hz_220B_1200W
· Личное сообщение · #11

да, для меня тема, буду разбираться

правлено
Тема фроста, но цели немного другие: Нет необходимости внедряться куда либо. Необходимо скрыться от фроста и сделать рабочими для моего приложения SendInput. Моя программа (автокликер) использует KeyDB_event, Mouse_Event, GetPixel.




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

Создано: 06 июля 2011 07:31
· Личное сообщение · #12

50Hz_220B_1200W пишет:
Нет необходимости внедряться куда либо. Необходимо скрыться от фроста и сделать рабочими для моего приложения SendInput

Читайте внимательнее.

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



 eXeL@B —› Программирование —› SendInput, KeyBd_Event не работают
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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