Witam,
jestem bardzo zielony jeśli chodzi o temat, przerabiałem sobie tego oto tutoriala: http://www.codeproject.com/KB/cpp/funccaller.aspx .
Jak zaznaczyłem w temacie, mój system operacyjny to 64bitowy windows 7.
Mój problem polega na tym, że kiedy uruchamiam 32bitową aplikację na moim 64bitowym OSie, za każdym uruchomieniem adresy funkcji (offsety) w pamięci są inne (tak mi się przynajmniej wydaje). Nie muszę chyba tłumaczyć że napisanie DLLki która wywołuje funkcję programu znajdującą się np. pod adresem 0x004113A0 (bo pod takim funkcja znajduje się w rzeczywistości) oraz injectowanie jej do działającego programu kończy się crashem aplikacji.
Moje pytanie brzmi: w jaki sposób przydzielane są te adresy i w jaki sposób wyłuskać aktualny adres funkcji? Czy np. są gdzieś w pamięci zapisane jakieś pointery?
Niestety, google mi w tej kwestii nie pomogło, nigdzie nie mogłem znaleźć odpowiedzi. Będę baaardzo wdzięczny za jakiekolwiek naprowadzenie mnie na właściwy trop.
Edit: Aha, korzystam z OllyDBG i to w nim zauważyłem różnicę w adresach przy każdym uruchomieniu.