【发布时间】:2013-07-16 05:14:07
【问题描述】:
我有以下用于 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(或者我可以吗?)来手动计算偏移量。
【问题讨论】: