Как узнать какие Api-функции юзает программа?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Как узнать какие Api-функции юзает программа?

Сообщение GM » 11.07.2004 (Вс) 8:49

Как узнать какие Api-функции юзает ехешник, вообще, не в ран-тайме? Вряд ли кто нибудь ответит, ну все равно задам. :(
الفيجوال بيسك الرابح

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 11.07.2004 (Вс) 10:38

как узнать Какие АПИ незнаю ... , но к каким ДЛЛ кам обращается можно узнать из Дизассемблера..., HEX редактора...

Вот одна из этих программ PE Explorer
<<------- EvilCoder ------->>

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.07.2004 (Вс) 12:07

Dependency Walker из состава Студии. Лучше юзать тот, который идет вместе с последними Platform SDK - он покруче будет, позволяет даже профилировать процессы и в рантайме составлять список функций, идущих по позднему связыванию.

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 11.07.2004 (Вс) 20:24

ExeScope попробуй, он показывает какие ДЛЛ и помоему какие функции из этих библиотек используются....

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 12.07.2004 (Пн) 0:19

Об Dependency Walker и о других прогах я знаю,но вот проблема в том что это нужно сделать програмно :shock:, а как разве что структуру файла сканировать :?: :?: :?:
الفيجوال بيسك الرابح

pitbull
Постоялец
Постоялец
 
Сообщения: 314
Зарегистрирован: 25.06.2004 (Пт) 15:37
Откуда: Кемерово

Сообщение pitbull » 12.07.2004 (Пн) 8:35

Тебе нужно почитать кое-какие справочки по структуре EXE. Например эту. Также не помешает зайти на сайт http://www.wasm.ru. Там есть еще справочки.
Вложения
vgw32.zip
Справка по PE
(302.91 Кб) Скачиваний: 26

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Как узнать какие Api-функции юзает программа?

Сообщение codemaster » 12.07.2004 (Пн) 10:00

GM писал(а):Как узнать какие Api-функции юзает ехешник, вообще, не в ран-тайме? Вряд ли кто нибудь ответит, ну все равно задам. :(


что ты хочеш собственно с этого получить?

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 12.07.2004 (Пн) 14:56

А по конкретнее, как вызов DLL в ASM кде выглядит? А то я на ASM'е с DLL никогда ничего не делал... :(
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 13.07.2004 (Вт) 5:27

Zer писал(а):А по конкретнее, как вызов DLL в ASM кде выглядит? А то я на ASM'е с DLL никогда ничего не делал... :(

:) Выделение памяти, загрузка бинарного кода из файла в это место, передача (вызов) управления функции, возврат. Вот собственно и всё. Хотя сейчас новые asm-компиляторы воспринимают объявления API-функций а-ля C++... Потому следует различать asm и непосредственно ОпКоды
С уважением, Approximator.

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 13.07.2004 (Вт) 14:29

Хмм... Если компилятор будет заренее выделять место под функцию из dll то exe'шник получися весьма увесистым... А раз он небольшой, то программа сама отыскивает эту функцию, определяет её размер, ге она начинается и олько потом загружает её в оперативную память... Значит всё-таки можно определить, какими API пользуется программа... :idea: :wink:
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 14.07.2004 (Ср) 2:29

Zer писал(а):Хмм... Если компилятор будет заренее выделять место под функцию из dll то exe'шник получися весьма увесистым...

Это ещё почему? Так не бывает. Библиотека загружается во время работы, а в файле прописан только вызов стандартными средствами (от 12 байт).
А раз он небольшой, то программа сама отыскивает эту функцию, определяет её размер, ге она начинается и олько потом загружает её в оперативную память... Значит всё-таки можно определить, какими API пользуется программа... :idea: :wink:

А это как делается? Выделяется место под загрузку (куда грузить-то?), и далее, как по тексту выше.
С уважением, Approximator.

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 14.07.2004 (Ср) 8:36

Это ещё почему? Так не бывает. Библиотека загружается во время работы, а в файле прописан только вызов стандартными средствами (от 12 байт).

Значит всё-таки прописана ссылка на API-функцию, а следовательно можно определить и саму фун. ...
Выделяется место под загрузку (куда грузить-то?), и далее, как по тексту выше.

Вот и глядеть, откуда грузит и чего... :!:
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 15.07.2004 (Чт) 1:35

Zer писал(а):
Это ещё почему? Так не бывает. Библиотека загружается во время работы, а в файле прописан только вызов стандартными средствами (от 12 байт).

Значит всё-таки прописана ссылка на API-функцию, а следовательно можно определить и саму фун. ...
Выделяется место под загрузку (куда грузить-то?), и далее, как по тексту выше.

Вот и глядеть, откуда грузит и чего... :!:

Не знаю. Не уверен, что ВСЕГДА может сущетсвовать такая возможность. Всё зависит от способа компиляции. Можно так исказить код (например, перемешав его с константами или ещё чем нибудь, что даст сдвиг). Нет, единственное, что можно сделать это послать всё это в debug и отслеживать САМОМУ точки перехода... на внешний вид кода придётся не обращать внимание... опять же возможен сдвиг с полным искажением... кстати, попробуйте подобным образом прогуляться по системным dll... в большинстве случаев код сдвинут и при дизассемблировании получается полная хренотень.
С уважением, Approximator.

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 15.07.2004 (Чт) 12:34

Да, код там действительно корявый... но VB очень хреново кодирует данные(в отличие от C++). Можно через поиск в HexEdit'е найти, например, свойство caption у вашей кнопки, тока символы разделены. Между ними CHR$(20), если не ошибаюсь. :idea:
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 16.07.2004 (Пт) 4:58

Zer писал(а):Да, код там действительно корявый... но VB очень хреново кодирует данные(в отличие от C++). Можно через поиск в HexEdit'е найти, например, свойство caption у вашей кнопки, тока символы разделены. Между ними CHR$(20), если не ошибаюсь. :idea:


Если вопрос исключительно о VB, тогда и всё оствльное найти не проблема.
С уважением, Approximator.

Dagobert
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 141
Зарегистрирован: 21.12.2002 (Сб) 6:48
Откуда: Russia

Сообщение Dagobert » 16.07.2004 (Пт) 5:30

Насчёт вызова функций могу сказать, что это делается так:
LoadLibrary - получение хэндла библиотеки
GetProcAdress - сами догадаетесь? :D
А потом вызов по адресу. Я использовал CreateThread.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 16.07.2004 (Пт) 6:06

Dagobert писал(а):Насчёт вызова функций могу сказать, что это делается так:
LoadLibrary - получение хэндла библиотеки
GetProcAdress - сами догадаетесь? :D
А потом вызов по адресу. Я использовал CreateThread.

Насколько я понимаю, то это к обсуждаемому вопросу отношения не имеет. Вопрос вёлся об exe'шнике. Как по его коду узнать какие API-функции используются. Каким это боком может помочь?
С уважением, Approximator.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: PetalBot, Yandex-бот и гости: 23

    TopList  
cron