Kilka dni temu ktoś wrzucił tu na forum film odnośnie bibliotek dll:
Moje pytanie jest w jaki sposób działają techniki typu hijacking dll skoro nie wiemy nawet jaki kompilator stworzył dany plik exe. Na filmie facet korzysta z GNU i podmienia dowolne pliki dll na te stworzone przez siebie.
Chciałbym zrozumieć dlaczego na stronie Microsoftu napisane jest że nie ma zagwarantowanej kompatybilności nawet pomiędzy dwoma kolejnymi wersjami kompilatora który jest w visual studio. I to z zaznaczeniem że nie chodzi tylko o pliki obj co mógł bym zrozumieć ale również o lib i dll. W jaki sposób więc aplikacja napisana z 15 lat temu w nie wiadomo jakim kompilatorze jest w stanie odpalić plik DLL który został stworzony w jakimś zupełnie innym?
Co wpływa na poprawne działanie? Czy użycie extern "C" przy deklarowaniu funkcji zmienia cokolwiek oprócz tego że pominięte zostanie dekorowanie nazwy funkcji? Czy może chodzi o to że nie ma żadnych problemów ale tylko w wypadku prostych funkcji typu skopiowanie pliku albo przechwycenie ciągu znaków i problemy pojawiają się dopiero jak by ktoś chciał pisać duże aplikacje i korzystać z bibliotek z innych kompilatorów?