ARM shellcode 使用 r0 不带空字符

逆向工程 手臂 外壳代码
2021-06-28 10:09:11

我正在尝试编写一些基本的 ARM shell 代码,用 0 加载 r0 寄存器。我不能使用空字符。我理解了

subs r2, r2, r2

在不使用任何空字节的情况下将 r2 设置为 0。

但是,任何将 r2 移动到 r0 的尝试都会导致 shell 代码使用空字节。关于我能做什么的任何建议?

1个回答

在线反汇编器复制/粘贴

.data :00000000  e0522002 subs r2, r2, r2
.data :00000004  e92d0104 push {r2, r8}       
.data :00000008  e8bd0101 pop {r0, r8}

或者,在拇指模式下(push/pop 指令实际上是相同的,由于字节序似乎被字节交换了):

.data :00000000 1a92 subs r2, r2, r2
.data :00000002 0104e92d stmdb r13!, {r2, r8}
.data :00000006 0101e8bd ldmia.w r13!, {r0, r8}