mirror of
https://github.com/cea-sec/miasm
synced 2026-06-21 13:48:18 +00:00
58 lines
1.0 KiB
ArmAsm
58 lines
1.0 KiB
ArmAsm
;; Walk a human link list and print its information
|
|
main:
|
|
TEST RDI, RDI
|
|
JZ next
|
|
|
|
PUSH RBX
|
|
MOV RBX, RDI
|
|
loop_arg:
|
|
LEA RSI, QWORD PTR [RBX+0x10]
|
|
LEA RDI, QWORD PTR [name-_+RIP]
|
|
XOR EAX, EAX
|
|
CALL printf
|
|
|
|
MOVZX ESI, WORD PTR [RBX+0x8]
|
|
LEA RDI, QWORD PTR [age-_+RIP]
|
|
XOR EAX, EAX
|
|
CALL printf
|
|
|
|
MOV ESI, DWORD PTR [RBX+0xC]
|
|
XOR EAX, EAX
|
|
LEA RDI, QWORD PTR [height-_+RIP]
|
|
CALL printf
|
|
|
|
MOV RBX, QWORD PTR [RBX]
|
|
TEST RBX, RBX
|
|
JNZ loop_arg
|
|
|
|
POP RBX
|
|
next:
|
|
|
|
|
|
LEA RBX, QWORD PTR [struct_human_ptr-_+RIP]
|
|
loop_global:
|
|
CMP RBX, 0
|
|
JZ end
|
|
|
|
LEA RSI, QWORD PTR [RBX+0x10]
|
|
LEA RDI, QWORD PTR [name-_+RIP]
|
|
XOR EAX, EAX
|
|
CALL printf
|
|
MOV RBX, QWORD PTR [RBX]
|
|
JMP loop_global
|
|
end:
|
|
RET
|
|
|
|
printf:
|
|
;; Dummy printf
|
|
RET
|
|
|
|
age:
|
|
.string "Age: %d\n"
|
|
height:
|
|
.string "Height: %d\n"
|
|
name:
|
|
.string "Name: %s\n"
|
|
struct_human_ptr:
|
|
.dword 0xdead, 0xcafe
|