我有以下用于 x86_64 shellcode 的程序集:
call writer
writestring db "ABCD",0x0d0a
writer:
pop rsi
编译后, objdump -d 显示(为简洁起见,剪掉了一些):
4000a4: e8 06 00 00 00 callq 4000af <writer>
00000000004000a9 <writestr>:
4000a9: 42 rex.X
4000aa: 42 rex.X
4000ab: 42 rex.X
4000ac: 42 0a 0d 5e 48 31 d2 rex.X
00000000004000af <writer>:
4000af: 5e pop %rsi
我想从 callq 后面删除三个空值。呼叫近,呼叫远等没有这样做。任何人都可以提供建议吗?
抱歉,我不是很清楚。我正在使用 call 以便它保存我可以在之后立即弹出到 rsi 的 writestr 的地址。我无法访问 rip(或者我可以吗?)手动计算偏移量。