21035218_Linux 实验三 程序破解
20135218 姬梦馨
1:掌握NOP、JNE、JE、JMP、CMP的汇编指令的机器码。
NOP:NOP指令即“空指令”。执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。(机器码:90)
JNE:条件转移指令,如果不相等则跳转。(机器码:75)
JE:条件转移指令,如果相等则跳转。(机器码:74)
JMP:无条件转移指令。段内直接短转Jmp short(机器码:EB)段内直接近转移Jmp near(机器码:E9)段内间接转移Jmp word(机器码:FF)
段间直接(远)转移Jmp far(机器码:EA)
CMP:比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。
其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。
2:掌握反汇编与十六进制编码器。
(1)通过反汇编求出用户名、密码,打开终端。输入objdump –d 01,找到main函数:
(2)修改可执行文件,玩转密码登陆,不管输入正确与否都可以正常登陆。
(3)vi打开login,输入“:%!xxd”
输入:/750e查找到到位置,将其修改为7500。修改时75 和0e 中间要有空格,不然就会出现错误,无法修改。
输入“:%!xxd -r”保存 输入“:wq”保存
(4)修改后保存,运行结果。
(5)输入其他答案,此时也可以正常的进入。
(6)再次用0bjdump -d login 查看main函数,发现有已经修改过了。
3:掌握可执行文件的基本格式。
Linux可执行文件格式为ELF即Executable and Linkable Format。
ELF格式:ELF header program header table .txt .rodata .data Section header table。