Po uruchomieniu info registers
w gdb, możemy uzyskać wynik podobny do następującego:GDB informacji rejestruje polecenia - druga kolumna wyjścia
rax 0x1c 28
rbx 0x0 0
rcx 0x400a60 4196960
rdx 0x7fffffffde88 140737488346760
rsi 0x1 1
rdi 0x400932 4196658
rbp 0x0 0x0
rsp 0x7fffffffde68 0x7fffffffde68
r8 0x400ad0 4197072
r9 0x7ffff7dea560 140737351951712
r10 0x7fffffffdc30 140737488346160
r11 0x7ffff7732dd0 140737344908752
r12 0x4007f0 4196336
r13 0x7fffffffde80 140737488346752
r14 0x0 0
r15 0x0 0
rip 0x7ffff7732dd0 0x7ffff7732dd0
eflags 0x202 [ IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
Choć rozumiem for rax
, rcx
etc, GDB jest przeliczania wartości do dziesiętnego dla drugiej kolumny, nie wydaje się to spójne. Niektóre rejestry, a mianowicie rsp
i rip
, pokazują tę samą wartość w heksie, nawet w drugiej kolumnie. eflags
z drugiej strony pokazuje flagi w drugiej kolumnie.
Jaki jest powód, dla którego gdb
to robi? Jeśli ma wyświetlać te same informacje (w przypadku rsp
i rip
), czy nie jest to zbędne? A jak to się uogólnia na innych architekturach? (Powyższe wyjście jest dla x86-64).
Nazwałbym ten plagiat ... gdy zadałeś pytanie [tutaj] (http://reverseengineering.stackexchange.com/questions/9221/output-of-gdb-info-registers) i skopiowałeś duże części moja odpowiedź tutaj bez zacytowania twoich źródeł ... Mocno potępiam ten sposób robienia! – perror
@perror tam i odniosłem się do tego pytania. Zmieniłem też moją odpowiedź, usuwając część twojej odpowiedzi. –