---恢复内容开始---

PC平台逆向破解

实践目标

本次实践的对象是一个名为pwn1的linux可执行文件。

该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。

该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。

目标是手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。

基础知识

几个常见汇编指令
NOP:无操作,直接执行下一条指令
JNE:ZF等0时跳转,即不等于时跳转
JE:等于时跳转
JMP:无条件跳转
CMP:比较.(两操作数作减法,仅修改标志位,不回送结果),ZF就是标志位
linux基本操作
https://www.shiyanlou.com/courses/1 可执行文件其实就是由一系列汇编指令构成的,包括各个函数的调用其实都需要通过jum或其他跳转指令来实现,因此这次实践最直接的思路是修改main中原本该调用foo函数位置跳转的地址,把它改为getshell的地址。
直接打开可执行文件会是一堆机器码,需要先将其反汇编之后再进行之后的操作。kali系统自带反汇编,只需在终端输入“objdump -d 文件名”就可以将其反汇编。

找到main函数的位置

call是跳转,注意call那一行和foo函数的首地址会发现ba+d7 mod ff = 91,也就是foo函数的首地址,于是可以知道e8是跳转指令,d7是相对于call的下一条语句偏移地址,于是ba-7d = 3d,3d的补码应是c3,接下来只要把b7换成c3就好了。

一般文本编辑器打开文件都不会以16进制显示,所以还需要一个十六进制编程器,实践中用的是vim文本编辑器。

对vim不了解可以现在实验楼看它的教程:https://www.shiyanlou.com/courses/2。

首先命令行输入“vi 文件名”在vim中打开文件,之后按esc确认自己在普通模式下,按shift+:进入命令模式,输入”:%!xxd“将显示模式切换为十六进制显示。

查找要修改的内容”/e8 d7“,找到后前后的内容和反汇编的对比下,确认是地方是正确的,因为可能有多个地方调用。

修改d7为c3

转换16进制为原格式”:%!xxd -r“,存盘退出”:wq“,注意如果不将其转为原格式vim将以ascll码将16进制数保存,将导致无法运行。

最后程序成功跳到了getshell函数


												

PC平台逆向破解的更多相关文章

  1. 20165223《网络对抗技术》Exp1 PC平台逆向破解

    目录--PC平台逆向破解 1 逆向及BOF基础实践说明 1.1 实践内容 1.2 实践要求 1.3 基础知识 2 实验步骤 2.1 直接修改程序机器指令,改变程序执行流程 2.2 通过构造输入参数,造 ...

  2. 20155324《网络对抗》Exp1 PC平台逆向破解(5)M

    20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...

  3. 2018-2019-2 20165237《网络攻防技术》Exp1 PC平台逆向破解

    2018-2019-2 20165237<网络攻防技术>Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调 ...

  4. 2018-2019-2 20165234 《网络对抗技术》 Exp1 PC平台逆向破解

    实验一 PC平台逆向破解 实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另 ...

  5. 20165221 《网络对抗技术》EXP1 PC平台逆向破解

    20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...

  6. 2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解(BOF实验) 实验有三个模块: (一)直接修改程序机器指令,改变程序执行流程: (二)通过构造输入参数,造成BOF攻 ...

  7. 2018-2019-2 20165206《网络对抗技术》Exp1 PC平台逆向破解

    - 2018-2019-2 20165206<网络对抗技术>Exp1 PC平台逆向破解 - 实验任务 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...

  8. Exp1 PC平台逆向破解 20165235 祁瑛

    Exp1 PC平台逆向破解 20165235 祁瑛 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...

  9. 2018-2019-2 20165317《网络对抗技术》Exp1 PC平台逆向破解

    2018-2019-2 20165317<网络对抗技术>Exp1 PC平台逆向破解 实验目的 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:无作用,英文&quo ...

  10. 2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常 ...

随机推荐

  1. java的Date类型转换为MySQL数据库的Date类型

    最近遇到一个问题,需要把java中的日期类型存放为MySQL数据库的日期类型,两个日期之间需要进行转化才能进行存储,转化代码如下: package com.alphajuns.demo1; impor ...

  2. iOS-如何导出P12文件

    1.第一次用博客园,排版有点问题. 2.第一步点击进入Launchped 3.第二步点击钥匙串访问 4.第三步 找到登录下的Distribution 然后右键选择导出 5.第四步 选择下面的个人信息交 ...

  3. 《转》适用于开发人员的10个最佳ASP.NET的CMS系统

    1) mojoportal mojoPortal 是一个开源的.用 C# 编写的站点框架和内容管理系统,可以运行在 Windows 中的 ASP.NET 和 Linux/Mac OS X 中的 Mon ...

  4. 《从零开始学Swift》学习笔记(Day 55)——使用try?和try!区别

    原创文章,欢迎转载.转载请注明:关东升的博客 在使用try进行错误处理的时候,经常会看到try后面跟有问号(?)或感叹号(!),他们有什么区别呢? 1.使用try? try?会将错误转换为可选值,当调 ...

  5. [Algorithms] Counting Sort

    Counting sort is a linear time sorting algorithm. It is used when all the numbers fall in a fixed ra ...

  6. HTML Colors

    https://www.w3schools.com/html/html_colors.asp <!DOCTYPE html> <html> <body> #169f ...

  7. iOS核心动画详解(一)

    前言 这篇文章主要是针对核心动画(Core Animation)的讲解,不涉及UIView的动画.因为内容较多,这篇文章会分为几个章节来进行介绍.本文主要是介绍核心动画的几个类之间的关系和CAAnim ...

  8. 第13章—数据库连接池(Druid)

    spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...

  9. 剑指Offer——二维数组中的查找

    题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 分析: 因为二维数组 ...

  10. J2EE之JPA

    POJO(plain old java object普通java类):具有setter/getter方法的Java类就称为POJO POJO转化为实体,手工使用标记, @Entity public c ...