Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



zjištění export funkcí dll (vytvořené v MVC++)

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: JiriValerian

13:41:54 21.12.2008

[color=#008000]pauli.9 Napsal:
-------------------------------------------------------
> to JiriValerian:
> Ten "StraceNT - A System Call Tracer for Windows"
> mi docela pomohl, ale škoda jen že ukazuje jen
> první 4 parametry a ne všechny. Snažil jsem se
> něco vygooglit, ale jiný program, který by
> ukazoval parametry všechny jsem nenalezl. Ale
> jinak díky.[/color]

Ke sledování parametrů Win API můžete zkusit ještě třeba viz odkaz.

[b]Spy Studio[/b]
http://spy-studio.nektra.qarchive.org/

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: pauli.9

13:23:22 21.12.2008

to [bold]JiriValerian[/bold]:
Ten "StraceNT - A System Call Tracer for Windows" mi docela pomohl, ale škoda jen že ukazuje jen první 4 parametry a ne všechny. Snažil jsem se něco vygooglit, ale jiný program, který by ukazoval parametry všechny jsem nenalezl. Ale jinak díky.

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: Ondro1234

10:33:09 20.12.2008

Ups,som si spomenul,ze k JNI treba mat headre. :( Takze beriem spat. Asi bolo na mna este skoro rano, prepacte.

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: Ondro1234

9:58:42 20.12.2008

Este by tu bola jedna moznost, ale nemam to overene, ci to naozaj funguje. Stahnut si Javu a nejaky najjednoduchsi priklad na JNI a trosku ho upravit. No a potom uz len nechat vypisat vsetko, co JAVA dokaze ziskat z DLL.

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: AnonymousUser

22:58:13 19.12.2008

Přesně tak, jak píše pan Valerian.

Předpokládám, že máte DLL, ke které není možné dostat nápovědu, nebo nějaký popis funkcí. Já bych na Vaše místě postupoval tak, že bych spojil tři informace dohromady:

1) programovací jazyk a kompilátor
2) volací konvence obvyklé (či neobvyklé) v daném jazykce a kompilátoru
3) to co Vám radí pan Valerian

A pak bych si prostě párkrát tipnul a zkusil zavolat, a buď by vyšlehly plameny, nebo ne, prostě našel bych a odzkoušel co asi chodí.

Miloslav Ponkrác
[url]http://ponkrac.net/complex-web-server[/url]

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: JiriValerian

18:05:42 19.12.2008

