PC平台逆向破解 实践内容1
直接修改程序机器指令,改变程序执行流程
- 知识要求:Call指令,EIP寄存器,指令跳转的偏移计算,补码,反汇编指令objdump,十六进制编辑工具
- 学习目标:理解可执行文件与机器指令
- 进阶:掌握ELF文件格式,掌握动态技术
实践目标
手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
实践步骤
- 首先让我们对pwn文件进行一个反汇编,可以看到文件中的是跳转到foo函数
- 让我们把文件转换成十六进制看一下
- 找到
d7
的位置 - 把
d7
修改为c3
- 将十六进制转换为原格式并保存
- 运行pwn文件
以下操作是在vi内
1.按ESC键
2.输入如下,将显示模式切换为16进制模式
:%!xxd
3.查找要修改的内容
/e8d7
4.找到后前后的内容和反汇编的对比下,确认是地方是正确的
5.修改d7为c3
6.转换16进制为原格式
:%!xxd -r
7.存盘退出vi
:wq
实践中遇到的问题
- 显示“不是可执行文件”
- 显示“找不到该文件”