Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Tringi
Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 5. březen 2013, 16:33:28 Předmět: |
|
|
CLR EXE se tváří jako normální 32 bitový PE/COFF.
Všechna data má v ".text" sekci zamaskovaná jako kód a importuje pouze _CorExeMain z mscoree.dll. Pokud to chybí, není .NET nainstalován a program se nespustí s normální chybou, jako když chybí jakákoliv jiná DLL. Entry point CLR EXE je ale jen malý zavaděč, který prostě zavolá _CorExeMain a to už kouzlí (inicializace prostředí, provádění/kompilace MSIL, zametání, ...).
U CLR DLL je to obdobně, jen trochu komplikovanější.
EDIT:
Celý ten malý zavaděč je jen jedna instrukce (nepřímý skok):
FF 25 00 20 40 00 <=> jmp DWORD PTR ds:0x402000
Kdy na adresu 0:00402000 se právě naloaduje adresa _CorExeMain _________________ WWW | GitHub | TW
Naposledy upravil Tringi dne 5. březen 2013, 16:46:47, celkově upraveno 1 krát |
|
Návrat nahoru |
|
|
Poky
Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 5. březen 2013, 16:46:34 Předmět: |
|
|
Takže jestli to chápu dobře, tak je to vpodstatě možnost B) - OS pustí to exe a to takřka ihned odskočí na _CorExeMain (které když nemá, tak vyhodí chybu) a ta funkce(?) dál dekoduje to exe už jako nějaký bytekód... je to tak? |
|
Návrat nahoru |
|
|
Tringi
Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 5. březen 2013, 16:50:59 Předmět: |
|
|
Jop, zhruba, pak už to je v režii .NETu o kterém zas tak moc nevím. _________________ WWW | GitHub | TW |
|
Návrat nahoru |
|
|
Poky
Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 5. březen 2013, 16:54:26 Předmět: |
|
|
Super. Díky moc. |
|
Návrat nahoru |
|
|
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 5. březen 2013, 18:04:43 Předmět: |
|
|
Wau. Začal jsem psát o tom, jak fungují executable files, pro jistotu jsem si otevřel Wiki na Portable Executable a je tam to, na co se ptáš.
No a jak vidím, tak to Tringi navíc ještě teď zodpověděl. Člověk se nezavděčí. _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
|
cooty125
Založen: 22. 11. 2011 Příspěvky: 40
|
Zaslal: 19. duben 2013, 13:38:56 Předmět: Re: Grafické knihovny pro C# |
|
|
Poky napsal: |
Čau, právě začínám pracovat na bakalářské práci a potřeboval bych od vás trochu pomoc. Jak už název vlákna napovídá, jedná se mi o grafické knihovny pro tvorbu "okýnek" v C# (jako třeba GTK# apod.). Pokud znáte nějaké, prosím napište sem (klidně i nějaké neznáme). Jinak postačí klidně jen názvy, zbytek si dohledám sám. Jenom mi jde o to, abych se měl od čeho "odpíchnout".
Díky moc. |
Ahoj, nevím zda jsem tvůj problém přesně pochopil. Ale pomocí handle IntPtr se dá obsah okna dostat opravdu kamkoliv. Třeba i do prohlížeče. Nebo z XNA, DirectX, OpenGl, Nebo může běžet i bez okna třeba místo pozadí plochy. Možností je spoustu.
Jedná se o tzv Platform Invoke
http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx
Tady je příklad využití možností windows externích metod:
kód: |
[DllImport("msvcrt.dll")]
public static extern int puts(string c);
|
Doufám, že jsem aspoň trochu pomohl. _________________ Programátor v C# XNA a 3D Grafik.
http://www.xna.mzf.cz/
http://www.czechcode.hu.cz/ |
|
Návrat nahoru |
|
|
Poky
Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 20. duben 2013, 11:11:22 Předmět: |
|
|
Promiň, ale nepomohl.
Téma BP je: Grafické nadstavby pro .NET
Zadání mojí BP je přesně toto:
Uveďte kompatibilní platformy pro jednotlivé nadstavby.
Navrhněte ukázkové příklady typu jednoduchý dialog, vykreslení bitmapy, vykreslení grafu, apod.
Ověřte příklady na pokud možno největším počtu platforem.
Uveďte možnost využití alternativních vývojových prostředí.
V příkladech použijte jazyk C#.
Jinak po konzultaci s vedoucím, mám udělat využití WinForms - ty podle specifikace Mona jsou 100% implementovány do verze 2.0 .NET FW a pak najít nějaké čistě multiplatformní, tedy GTK#, Qt4DotNet atd...
Takže pokud znáte nějaké další, tak sem snimi.
Díky |
|
Návrat nahoru |
|
|
cooty125
Založen: 22. 11. 2011 Příspěvky: 40
|
|
Návrat nahoru |
|
|
Poky
Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 21. duben 2013, 08:22:26 Předmět: |
|
|
Dík za snahu, ale opět si mi nepomohl
To co si našel jsou příliš low-level nadstavby. Já potřebuju nadstavby schopné sami již poskytnout základ na tvorbu "okeních" aplikací. Tedy musí obsahovat již hotové třídy jako Button, Label, TextBox, ListBox, PictureBox atd. atd... |
|
Návrat nahoru |
|
|
TeaTime
Založen: 17. 06. 2011 Příspěvky: 264
|
|
Návrat nahoru |
|
|
Poky
Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 22. duben 2013, 12:22:14 Předmět: |
|
|
Dík, kouknu na to ?
citace: |
PS: ale přijde mi to jako docela nudná bakalářka |
Vybíral sem ji až v 2. kole. Mojí bakalářku Inovace řídící jednotky RCX (Lego Mindstorms) mi zrušil :-/ - Jinak máš pravdu, nudná je - testování na 5 verzích linuxu, na MacOS a Androidu a téměř vše přes šíleně pomalou virtuálku není zrovna zábava |
|
Návrat nahoru |
|
|
Al
Založen: 23. 10. 2007 Příspěvky: 196
|
Zaslal: 20. květen 2013, 20:11:51 Předmět: |
|
|
Ještě dva postřehy k tomu spouštění EXE programů v .NETu:
1. Je zajímavé sledovat, jak se to spouští v Linuxu, kde není možnost spustit opravdový Win32 kód. Tohle mě přivádí k otázce, proč tam ten Win32 zavaděč vůbec je, když to jde snadno spustit i bez něj a bylo by to bez něj daleko čistější. (Jednou, až MS přestane podporovat Win32 jako platformu, stejně se to bude muset spouštět bez toho zavaděče.)
2. Když není nainstalovaný žádný .NET ve Windows, tak to spadne s nějakou zcela absurdní hláškou. Tohle chování je už hodně daleko za hranicí mého chápání.
No a když už ten program běží, tak je to podstatně složitější, než jak to vzevrubně popsal Tringi. Protože tam probíhá postupná kompilace po jednotlivých metodách a překládá se vždykcy o jednu metodu dopředu, než kam se to volá. A ty přeložené a nepřeložené metody tam dokáží koexistovat spolu v jedné tabulce metod vtable (zde je to asi hodně podobné fungování C++).
Jen nevím, proč je potřeba tohle řešit v závěrečné práci na grafické knihovny. |
|
Návrat nahoru |
|
|
|