Exp1 PC平台逆向破解(5)M
阶段性截图
基础知识
掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码
汇编指令 | 作用 | 机器码 |
---|---|---|
NOP | “空指令”。执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。 | 90 |
JNE | 条件转移指令,如果不相等则跳转。 | 75 |
JE | 条件转移指令,如果相等则跳转。 | 74 |
JMP | 无条件转移指令。段内直接短转Jmp short;段内直接近转移Jmp near;段内间接转移Jmp word;段间直接(远)转移Jmp far | EB;E9;FF;EA |
CMP | 比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。 |
掌握反汇编与十六进制编程器
-
objdump -d
从objfile中反汇编那些特定指令机器码的section。 -
xxd - 做一次十六进制的输出或者反操作
在vi命令状态下:
:%!xxd :%!od 将当前文本转化为16进制格式
参考链接: objdump命令;linux 命令 xxd linux下查看二进制文件
- 47d-4ba = c3ffffff
所以 修改d7为c3
vi 程序名
1.按ESC键
2.输入如下,将显示模式切换为16进制模式
:%!xxd
3.查找要修改的内容
/e8 d7
(里面这个空格必须输,否则找不到)
4.找到后前后的内容和反汇编的对比下,确认是地方是正确的
5.修改d7为c3
6.转换16进制为原格式
:%!xxd -r
7.存盘退出vi
:wq
能正确修改机器指令改变程序执行流程
能正确构造payload进行bof攻击
break *address
在程式运行的内存地址处停住。
遇到的问题及解决
- 在配置Kali和实验的过程中有时会遇到以下这种问题,当然是选择安装它啦
- 安装中文输入法
搜狗输入法安装失败后,选择安装google的,参考: [分享] kali linux 中文输入法(弄了一晚综合各种帖子终于弄好了)
-
无法运行pwn1
解决请参考: 64位Kali无法顺利执行pwn1问题的解决方案