Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.26;
Скачать: CL | DM;

Вниз

Как получить список функций из 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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.011 c
2-1221392760
Scary
2008-09-14 15:46
2008.10.26
Из ресурса в скрытый файл


15-1220381821
xayam
2008-09-02 22:57
2008.10.26
Восстановление файловой таблицы NTFS - MFT


15-1218174240
TUser
2008-08-08 09:44
2008.10.26
Объявлена дата запуска LHC


15-1220190358
Синий Дракон
2008-08-31 17:45
2008.10.26
Логическая задача


2-1221810379
MaxX
2008-09-19 11:46
2008.10.26
Как узнать есть ли у компонента свойство Caption ?