Сейчас на форуме: (+5 невидимых)

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

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

Создано: 04 июля 2007 12:11
· Личное сообщение · #1

Я делаю автоанпакер.
Мне(проге) нужно узнать откуда вызывается одна апи функция.
Как это сделать.(Дельфи)



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

Создано: 04 июля 2007 12:23 · Поправил: RamMerlabs
· Личное сообщение · #2

в смысле модуль, из которого вызывается или адрес, где поисходит вызов?



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

Создано: 04 июля 2007 12:24
· Личное сообщение · #3

В смысле адрес где происходит вызов.




Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 04 июля 2007 12:24
· Личное сообщение · #4

Или вопрос не ясно задан или парсить код =)

-----
radio uno in ibisa ...





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

Создано: 04 июля 2007 12:26
· Личное сообщение · #5

прочитать из стека адрес возврата?

asm
mov eax,[esp]
mov address,eax
end;

-----
[nice coder and reverser]




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

Создано: 04 июля 2007 12:36
· Личное сообщение · #6

прочитать из стека адрес возврата?
это понятно а как вообще в дельфи поставить бряк на апи,
чтоб потом уже сделать
asm
mov eax,[esp]
mov address,eax
end;




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

Создано: 04 июля 2007 12:39
· Личное сообщение · #7

хех, с этого и надо было начинать...
берёшь процесс под отладку, лепишь на начало функи $CC и ловишь исключение.
Если ничего не понятно, то юзаешь гугл, там есть исходники...

-----
[nice coder and reverser]





Ранг: 110.0 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 04 июля 2007 12:40
· Личное сообщение · #8

>>это понятно а как вообще в дельфи поставить бряк на апи,

Юзай DebugApi.

-----
Никто не знает столько, сколько не знаю я





Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 04 июля 2007 12:42
· Личное сообщение · #9

Amachbek пишет:
чтоб потом уже сделать
asm
mov eax,[esp]
mov address,eax
end;


а лучше так:

asm
push EAX
mov EAX,[esp+4]
mov adress,EAX
pop EAX
end;

-----
radio uno in ibisa ...




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

Создано: 04 июля 2007 12:43 · Поправил: drin
· Личное сообщение · #10

Amachbek пишет:
а как вообще в дельфи поставить бряк на апи


Используй API-сплайсинг, а на делфи так вообще с этим просто, т.к. есть Ms-Rem'овский advApiHook

И вообще, эта темя уже на днях обсуждалась здесь



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

Создано: 04 июля 2007 13:06
· Личное сообщение · #11

где взять DebugApi?




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

Создано: 04 июля 2007 13:29
· Личное сообщение · #12

> а лучше так:
>
> asm
> push EAX
> mov EAX,[esp+4]
> mov adress,EAX
> pop EAX
> end;

Ну можно и так:

asm
push dword ptr [esp]
pop dword ptr address
and;

ps Зачем DebugApi? Добавил в прогу SEH который поставит дебажный флажокк и будет self-tracing.

-----
The one derivative you manage is the one I abhore (c) Slipknot




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

Создано: 04 июля 2007 13:45
· Личное сообщение · #13

Chingachguk пишет:
Добавил в прогу SEH который поставит дебажный флажокк и будет self-tracing.
- по-моему лучше VEH поставить и обрабатывать все исключения, а не пошагово идти (по-моему скорость будет выше, хотя х.з. ).
P.S: Amachbek-если будешь бряк писать на функцию в длл - пиши только после того места, где ты уверен что все длл подгружены программой (например на ОЕП), иначе будет вечная память героям.

-----
Само плывет в pуки только то, что не тонет.





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

Создано: 04 июля 2007 13:49
· Личное сообщение · #14

> а не пошагово идти

Ну я имел в виду что можно контролировать выполняемый код ;)

-----
The one derivative you manage is the one I abhore (c) Slipknot




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

Создано: 04 июля 2007 15:01
· Личное сообщение · #15

Попытался использовать HookProc из advApiHook.
Но он реагирует на вызовы функции только в самой программе, а в другой проге нет.
Что делать?



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

Создано: 04 июля 2007 15:11
· Личное сообщение · #16

Amachbek
прочитай статьи Ms-Rem о перехвате API. там тебе и код на делфи будет



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

Создано: 04 июля 2007 19:29 · Поправил: Amachbek
· Личное сообщение · #17

asd пишет:
рочитай статьи Ms-Rem о перехвате API. там тебе и код на делфи будет

Читал. Не помогло.



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

Создано: 04 июля 2007 19:53
· Личное сообщение · #18

Amachbek пишет:
Попытался использовать HookProc из advApiHook.
Но он реагирует на вызовы функции только в самой программе, а в другой проге нет.
Что делать?

Пишеш dll, инжектиш ее к чужому процессу (в том же advApiHook есть куча разных реализаций этого дела), в самой dll перехватываешь API, и делаешь все что хотел...



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

Создано: 04 июля 2007 19:58
· Личное сообщение · #19

Satanael пишет:
Юзай DebugApi.


Для автоанпакера использование DebugApi зачастую являеться не наилучшей идеей, учитывая то что большинство протов щас используют кучу антиотладочных фокусов


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


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