Сейчас на форуме: _MBK_, user99, ManHunter, Magister Yoda (+8 невидимых)

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


Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 12:28
· Личное сообщение · #1

Есть DLL, написанная на Visual C++ v6 (без сжатия). Соответственно, экспортирует ряд функций. Подскажите методы, при помощи которых можно определить состав параметров для каждой функции.

З.Ы. Простите если вопрос через чур глупый / нубский (



Ранг: 53.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 26 сентября 2005 13:04
· Личное сообщение · #2

IDA?




Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:08
· Личное сообщение · #3

угу, помогло, сенькс. сильно облегчило жизнь.

я так понимаю, что в строке, к примеру:

10004330 arg_0 = dword ptr 4

4 - кол-во байт?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 26 сентября 2005 13:09 · Поправил: Hellspawn
· Личное сообщение · #4

я так понял ты хочешь заюзать чужую dll в своей проге???
ну чтож отладчик тебе в помощь, берешь ollydbg
ищешь там функцию, которая тебе нужна, и смотришь на её вызов,
olly покажет тебе какие параметры передаются в функцию...
при трассировке будет хорошо видно, что кладется в стек...
а дальше по обстаятельствам... учти что в отладчике, если я не ошибаюсь
все параметры будут наоборот, т.е. первый параметр - в отладчике будет последним,
вроде так... надеюсь ты хоть что-то понял?

-----
[nice coder and reverser]





Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:14
· Личное сообщение · #5

"надеюсь ты хоть что-то понял?" обыжаешь, дорогой )

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




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 26 сентября 2005 13:16
· Личное сообщение · #6

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

-----
[nice coder and reverser]





Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:20
· Личное сообщение · #7

Аттачу ) Если сможешь глянуть - буду благодарен. Все равно до утра ту же OllyDbg не смогу заиметь (

71cf_db.dll




Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:21
· Личное сообщение · #8

забыл упаковать, но думаю 100kb не так уж и страшно )




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 26 сентября 2005 13:23
· Личное сообщение · #9

понятное дело.. анлим на 512 гы
как функция то называется, которая тебе нужна???

-----
[nice coder and reverser]





Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:28
· Личное сообщение · #10

да по идее я все хотел ) но чтобы тебя сильно не утруждать - глянь OpenDB. завтра утром сам попытаюсь со всем остальным разобраться.



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

Создано: 26 сентября 2005 13:29
· Личное сообщение · #11

ппц... можно сказать без сомненья афтар жжот вот почему:

> 10004330 arg_0 = dword ptr 4
> 4 - кол-во байт?

когда прога вызывает процедуру xxx по адресу 401000 мнемоникой call то встек заносится двордом адрес возврата а параметры идут по возрастающей... чтоб тебе было проще их воспринимать ида конвертирует параметры в dword ptr... т.е. dword ptr esp+4... (arg значит аргумент)...

зы: про то как заюзать чужую dll в своей проге я умолчу ))

-----
Shalom ebanats!





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 26 сентября 2005 13:32
· Личное сообщение · #12

функцию нашел... тока мне без exe файла, юзающего эту длл
никак не разобраться
я так понял длл для работы с какой то базой данных

-----
[nice coder and reverser]





Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:34
· Личное сообщение · #13

гы ) ну блин, кто ж знал. свою ошибку осознал, просто так заманчиво было arg воспринять как АРГумент ) буду знать. раньше с IDA никогда не работал, не думал что тут так все завернуто ) встретил знакомое слово, ассоциации и в итоге неправильно воспринял )) и правда глупо вышло ) спасибо за замечание!

Тогда ясно становится, что 4 - это значение, типа dword ptr соответственно. А я все ломал голову нафига параметру функции какое-то значение ) Подумал, что кол-во байт, хотя на кол-во байт уже мне указывал тип. В итоге оказалось, что вообще смотрел не туда, куда надо (

Буду учиться на своих ошибках. Еще раз всем спасибо.

"про то как заюзать чужую dll в своей проге я умолчу ))"
это камень в мой огород? ))




Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:37
· Личное сообщение · #14

ехе боюсь что тянет за собой еще много чего ( да, это действительно библиотека для работы с одной из "самодельных" БД. понимаю что отладчик без ехе тут бессилен ( я сам как-то не подумал, когда тебе либу давал (

вот так вот я "жжу"



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

Создано: 26 сентября 2005 13:38
· Личное сообщение · #15

не... не в твой... просто чтоб заюзать длл без всяких SDK и debug info надо немало попариться... и одной ольки тут не достаточно

-----
Shalom ebanats!





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 26 сентября 2005 13:39 · Поправил: Hellspawn
· Личное сообщение · #16

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

-----
[nice coder and reverser]





Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:41
· Личное сообщение · #17

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



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

Создано: 26 сентября 2005 13:43
· Личное сообщение · #18

> ну если пару функиций вызвать, то олька справится в полне
нихера не втыкаю... с чем олька справится? речь идёт о девелопменте а не об отладке =))

-----
Shalom ebanats!





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 26 сентября 2005 13:44
· Личное сообщение · #19

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

-----
[nice coder and reverser]




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

Создано: 26 сентября 2005 13:45
· Личное сообщение · #20

> и что ей передается
уверен что увидишь?

-----
Shalom ebanats!





Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:46
· Личное сообщение · #21

он имеет в виду что отлавдивая олли передаваемый в библиотеку набор данных, можно попробывать выявить закономерность и попытаться проанализировать назначение каждого из параметров. я понимаю что тут еще много подводных камней есть, но это уже дальнейшее мозгопарство в процессе дальнейшей работы с чужой либой ) я правильно понял, Hellspawn?




Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:47
· Личное сообщение · #22

> и что ей передается
что передается увидеть я так понял позволит нам отладчик, но понять назначение этого - уже дело другое )




Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:49 · Поправил: NaumLeNet
· Личное сообщение · #23

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



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

Создано: 26 сентября 2005 13:54
· Личное сообщение · #24

дык...

push offset libname
call loadlibrary
mov [dwLib],eax
push offset functionname
push [dwLib]
call getprocaddress
mov [dwProcXXX],eax
push params
..
call dword ptr[dwProcXXX]

в чём проблема?

-----
Shalom ebanats!





Ранг: 103.3 (ветеран), 8thx
Активность: 0.060
Статус: Участник

Создано: 26 сентября 2005 13:56 · Поправил: NaumLeNet
· Личное сообщение · #25

> дык...
это кому адресовано? я понимаю что это листинг вызова некой функции из dll неким хостом, но к чему это все?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 26 сентября 2005 14:00
· Личное сообщение · #26

SLV пишет:
уверен что увидишь?

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

-----
[nice coder and reverser]



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


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