Сейчас на форуме: zds, tyns777, JustLife, 2nd, morgot, Rio, CDK123 (+4 невидимых)

 eXeL@B —› Программирование —› Плагин для ольки
Посл.ответ Сообщение


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

Создано: 24 декабря 2008 13:07
· Личное сообщение · #1

Доброго всем времени суток. Вопрос такой - пишу свой плагин для ольки, от него требуется, чтоб в отлаживаемом олькой процессе он перехватывал бы некоторые функции, с перехватом проблем нет, но вот есть проблема, как получить хендл отлаживаемого процесса из плагина. Первое, что в голову приходит - это перехват CreateProcess в ольке, а потом смотреть в структуру PROCESS_INFORMATION, но это решение - не самое приятное. Может, есть ещё какое-то, о котором мне - весьма дремучему человеку - неизвестно?

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




Ранг: 4.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 декабря 2008 13:24
· Личное сообщение · #2

Хммм... Глянь сюда wasm.ru/article.php?article=1021003



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

Создано: 24 декабря 2008 13:29
· Личное сообщение · #3

Читайте PluginSDK:
Plugingetvalue function:
...
VAL_HPROCESS (HANDLE) Handle of debugged process
VAL_PROCESSID Process ID of debugged process




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

Создано: 24 декабря 2008 15:07 · Поправил: ARCHANGEL
· Личное сообщение · #4

Wyfinger
Спасибо, я его, вообще-то, читаю, но это место пропустил, видимо, по невнимательности

Проблема в том, что при загрузке исполняемого файла в отладчика собственно загрузка-то происходит не одновременно з запуском ольки и моего плагина, а чуть позже. Как отловить момент, когда эти прекрасные переменные из SDK будут иметь нужные мне значения?

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





Ранг: 105.9 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 24 декабря 2008 20:28
· Личное сообщение · #5

Раз уж всплыла тема, кто подскажет какой функцией удалить TY_ONESHOT брейкпоинт?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 24 декабря 2008 20:36 · Поправил: Hellspawn
· Личное сообщение · #6

удаляю EP бряк:
Code:
  1. procedure RemoveBreak(); assembler;
  2.   asm
  3.     pushad
  4.     CALL GetCurrentThread
  5.     push eax
  6.     CALL Findthread
  7.     mov ebx,edx
  8.     mov eax,[ebx+14h] // eax = address
  9.     push 0
  10.     lea ecx,[eax+1]
  11.     push ecx          // следующий байт после = address + 1
  12.     push eax          // address
  13.     CALL Deletebreakpoints
  14.     add esp,10h
  15.     popad
  16.   end


-----
[nice coder and reverser]





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

Создано: 24 декабря 2008 22:37 · Поправил: ARCHANGEL
· Личное сообщение · #7

Хм, это, конечно, интересно, но хотелось бы услышать ответ на мой вопрос. Hellspawn, в вашем же с Арчером Фантоме есть такое дело. Как вы там это сделали?

Hellspawn
Точно! Ну, блин, я туплю! Спасибо.

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





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 24 декабря 2008 22:39
· Личное сообщение · #8

не понял проблемы...

Code:
  1. procedure ODBG_Pluginmainloop(debugevent: PDebugEvent); cdecl;
  2. ...
  3.   dwEvent := DE.dwDebugEventCode;
  4. ...
  5.   If (dwEvent = CREATE_PROCESS_DEBUG_EVENT) then
  6.   begin
  7.   end;
  8. ...


-----
[nice coder and reverser]



 eXeL@B —› Программирование —› Плагин для ольки
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати