Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];

Вниз

Как получить список функций из dll?   Найти похожие ветки 

 
@!!ex ©   (2008-09-04 07:53) [0]

Суть задачи:
Есть dll(сказано, что она с дебаговой информацией собрана):

Нужно получить список функций с параметрами, написать враппер и логировать все вызовы функций.
Проблема в том, что я не знаю как выдрать инфу о функциях и их параметрах...


 
@!!ex ©   (2008-09-04 07:54) [1]

Вот dll:
http://www.mediafire.com/?21xzrcvmx11


 
xayam ©   (2008-09-04 08:35) [2]

http://xayam.900megs.com/index.php?s=%2B%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA+%2B%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9&pnumber=30&forum=&user=


 
xayam ©   (2008-09-04 08:42) [3]

точнее где-то в этой ветке http://xayam.900megs.com/html/html53/5-1117141426.html исходный код в постах Игоря Шевченко


 
@!!ex ©   (2008-09-04 08:47) [4]

Функции выдрать не вопрос! Как параметры функций получить??


 
Игорь Шевченко ©   (2008-09-04 09:25) [5]


> Как параметры функций получить??


поговорить с авторами


 
oxffff ©   (2008-09-04 09:34) [6]


> @!!ex ©   (04.09.08 07:53)  


Смотри MSDN

You can get the decorated form of a function name after you compile the source file that contains the function definition or prototype. To examine decorated names in your program, you can do one of the following:

Use a listing

Use the DUMPBIN tool

You can use the undname.exe to convert a decorated name to its undecorated form. For example,

 Copy Code
C:\>undname ?func1@a@@AAEXH@Z
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation 1981-2000. All rights reserved.Undecoration
of :- "?func1@a@@AAEXH@Z"
is :- "private: void __thiscall a::func1(int)"


 
oxffff ©   (2008-09-04 09:35) [7]

Вот соответствие их нотации

?func1@a@@AAEXH@Z  = private: void __thiscall a::func1(int)


 
Rouse_ ©   (2008-09-04 09:50) [8]


> Проблема в том, что я не знаю как выдрать инфу о функциях
> и их параметрах...

Сам список функций можно получить например вот так: http://rouse.drkb.ru/winapi.php#propsheet
А параметры, точнее их размер - только дизассемблированием :)


 
Petr V. Abramov ©   (2008-09-04 10:02) [9]


> Rouse_ ©   (04.09.08 09:50) [8]

а через debug_info?


 
Rouse_ ©   (2008-09-04 10:26) [10]


> а через debug_info?

А что ты там вытащищь? Вот тебе что на входе:
extern "C" __declspec(dllexport) DWORD WINAPI GSPriceSRCPluginLogin(
LPCTSTR szUserName, LPCTSTR szPassword, LPSTR* szErrorDescription)


вот что видно с отладочной инфой:
; int __cdecl sub_10034430(LPVOID lp,int,int)
.text:10034430 sub_10034430    proc near               ; CODE XREF: GSPriceSRCPluginGetPriceDataj
.text:10034430
.text:10034430 var_380         = dword ptr -380h
.text:10034430 var_37C         = dword ptr -37Ch
.text:10034430 var_370         = dword ptr -370h
.text:10034430 var_364         = dword ptr -364h
.text:10034430 var_358         = dword ptr -358h
.text:10034430 var_34C         = dword ptr -34Ch
.text:10034430 var_340         = dword ptr -340h
.text:10034430 var_334         = dword ptr -334h
.text:10034430 var_328         = dword ptr -328h
.text:10034430 var_25C         = dword ptr -25Ch
.text:10034430 var_250         = dword ptr -250h
.text:10034430 var_24C         = dword ptr -24Ch
.text:10034430 var_230         = byte ptr -230h
.text:10034430 var_22F         = dword ptr -22Fh
.text:10034430 var_12F         = dword ptr -12Fh
.text:10034430 ucb             = dword ptr -20h
.text:10034430 var_18          = dword ptr -18h
.text:10034430 var_10          = dword ptr -10h
.text:10034430 var_8           = dword ptr -8
.text:10034430 var_4           = dword ptr -4
.text:10034430 lp              = dword ptr  8
.text:10034430 arg_4           = dword ptr  0Ch
.text:10034430 arg_8           = dword ptr  10h


 
Rouse_ ©   (2008-09-04 10:28) [11]

Пардон, вот правильный :
extern "C" __declspec(dllexport) DWORD WINAPI GSPriceSRCPluginGetPriceData(
LPPRICEPLUGINRESQUERY pQuery, LPPRICEPLUGINRESOUTRECORD pBuffer, LPDWORD cnSize)


 
@!!ex ©   (2008-09-04 10:34) [12]

IDA параметры вынула... но как теперь это скинуть в файл - непонятно...


> [6] oxffff ©   (04.09.08 09:34)

Спасибо!


 
Правильный$Вася   (2008-09-04 11:01) [13]


> Есть dll(сказано, что она с дебаговой информацией собрана):
> Нужно получить список функций с параметрами

у того, кто тебе ее сдал с дебаговой информацией, он же должен дать полное описание функциональности и параметров
если не дает, в ж..у таких, пускай сами в своем г..е копаются


 
@!!ex ©   (2008-09-04 11:56) [14]

> [13] Правильный$Вася   (04.09.08 11:01)

Тот, кто сделал эту длл продал права издателю...
А вот издатель принес проект в нашу фирму...
А начальство скинуло проект мне...
Вот и парюсь теперь.


 
Правильный$Вася   (2008-09-04 11:57) [15]

