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

 eXeL@B —› Основной форум —› Вопроиск по Dll
Посл.ответ Сообщение

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

Создано: 22 октября 2006 22:46 · Поправил: crash_rider
· Личное сообщение · #1

Есть некая Dll (осуществляет упраление Mp3 плеером по USB через драйвер) в ней экспортируемая функция CreateInterface (обозвал ее TCreateInterface)
После недельного ковыряния в Иде выяснил, что TCreateInterface содержит
[HIGHLIGHT=asm]
TCreateInterface dd offset sub_10001090 ; DATA XREF: CreateInterface
.rdata:10004070 ; sub_100010B0
.rdata:10004074 dd offset sub_10002B10
.rdata:10004078 dd offset sub_10001110
.rdata:1000407C dd offset sub_10001120
.rdata:10004080 dd offset CloseAllHandle (обозвал по выполняемым функциям)
.rdata:10004084 dd offset Func_DeviceIoControl (обозвал по выполняемым функциям)
.rdata:10004088 dd offset sub_10001220
.rdata:1000408C dd offset sub_100012F0
.rdata:10004090 dd offset sub_10001210
.rdata:10004094 dd offset sub_10001160
.rdata:10004098 dd offset sub_100011B0
.rdata:1000409C dd offset sub_10001320
.rdata:100040A0 dd offset sub_10001370
.rdata:100040A4 dd offset sub_100013C0
.rdata:100040A8 dd offset sub_10001400
.rdata:100040AC dd offset sub_10001450
.rdata:100040B0 dd offset sub_10001460
.rdata:100040B4 dd offset sub_10001530
.rdata:100040B8 dd offset sub_10001590
.rdata:100040BC dd offset sub_10001600
.rdata:100040C0 dd offset sub_10001450
.rdata:100040C4 dd offset sub_10001640
.rdata:100040C8 dd offset sub_10001750
.rdata:100040CC dd offset sub_10001D20
.rdata:100040D0 dd offset sub_10001D40
.rdata:100040D4 dd offset sub_10001D60
.rdata:100040D8 dd offset WriteCommand (обозвал по выполняемым функциям)
.rdata:100040DC dd offset WriteCommand2 (обозвал по выполняемым функциям)
.rdata:100040E0 dd offset ReadCommand (обозвал по выполняемым функциям)
[/HIGHLIGHT]
Это Все понятно, но как узнать какие у этих функций или процедур (не понятно) параметры?
В приложении мендежере (весьма корявом) постоянно эксепшены сыплються,в поддержке не отвечают и сайт молчит уже год...
его не поддерживает производитель MpMan-F70
(Я уже переехал на Red Hat там более менее стабильный менеджер для MpMan F70, но каждый раз при заливке файла грузить линух не катит...)
Написали это все Покемоны из Dynamic Naked Audio Inc, я писал им молчат как партизаны...(как будто еще комуто нужны их Dll кроме владельцев плеера :s10
Короче труба! че делать не знаю поможите :
Аттач с сабжом ниже...
d186_22.10.2006_CRACKLAB.rU.tgz - MPMan_Manager.rar



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

Создано: 22 октября 2006 23:25
· Личное сообщение · #2

но сама DLL-то нормальная? заюзай ее... или ты хочешь портировать все на linux?

-----
MicroSoft? Is it some kind of a toilet paper?




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

Создано: 22 октября 2006 23:42
· Личное сообщение · #3

ДА Dll все ок, только вот менеджер утиль а вызвать из Dll не могу эти функции т.к. не знаю некоторые параметры функций и процедурв этой длл...
Вот как достать параметры, например у процедуры sub_10001110 ? или sub_10001120 ?
не как не пойму...



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

Создано: 23 октября 2006 00:49
· Личное сообщение · #4

описания этой Dll (написана на VC++6) нет и следовательно какие у нее параметры не известно
Помогите узнать какие у этих функций (выше которые в asm листинге) парметры или как там по научному ординалы чтоли?




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 23 октября 2006 06:36
· Личное сообщение · #5

В иде нажми 'изменить тип функции' и enter. В 90% ида нормально определяет тип и количество параметров. При очистке стека материнской функцией думай сам. Если один из параметров - структура, то поможет только детальный разбор работы функций, а иногда и подфункций.




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 23 октября 2006 13:29
· Личное сообщение · #6

Так если это действительно скомпилено VC++, то имена и аргументы в готовом виде тебе не получить. Как написал HoBleen анализируй это всё Идой, проследи что там происходит на стеке и добавляй коментакии и структурные типы. Ну а потом берись за отладчик, пиши test case и добивай. Простого пути нет. Да, ещё посмотри как это всё вызывается из оригинальной проги - там тоже Идой....



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

Создано: 23 октября 2006 15:33
· Личное сообщение · #7

Это все понятно, ладно буду ковырять
Не занимался уже идой так с 98 года еще помню под дос была отличаеться почти все в виндовой!
А sourcer 5.10 какая весчь была жаль что сейчас такого нет 98 % рабочий код получался... а счас фихня...



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

Создано: 23 октября 2006 16:14
· Личное сообщение · #8

HoBleen пишет:
В иде нажми 'изменить тип функции' и enter. В 90% ида нормально определяет тип и количество параметров. При очистке стека материнской функцией думай сам. Если один из параметров - структура, то поможет только детальный разбор работы функций, а иногда и подфункций.

В том то и дело, что не правильно взял например исходник вынаповского плагина скомпилил его и посмотрел, а что мне ида толкает, то половина мусора в параметрах этой функции...
например
[HIGHLIGHT=asm]
; int __cdecl About(HWND hDlg,int,int) -> int,int в помине нет! а About: procedure(hwndParent: HWND); вот в чем косяк
.text:020023F0 About proc near ; DATA XREF: .data:02053008o
.text:020023F0
.text:020023F0 hDlg = dword ptr 4
.text:020023F0 arg_4 = dword ptr 8
.text:020023F0 arg_8 = dword ptr 0Ch
.text:020023F0
.text:020023F0 mov eax, [esp+hDlg]
.text:020023F4 mov ecx, hInstance
.text:020023FA push 0 ; dwInitParam
.text:020023FC push offset loc_2002410 ; lpDialogFunc
.text:02002401 push eax ; hWndParent
.text:02002402 push 65h ; lpTemplateName
.text:02002404 push ecx ; hInstance
.text:02002405 call ds:DialogBoxParamA ; Create a modal dialog box from a
.text:02002405 ; dialog box template resource
.text:0200240B retn
.text:0200240B ; ---------------------------------------------------------------------- -----
[/HIGHLIGHT]



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

Создано: 23 октября 2006 16:45 · Поправил: crash_rider
· Личное сообщение · #9

хм... в чем прикол!
взял дописал в исходнике эти два значения int int т.е. было
[HIGHLIGHT=delphi]
About: procedure(hwndParent: HWND);
[/HIGHLIGHT]
полчучилось
[HIGHLIGHT=delphi]
About: procedure(hwndParent: HWND;int1,int2:integer); cdecl; // about dialog
[/HIGHLIGHT]
Скомпилил, А код все равно рабочий !!!!!!




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 23 октября 2006 17:49
· Личное сообщение · #10

crash_rider пишет:
не знаю некоторые параметры функций и процедурв этой длл...
Вот как достать параметры, например у процедуры sub_10001110 ? или sub_10001120 ?
не как не пойму...



Дык ачто мешает узнать? включи дебагер, и посматри что там передается.

-----
have a nice day




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

Создано: 23 октября 2006 19:01
· Личное сообщение · #11

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




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 24 октября 2006 02:37
· Личное сообщение · #12

crash_rider пишет:
Скомпилил, А код все равно рабочий !!!!!!

Дык если у тебя _cdecl, то функции пофигу на количество параметров если их не использует - очищает же стек материнская функция!

Почему ида посчитала 3 аргумента - для меня остается загадкой. Можно предположить, что все _cldecl'ы она анализирует как функции с переменным числом аргументов (как printf). Формально их 3 (3-й переменной длины), может быть поэтому.



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

Создано: 24 октября 2006 21:39
· Личное сообщение · #13

HoBleen пишет:
Почему ида посчитала 3 аргумента - для меня остается загадкой.
Для меня тоже...
Вот разобрал бибилотеку от F60 там 64 функции все понятно сдесь же не чего не понять! найти даже не могу вызовы на эту Dll из менеджера , а все из-за того, что все эти функции запихали в СreateInterface зы типа спрятали...




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 25 октября 2006 09:25
· Личное сообщение · #14

crash_rider пишет:
найти даже не могу вызовы на эту Dll из менеджера , а все из-за того, что все эти функции запихали в СreateInterface зы типа спрятали...

ну да, так же тяжелее реверсить.... Но, тут ещё аспект вот какой - может быть у них несколько версий интерфейсов:

[highlight=c]
bool CreateInterface(int version, void **ppinterface);
[/highlight]


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


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