Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование чужих DLL

1.9K
11 февраля 2004 года
bad_duck
59 / / 29.07.2003
Есть тут у меня одна идея. Всяческие ресурсы из чужого софта повытаскивать. Нехорошо конечно. Но интересно. В часности выдернуть ролики из игры. В папке с игрой есть всяческие DLL'ки. Открываю их PE Explorer'ом. Там среди экспортируемых функций - OpenDivxFile. Сами файлы в немного переделанном Divx'е, как я понимаю, просто так играться не хотят. Тоже самое с музыкой. И я подумал - А пусть DLL'ка мне их играет. Вот только PE Explorer не показывает мне какие параметры принимает функция и что возвращает :( Так как я в АСМе не ах, прошу помощи у вас. Т.е. как определить какие параметы надо передавать в функцию, что она будет возвращать и как все это использовать. Думал вызвавать функции из своей программы на VB, так как его более или менее могу использовать, но... Потому и пишу сюда - в Низкоуровневое...
1.8K
11 февраля 2004 года
MishaSt
170 / / 11.08.2003
Цитата:
Originally posted by bad_duck
Есть тут у меня одна идея. Всяческие ресурсы из чужого софта повытаскивать. Нехорошо конечно. Но интересно. В часности выдернуть ролики из игры. В папке с игрой есть всяческие DLL'ки. Открываю их PE Explorer'ом. Там среди экспортируемых функций - OpenDivxFile. Сами файлы в немного переделанном Divx'е, как я понимаю, просто так играться не хотят. Тоже самое с музыкой. И я подумал - А пусть DLL'ка мне их играет. Вот только PE Explorer не показывает мне какие параметры принимает функция и что возвращает :( Так как я в АСМе не ах, прошу помощи у вас. Т.е. как определить какие параметы надо передавать в функцию, что она будет возвращать и как все это использовать. Думал вызвавать функции из своей программы на VB, так как его более или менее могу использовать, но... Потому и пишу сюда - в Низкоуровневое...


В import table содержатся лишь адреса, там нет количесва передаваемых аргументов. Так что выяснять придётся косвенно. Надо загрузить это дело в дебагер, и выяснить, когда происходит обращение к этой функции, а там посмотреть количество передаваемых параметров, и что они означают, но это вообщем гиморно будет.

1.9K
14 февраля 2004 года
bad_duck
59 / / 29.07.2003
Цитата:
Originally posted by MishaSt

В import table содержатся лишь адреса, там нет количесва передаваемых аргументов. Так что выяснять придётся косвенно. Надо загрузить это дело в дебагер, и выяснить, когда происходит обращение к этой функции, а там посмотреть количество передаваемых параметров, и что они означают, но это вообщем гиморно будет.



Ок. Я так и сделал.
Поставил SoftIce на свою машину с Win2000 и запустил из под него игрушку. Тока облом вышел: по всей видимости из-за того, что игра на экран картинку выводит не так как маздайка. Сам SoftIce работает - когда я его вызвал экран остался черным (игра такую картинку показывала), а когда я вслепую набрал выход - игра продолжилась.
Есть ли выход из этой ситуации?
Драйвер на видео для Сайса использую универсальный - моей MX'овой карточки у него в списке нету :(

3
14 февраля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by MishaSt

В import table содержатся лишь адреса, там нет количесва передаваемых аргументов. Так что выяснять придётся косвенно. Надо загрузить это дело в дебагер, и выяснить, когда происходит обращение к этой функции, а там посмотреть количество передаваемых параметров, и что они означают, но это вообщем гиморно будет.



Ну не обязательно так геморно...
Достаточно воспользоваться IDA.

1.9K
14 февраля 2004 года
bad_duck
59 / / 29.07.2003
Цитата:
Originally posted by Green


Ну не обязательно так геморно...
Достаточно воспользоваться IDA.



Насколько я знаю IDA - дизассемблер и как мне кажеться в данном случае мало поможет. Если нет, объясни как.

3
14 февраля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by bad_duck

Насколько я знаю IDA - дизассемблер и как мне кажеться в данном случае мало поможет. Если нет, объясни как.



Ну это далеко не просто дизасемблер.
Количество передаваемых параметров можно получить по тому, как чиститься стек при завершении функции. IDA определяет это автоматически.
По тому, как используются передаваемые параметры внутри кода DLL можно определить, что они из себя представляют. Потом, конечно, желательно проверить дебагером.
Например, дизассемблировали код, нашли в листинге необходимую процедуру. В её листинге IDA уже указала количество передаваемых аргументов, и пронумеровала их типа arg_0, arg_4, и т.д.
Далее видим, что arg_4 передается в CreateFile первым аргументом, след-но предполагаем, что это имя файла. Ну и т.д.
Требует некоторого навыка, но кто сказал, что будет легко.

1.8K
14 февраля 2004 года
MishaSt
170 / / 11.08.2003
Цитата:
Originally posted by bad_duck


Ок. Я так и сделал.
Поставил SoftIce на свою машину с Win2000 и запустил из под него игрушку. Тока облом вышел: по всей видимости из-за того, что игра на экран картинку выводит не так как маздайка. Сам SoftIce работает - когда я его вызвал экран остался черным (игра такую картинку показывала), а когда я вслепую набрал выход - игра продолжилась.
Есть ли выход из этой ситуации?
Драйвер на видео для Сайса использую универсальный - моей MX'овой карточки у него в списке нету :(


Это бага сайса. Тебе нужен патч для него, он есть в нете. У меня такие же проблеммы были.

1.9K
15 февраля 2004 года
bad_duck
59 / / 29.07.2003
Цитата:
Originally posted by Green


Ну это далеко не просто дизасемблер.
Количество передаваемых параметров можно получить по тому, как чиститься стек при завершении функции. IDA определяет это автоматически.
По тому, как используются передаваемые параметры внутри кода DLL можно определить, что они из себя представляют. Потом, конечно, желательно проверить дебагером.
Например, дизассемблировали код, нашли в листинге необходимую процедуру. В её листинге IDA уже указала количество передаваемых аргументов, и пронумеровала их типа arg_0, arg_4, и т.д.
Далее видим, что arg_4 передается в CreateFile первым аргументом, след-но предполагаем, что это имя файла. Ну и т.д.
Требует некоторого навыка, но кто сказал, что будет легко.



Может подскажешь какой-нибудь урл на страницу с описанием работы с IDA, а то я ничего в нем не понял :(

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог