编辑: 飞翔的荷兰人 | 2017-09-16 |
无效指令'
的异常. ----[ 1.2 寻址模式 ARM有不同的寻址模式.我们将简要讨论那些对我们编写shellcode有用的寻址模式 ----[ 1.2.0 数据处理的寻址模式 大多数指令看起来像这样: {}{S} , , 举个例子: ADDEQ r0, r1, #20 偏移操作数是一个指令的第三个参数,它占12个bit,可以是下面11中可能的结构,其中如果下面有被指定, 那么这个shift_imm是4bit长的立即数,也就是说这个值在0到31之间取 第2页armshellcode.txt 1. #immediate 可以作为偏移操作数的8bit立即数,这个8bit立即数还可以右移shift_imm个单位 2. 寄存器的值作为参数 3. , LSL # 寄存器的值逻辑左移shift_imm个单位 4. , LSL 寄存器的值逻辑左移,移位个数由寄存器Rs的值指定 5. , LSR # 寄存器的值逻辑右移shift_imm个单位 6. , LSR 寄存器的值逻辑右移,移位个数由寄存器Rs的值指定 7. , ASR # 寄存器的值算术右移shift_imm个单位 8. , ASR 寄存器的值逻辑右移,移位个数由寄存器Rs的值指定 9. , ROR # 寄存器的值循环右移shift_imm个单位 10., ROR 寄存器的值循环右移,移位个数由寄存器Rs的值指定 11., RRX 寄存器的值循环右移一位,进位符号位的值替代自由位.进位符号的值为循环移出的bit值. ----[ 1.2.1 load/store处理的字或无符号字节的寻址模式 下面是一个load/store指令的一般语法 LDR{}{B}{T} , addressing_mode 举个例子: LDRPLB r3, [r3, #-48] 其中addressing_mode有下面六种可能.对于带有变换的load/store指令........