Exp1 PC平台逆向破解(5)M 20154307 冯彬
本次只是做了部分实验,课上学习了手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
首先,我们先了解本次任务需要用到的代码
1.反汇编,将汇编语言转换成机器语言
`objdump -d 文件名 | more`
2.vi命令,进入文件编辑界面
vi 文件名
3.vi命令状态下的进制转换
①将当前文本转化为16进制格式
:%!xxd
②将当前文本转化回文本格式
:%!xxd -r
4.vi状态下的查找
/查找的内容
5.vi状态下的存盘退出
:wq
ok,了解这些以后,就可以开始了。首先我们用这个函数objdump -d 20154307 | more查看该文件的机器语言。
如上图所示,主函数调用foo,查阅可知e8 d7 ff ff ff就是调用foo的指令
我们想让它调用getShell
如上图,可知foo和getshell的地址,然后通过计算偏移量,可得出将e8 d7 ff ff ff改为e8 c3 ff ff ff
进入该文件的vi编辑模式
按住esc,输入:%!xxd指令,查看其十六进制格式,再按住esc,输入/e8 d7,找到foo指令位置,修改为c3,即为getshell对应的指令
修改后
然后,用 :%!xxd -r转回原格式,存盘退出
再用反汇编看其指令,如下图
看,已经修改完了。
那么,如此一来,实验1的修改指令部分就已经完成了。
实验问题
部分同学补码可能已经忘记,在计算偏移量的时候可能会有些疑惑,需要课后复习之前学过的有关计算机组成原理等的知识。
原文地址:https://www.cnblogs.com/gnlm/p/8524762.html
时间: 2024-11-06 23:39:35