Diskuze: C++ - Hledání ukazatele na exportovanou funkci v cizím procesu
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Našel jsem implementaci v c#, ta je přehlednější než ta moje.
Pokud víš, o jakou DLL knihovnu se jedná (přímo soubor), nemusíš pro získání adresy hledané funkce shat do cílového procesu. V pohodě stačí, když
Termín bázová adresa zde znamená virtuální adresu v prostoru procesu, na které DLL knihovna začíná. Termín module handle, se kterým se setkáš v dokumentace, je vlastně bázová adresa (jen je potřeba případně vynulovat posledních 12 bitů, protože bázové adresy jsou vždy zarovnány na 4 KB (nebo možná i 64 KB)).
Problém může nastat, pokud je tvoje aplikace 64bitová a ta cílová 32bitová (nebo naopak), protože pak nemůžeš použít krok 1) a celé se to komplikuje. Otázka také je, co pak s tou získanou adresou budeš dělat, když nechceš nic do daného procesu injektovat.
Do závorek jsem dával názvy funkcí Windows API. Ty v C# s jistým syntaktickým cukrem použít jdou, ale pro většinu kroků bys měl najít i přímo ekvivalenty v knihovnách .NETu.
Zobrazeno 3 zpráv z 3.