在Linux下进行反汇编时,常用的反汇编指令主要包括以下几类:
MOV指令
mov eax, 0x12345678
PUSH和POP指令
push eax
和 pop eax
CALL和RET指令
call function_name
和 ret
JMP指令
jmp label
JE(JZ)、JNE(JNZ)指令
je equal_label
和 jne not_equal_label
CMP指令
cmp eax, ebx
INC和DEC指令
inc eax
和 dec eax
LEA指令
lea eax, [ebx + ecx*4]
XCHG指令
xchg eax, ebx
SHL、SHR、SAL、SAR指令
shl eax, 2
和 shr eax, 1
MOVZX和MOVSX指令
movzx eax, byte ptr [ebx]
和 movsx eax, byte ptr [ebx]
LEA指令的扩展
lea rax, [rbx + rsi*8 + 0x10]
MOV指令的扩展
mov rax, [rbx + rcx*8]
LDR指令
ldr r0, [r1]
STR指令
str r0, [r1]
B指令
b label
BL指令
bl function_name
CMP指令
cmp r0, r1
ADD和SUB指令
add r0, r1, r2
和 sub r0, r1, r2
MOV指令
mov r0, #0x12345678
在Linux下进行反汇编,常用的工具有:
objdump:GNU Binutils的一部分,用于显示目标文件的信息。
objdump -d binary_file
radare2:一个强大的逆向工程框架。
radare2 binary_file
Ghidra:由美国国家安全局(NSA)开发的免费开源软件逆向工程(SRE)工具。
ghidraRun
IDA Pro:商业逆向工程工具,功能强大但需要购买许可证。
这些工具可以帮助你分析和理解二进制文件的汇编代码。