Próbuję dowiedzieć się więcej o montażu i demontażu. Moim celem jest modyfikacja sposobu pisania konkretnego adresu za pomocą debuggera (olly). Korzystnie zwiększając go o liczbę (20, 50 itd.) Mogę zidentyfikować adres liczby zmiennoprzecinkowej (w tym przypadku znajduje się pod 33B7420C
).Co robi FSTP DWORD PTR DS: [ESI + 1224]?
Kiedy ustawić punkt przerwania na dostęp do pamięci napisać to doprowadza mnie do 00809B2E
który posiada następujący montaż:
FSTP DWORD PTR DS:[ESI+1224]
Czym dokładnie jest to robić w ten adres? Wiem, że rejestr FPU ma numer, którego szukam, ale nie wiem, co robi ten adres.
Najbliżej przyjdę do googling jest: What does MOV EAX, DWORD PTR DS:[ESI] mean and what does it do?
Kopia rejestrów zawiera następujące informacje:
EAX 00000000
ECX 00A16E40 EZ.00A16E40
EDX FFFFFFFF
EBX 33B74578
ESP 0018FA90
EBP 00000000
ESI 33B72FE8
EDI 33B74578
EIP 00809B2E <EZ.Breakpoint for time>
C 0 ES 002B 32bit 0(FFFFFFFF)
P 0 CS 0023 32bit 0(FFFFFFFF)
A 0 SS 002B 32bit 0(FFFFFFFF)
Z 0 DS 002B 32bit 0(FFFFFFFF)
S 0 FS 0053 32bit 7EFDD000(FFF)
T 0 GS 002B 32bit 0(FFFFFFFF)
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00210202 (NO,NB,NE,A,NS,PO,GE,G)
ST0 valid 1150.0000000000000000
ST1 zero 0.0
ST2 zero 0.0
ST3 empty 64.951911926269531250
ST4 empty -13.250000000000000000
ST5 empty 64.951911926269531250
ST6 empty 64.951911926269531250
ST7 empty 0.0239995196461677551
3 2 1 0 E S P U O Z D I
FST 2927 Cond 0 0 0 1 Err 0 0 1 0 0 1 1 1 (LT)
FCW 027F Prec NEAR,53 Mask 1 1 1 1 1 1
Każda pomoc będzie mile widziane, dzięki!
Powinieneś otrzymać kopię odwołania do zestawu x86 dla wyjaśnienia poszczególnych instrukcji. Pytanie o SO za każdym razem, gdy napotkasz instrukcję, nie skaluje się dobrze. –