ну так и выуди по иерархии в обратную сторону то, что тебе надо
или слабо?


 
@!!ex ©   (2008-09-04 12:18) [16]

> [15] Правильный$Вася   (04.09.08 11:57)

Так выудил уже с помощью IDA...
Только теперь у меня есть кучка файлов зашифрованных...
Алгоритм шифрования не известен... Известно что зашифровано с помощью Crypto++, известна часть зашифрованных данных...
Как данные вынуть??


 
Правильный$Вася   (2008-09-04 12:24) [17]

выуди по иерархии "начальство-издатель-разработчик"
отсутствие документации является препятсвием для нормальной работы (и для получения денег), это не может не понимать твое начальство, если объяснишь ему
а оно, если с головой, продолжит мысль в сторону разраба

а хакерскими методами ты Integer от DWORD не отличишь, я уж не говорю, если это окажется указатель на что-то


 
@!!ex ©   (2008-09-04 12:40) [18]

> отсутствие документации является препятсвием для нормальной
> работы (и для получения денег), это не может не понимать
> твое начальство, если объяснишь ему
> а оно, если с головой, продолжит мысль в сторону разраба

Нету уже разработчика. В этом и проблема...


 
Правильный$Вася   (2008-09-04 12:46) [19]


> Нету уже разработчика. В этом и проблема...

а права он продавал на бинарник или все ж таки на свое изделие
тогда дознаваться у издателя, правопреемника, наследника и т.п.

хотя, если тебе охота стать крайним, перышко в ... , как говорится


 
@!!ex ©   (2008-09-04 12:58) [20]

> а права он продавал на бинарник или все ж таки на свое изделие
> тогда дознаваться у издателя, правопреемника, наследника
> и т.п.

На бинарник.


> хотя, если тебе охота стать крайним, перышко в ... , как
> говорится

Крайним то я не стану, просто придется сказать начальству, что разобраться не могу.


 
Правильный$Вася   (2008-09-04 13:03) [21]


> На бинарник.

без документации?!
вас кинули - так начальству и передай


 
@!!ex ©   (2008-09-04 13:10) [22]

> [21] Правильный$Вася   (04.09.08 13:03)

Да не кинули... Нормальная это практика, уже не первый проект.
Просто первый раз такой геморой.


 
Правильный$Вася   (2008-09-04 13:15) [23]


> Да не кинули... Нормальная это практика, уже не первый проект.

о, да вас постоянно кидают, что вы уже это нормой воспринимаете
мамочки!


 
@!!ex ©   (2008-09-04 13:20) [24]

> [23] Правильный$Вася   (04.09.08 13:15)

:))))
Просто разбор ресурсов входит в контракт. Это обычное условие.
Если ресурсы разобрать не удается, то об этом заказчику сообщается и он ищет решения.
Собственно я в фирме недавно, пока полностью сделали один проект, второй в стадии тестирования, заказчики помогают, но сами сорсов не имеют.


 
Правильный$Вася   (2008-09-04 13:25) [25]


> Просто разбор ресурсов входит в контракт. Это обычное условие.

дык, я и говорю - кидают, причем официально

пример:
я писатель, написал крутющий роман, дал почитать издателю, он подписал контракт на издание
а я ему в зашифрованном виде текст отдаю и без пароля, нехай долбится, уже его проблемы - издаст или нет

ку?


 
@!!ex ©   (2008-09-04 13:30) [26]

> [25] Правильный$Вася   (04.09.08 13:25)

Нет не ку.
Тут речь об играх.
Издатель покупает игры.
Игры вполне успешно работают, издатель и слова такого "сорсы" не знает.
И все у них замечательно, пока не нужно влезть в ресурсы, и что нить там подправить, например провести локализацию(наш случай).


 
Правильный$Вася   (2008-09-04 13:32) [27]


> И все у них замечательно, пока не нужно влезть в ресурсы

т.е. вы сами себя контрактом оболваниваете, хотя и знаете, что все равно придется лезть внутрь, но изображаете ежиков на кактусе


 
Slym ©   (2008-09-04 13:47) [28]

@!!ex ©   (04.09.08 13:20) [24]
разбор ресурсов

Хакаете чужой софт? А это законно? Ведь не зря зашифровано... Чтоб не спиратили...


 
@!!ex ©   (2008-09-04 14:22) [29]

> т.е. вы сами себя контрактом оболваниваете, хотя и знаете,
> что все равно придется лезть внутрь, но изображаете ежиков
> на кактусе

Знаем. Поэтому оценка работы идет ПЕРЕД заключением контракта. :)
Тоесть я сейчас скажу начальству, что не смог разобрать ресурсы, это попробуют сделать еще несколько человек(собственно и я не первый), не получится - об этом будет сказано заказчику и начальство будет искать альтернативные решения.


> [28] Slym ©   (04.09.08 13:47)

Вполне. Первое чем я поинересовался, когда устраивался на работу - это законность.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.007 c
6-1194609413
Muxau
2007-11-09 14:56
2008.10.26
ICS THttpCli


15-1220494565
Slider007
2008-09-04 06:16
2008.10.26
С днем рождения ! 4 сентября 2008 четверг


15-1220414845
ketmar
2008-09-03 08:07
2008.10.26
пост иключительно для операфилов


15-1220445110
Vlad Oshin
2008-09-03 16:31
2008.10.26
Все таки профессия накладывает .. :)


2-1221668340
Drowsy
2008-09-17 20:19
2008.10.26
Как из базы IB вытянуть список несистемных таблиц?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский