Jak wywołać funkcję lea z C++

0

Witam,

analizuję pewną dll-kę, gdyż potrzebuję skorzystać z podobnych funkcji jak tam zastosowane i przy analizie kodu napotkałem coś takiego:

mov     eax, HWHandle
lea     ecx, [eax+1829B8h] <----
mov     dword_1000FA64, ecx
lea     esi, [eax+166A98h] <----
lea     edx, [eax+11FE320h]
mov     dword_1000FCA0, esi

Gdzie HWHandle to zmienna przetrzymująca wynik funkcji GetModuleHandleA(). Chodzi mi o instrukcje lea zaznaczone strzałkami oraz ewentualnie kolejny mov do zmiennej dword. Zastanawiam się jak takie coś może wyglądać w C/C++. Ktoś z Was może mi pomóc?

0

lea to jest coś w stylu & w C, czyli referencji.

0

To będzie mniej więcej coś takiego

JakisTypDanych32BitA varA;
JakisTypDanych32BitB varB;

JakisTypDanych32BitA tabA[];
JakisTypDanych32BitB tabB[];
JakisTypDanych32BitC tabC[];

/* ... */

varA = tabA[HWHandle];
// mov     eax, HWHandle
// lea     ecx, [eax+1829B8h] <----
// mov     dword_1000FA64, ecx

varB = tabB[HWHandle];
// lea     esi, [eax+166A98h] <----
// mov     dword_1000FCA0, esi

/* edx */ = tabC[HWHandle];
// lea     edx, [eax+11FE320h]
0

instrukcja lea w zasadzie jedyne co robi, to oblicza działanie podane jako drugi argument. oczywiście nie każde dowolne działanie, a tylko takie, które dadzą się zapisać przy podawaniu adresów.
czyli

lea     ecx, [eax+1829B8h] 

robi tyle co (nie licząc flag)

mov ecx, eax
add ecx, 1829B8h
0

Cóż, już Ci odpowiedziano, ale:

http://www.google.pl/search?q=assembly+lea

Jeśli w tej bibliotece przypadkowo będą na przykład operacje na floatach to też polecisz od razu na forum z pytaniami o dajmy na to FYL2X, FPATAN, FXTRACT, FPREM1, FDECSTP, FINCSTP, FPREM i FYL2XP1?
Samodzielność ftw.

1 użytkowników online, w tym zalogowanych: 0, gości: 1