[color=#008000]pauli.9 Napsal:
-------------------------------------------------------
> to JiriValerian:
> Díky za pěkný prográmek. Ale abych pravdu řek, tak
> mě vypsal všechny export fuknce, které ta dll
> obsahuje, ale žádné datové typy nezjistil.
>
> Jen tak mě napadá: Já k tý dll mám také aplikaci,
> která ty funkce dll využívá. U tý aplikace se mi
> nepodařilo ani přes "Dependency Walker" zjistit,
> jaké datové typy odesílá[/color]

Zjistit typy parametrů je opravdu problém, protože volající program prostě naháže
na zásobník kupu bajtů, o kterých nic nevíte, a to jsou ty parametry, se kterými
se pracuje uvnitř příslušné funkce v DLL. Třeba takový Windows odvozený typ
DWORD to jsou na zásobníku 4 bajty, ale stejně tak 4 bajty má na zásobníku
třeba datový typ float apod. Takže když se funkce zavolá defacto má jen pole
bajtů a vnitřní kód té funkce ví, na které bajty sáhnout a jak s nimi pracovat tak,
aby to odpovídalo datovému typu, který nadefinoval autor příslušné funkce v té DLL.

Pokud však nemáte zdroják a nejedná se o nějakou obecně známou funkci jako
jsou třeba funkce Win API, pak je to problém, protože ke zjištění typů parametrů
byste musel v podstatě provést vyhodnocení kódu té funkce, k čemuž můžete použít
nějaký externí debugger, který se umí připojit k již běžící aplikaci a pak ji můžete
pozastavit a krokovat různé části včetně volání funkcí v DLL apod. Jenže debugger
Vám neposkytne zdroják v céčku, ale pouze pohled na kód převedený do assembleru
a ten pak můžete vyhodnocovat, ale k tomu je potřeba mít patřičné znalosti a není
to nic jednoduchého.

Dále existují tzv. [b]API tracery[/b], které např. pomocí IAT sledují volané API
funkce v rámci příslušného programu viz odkaz. Tyto tracery u známých API
funkcí mohou zobrazovat hodnoty předávaných parametrů, ale u neznámých funkcí
Vám také nepomohou.

[b]StraceNT - A System Call Tracer for Windows[/b]
http://www.intellectualheaven.com/default.asp?BH=projects&H=Strace.htm

[color=#008000]> ale přece by to mělo jít nějak zjistit za běhu aplikace, ne ?
> Našel by se na to nějaký program ?[/color]

Takže odpověď zní: [b]ano jde to, a obecně se takovému programu říká debugger[/b],
ale abyste s jeho pomocí získal typy předávaných parametrů funkce, která není
obecně známá a k níž nemáte ani zdrojáky ani definici prototypu, to byste musel
mít patřičné znalosti, které pokud se takto vůbec ptáte dle mého názoru nemáte
a tak Vám takový program stejně nebude k ničemu (pozn. i kdybyste patřičné znalosti
měl tak by to stejně bylo v některých případech velmi komplikované).

[b]Debugging Tools for Windows[/b]
Umožňuje krokovat provádění kódu v EXE i DLL.
Pokud se však nejadná o debug verzi té DLL a nemáte k ní zdrojáky
pak uvidíte jen kód v assembleru a pokud mu velmi dobře nerozumíte tak máte smůlu.
http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: AnonymousUser

15:41:05 19.12.2008

Já bych dodal, že obecně se nijak nedá zjistit, jak vypadá prototyp funkce, který je v DLL. Trochu větší šance je u C++ DLL, kde je v názvu funkce zakódována informace i o parametrech. Ale ani tak není zaručeno, že jí korektně zavoláte, protože tady už záleží na to, jak byla DLL vůbec přeložena.

Miloslav Ponkrác
[url]http://ponkrac.net/complex-web-server[/url]

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: Farao

14:08:33 19.12.2008

>> Našel by se na to nějaký program ?

Disassembler

http://cs.wikipedia.org/wiki/Disassembler

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: pauli.9

12:49:05 19.12.2008

to [bold]JiriValerian[/bold]:
Díky za pěkný prográmek. Ale abych pravdu řek, tak mě vypsal všechny export fuknce, které ta dll obsahuje, ale žádné datové typy nezjistil.

Jen tak mě napadá: Já k tý dll mám také aplikaci, která ty funkce dll využívá. U tý aplikace se mi nepodařilo ani přes "Dependency Walker" zjistit, jaké datové typy odesílá, ale přece by to mělo jít nějak zjistit za běhu aplikace, ne ? Našel by se na to nějaký program ?

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: JiriValerian

19:20:17 18.12.2008

[color=#008000]pauli.9 Napsal:
-------------------------------------------------------
> to Milik:
> Jediné co zjistíš bez ní, jsou datové typy a počty
> parametrů funkcí.
> No právě o tohle mi jde. Jak to mohu zjistit ?[/color]

To nezjistíte pokud jsou názvy [b]exportovaných funkcí[/b] čisté tzv. [b]bez dekorací[/b]
a i když budou s dekoracemi tak nejistíte přesně všechny parametry, ale
jen některé. Například nezjistíte pokud se bude jednat třeba o ukazatele [b]void *[/b]
jejichž prostřednictvím se předávají nějaké specifické objekty, struktury apod.

Stáhněte si utilitu viz odkaz níže a podívejte se na názvy exportovaných funkcí
v té DLL. Tato utilita rozumí různým interním dekoracím, které používají
některé překladače a z nich dokáže zjistit základní typy parametrů viz níže
ukázka okna této utility kde je vidět, že zobrazuje např. u funkce [b]SaySoitenly[/b]
nejen název funkce, ale i typ návratové hodnoty a typy parametrů.

Pokud Vám to ta utilita nezobrazí pak máte smůlu a budete potřebovat popis
příslušných funkcí a jejich parametrů od dodavatele či autora té DLL.

[b]Dependency Walker[/b]
http://www.dependencywalker.com/

[b]ukázka[/b]

[img]http://www.dependencywalker.com/snapshot.png[/img]

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: pauli.9

18:26:48 18.12.2008

to [bold]Milik[/bold]:
[ital]Jediné co zjistíš bez ní, jsou datové typy a počty parametrů funkcí.[/ital]
No právě o tohle mi jde. Jak to mohu zjistit ?

Citovat příspěvek

 

Re: zjištění export funkcí dll (vytvořené v MVC++)

Autor: Milik

18:40:45 16.12.2008

Zjistíš to leda z nějaké dokumentace k té knihovně. Jediné co zjistíš bez ní, jsou datové typy a počty parametrů funkcí. K čemu ty parametry slouží, zjistíš leda disasemblováním kódu a následnou analýzou. Ale pokud se takhle ptáš, tak na to zapomeň.

Citovat příspěvek

 

zjištění export funkcí dll (vytvořené v MVC++)

Autor: pauli.9

14:22:19 16.12.2008

Dobrý den,
prosím Vás o pomoc.

Mám dll knihovnu vytvořenou v MVC++ a vím jaké obsahuje export funkce (zjištěno pomocí HEXa editoru).
Jak zjistím, co mám té dll odeslat při volání funkcí a co mi ta dll vrátí ?
Je na to nějaký program ?

Děkuji moc za pomoc.
S pozdravem Paulí.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: