字母数字Shellcode确保跳转

时间:2012-05-17 14:13:39

标签: assembly x86 shellcode

我正在尝试编写一些最终将采用英文段落形式的shellcode。这意味着我主要限于具有评估字母数字字符或标点符号的操作码的指令。这实际上给我留下了许多不同的跳转说明,包括:jojnojbjaejejne,{{1 },jbejajsjns(对应于字母jp)。这些跳转中的每一个在决定跳跃之前都会执行测试。在大多数情况下,我可以组合跳转加反转,以确保在shellcode中发生跳转(例如使用p-z然后jo,或jno然后je),但在jne的情况下,我不能这样做。 jb的测试为jb

我的问题是,是否存在一系列功能上属于NOP的字母数字指令,但也确保CF=1CF=1是进位标志,因此任何保证设置进位标志的操作都足够了。

同样要确保CF,无论如何要确保jae

1 个答案:

答案 0 :(得分:6)

您可以使用“4444”CF设置为0。

“44”XOR AL, 0x34

具有相同值的

2 XORs结果AL没有变化。

但应注意,XOR几乎影响所有算术标志(对AF的影响未定义)。所以,它不是完全“NOP”。

在32位模式下,您可以使用“PhohohX7X”CF设置为1。

“P”PUSH EAX “hohoh”PUSH 0x686F686F “X”POP EAX “7”AAA “X”POP EAX

还有AAA的警告。它对大多数算术标志的影响是未定义的(CFAF除外,它们相等)。所以,它也不是完全“NOP”。