Linux实践:文件破解

标签(空格分隔): 20135321余佳源


一、掌握NOP、JNE、JE、JMP、CMP汇编指令的机器码

  1. NOP:NOP指令即“空指令”。执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。(机器码:90)
  2. JNE:条件转移指令,如果不相等则跳转。(机器码:75)
  3. JE:条件转移指令,如果相等则跳转。(机器码:74)
  4. JMP:无条件转移指令。
    • 段内直接短转Jmp short(机器码:EB)
    • 段内直接近转移Jmp near(机器码:E9)
    • 段内间接转移Jmp word(机器码:FF)
    • 段间直接(远)转移Jmp far(机器码:EA)
  5. CMP:比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。

二、掌握反汇编与十六进制编程器

1. 通过反汇编求出用户名、密码

1.编写一个简单的需要验证密码的程序

代码相当简单,对应密码是20135321。

2.编译并运行查看其结果

3.在终端使用指令objdump -d fish进行反汇编查看

4.找到main函数

可以看到图中有一句cmp的比较语句,然后使用了一个jne即不符合条件时跳转,这里就是比较输入密码和设定密码,不等就跳转。而这两个密码对应存放的寄存器则是,0x1c和0x18。而0x1c中的16进制数对应的十进制数就是设定的密码20135321,0x18中的值是原定的0。

而0x75 0e表示jne指令的跳转量为0x0e,从0x8048456跳转到0x8048464一行(即imp一行)。也就是说,当输入与已存口令不相等时,就不会执行函数调用(call)。

那么,如果要破解程序使得无论输入的口令是否是正确的,都可以实现函数调用,就需要将这条jne指令修改一下,使得其跳转到0x8048458行的movl处,从而顺利执行call语句。也就是说其实这个jne被修改成原地回旋跳。

5.程序破解

  • vi打开login,输入“:%!xxd”
  • 输入指令“/750e”查找到那个位置,确定位置后“INSERT”将其修改为7500

  • 输入“:%!xxd -r”并输入“:wq”保存

  • 成功破解

  • 开启反汇编验证修改

三、其他的破解方式

  1. 把不相等时跳转到输入错误的处理语句jne改成相等时跳转到输入错误的处理语句je。找到即将修改的750e字段,将表示jne的75修改为74(表示je,即相等时跳转),可以将程序修改成输入正确密码时,输出Failed!输入错误密码时输出Hello Fish!

  2. 修改cmp指令的对象,使得比较结果永远相等,就是把要对比的两个寄存器数值0x1c和0x18进行修改,把两者修改同为1c或者18。使得不管输入什么,对比的结果都将是一样,而程序的输出结果都是Hello Fish!

Linux实践:文件破解的更多相关文章

  1. LINUX实践--程序破解

    实验思想 本次实验的主要思想有两个,第一个是修改跳转指令,把它变成无条件跳转使得无论输入什么用户名都跳转到失败的那个选项中去,第二个思想是修改比对的内容,即不判断条件,从而成功 实验步骤 1.首先从老 ...

  2. 【实践报告】Linux实践三

    Linux实践——程序破解 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即“空指令”.执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP ...

  3. linux实践之程序破解

    linux实践之程序破解 这次的实践是文件破解,让我们从login可执行文件开始吧! 首先我们执行一下这个可执行程序 ①我们希望在不知道密码的情况下,能够登陆进去.且无论密码是什么,都是提示“on y ...

  4. linux实践之ELF文件分析

    linux实践之ELF文件分析 下面开始elf文件的分析. 我们首先编写一个简单的C代码. 编译链接生成可执行文件. 首先,查看scn15elf.o文件的详细信息. 以16进制形式查看scn15elf ...

  5. Linux Makefile文件编写详细步骤与实践

    Linux Makefile文件编写详细步骤与实践 1.makefile概述 Windows环境下IDE会帮你完成makefile文件的编写,但在UNIX环境下你就必须自己写makefile了,会不会 ...

  6. linux普通文件权限和系统目录权限的实践及结论

    测试结论:linux普通文件的读.写.执行权限说明 1.可读r:表示具有读取\阅读文件内容的权限 2.可写w:表示具有新增.修改文件内容的权限 1)如果没有r配合,那么vi编辑文件会提示无法编辑(但可 ...

  7. Linux 本地文件或文件夹上传服务器

    Linux 本地文件或文件夹上传服务器 一.权限设置 本地文件或文件夹上传服务器,你首先需要获取到root权限: 二.上传方式 上传方式有两种 : 1.通过 FTP 客户端上传文件或文件夹: 2.通过 ...

  8. linux清空文件内容的几种方式与区别

    虽然linux清空文件内容的方式有很多种,但是他们之间有着细微的差别.通过实践我将他们分为两类: 将文件清空,文件大小为0k $ : > filename  $ > filename  $ ...

  9. 其他综合-使用Xshell远程连接管理Linux实践

    使用Xshell远程连接管理Linux实践 1. Xshell整体优化 1)点击 工具 ,然后选择 选项 2)在 常规 选项中,下面的存放路径根据个人爱好修改(可选默认) 3)在 更新 选项中,将 √ ...

随机推荐

  1. Linux 小知识翻译 - 「文件系统的种类」

    现在的Linux,主流的文件系统是 「ext3」.但是,文件系统除此之外,还有「ReiserFS」「XFS」「ZFS」等等. 此外,Windows的主流文件系统是「NTFS」,CD-ROM的主流文件系 ...

  2. February 3rd, 2018 Week 5th Saturday

    Life takes on the meaning that you give it. 你赋予生活什么,生活就是什么样子. I always wonder why on earth I am here ...

  3. Python3编写网络爬虫08-数据存储方式一-文件存储

    数据存储 用解析器解析出数据之后,就是存储数据了.保存的形式可以多种多样,最简单的形式是直接保存为文本文件,如TXT JSON CSV等.另外还可以保存到数据库中,如关系型数据库MySQL 非关系型数 ...

  4. XML Namespace (xmlns) 属性

    http://www.w3school.com.cn/xml/xml_namespaces.asp XML Namespace (xmlns) 属性 XML 命名空间属性被放置于元素的开始标签之中,并 ...

  5. 【微软编程一小时】题目1 : Arithmetic Expression

    时间限制:2000ms 单点时限:200ms 内存限制:256MB 描写叙述 Given N arithmetic expressions, can you tell whose result is ...

  6. P1754 球迷购票问题

    题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...

  7. python 播放mp3

    import os os.system('out1.mp3') 自动带开播放器

  8. Android学习之基础知识十四 — Android特色开发之基于位置的服务

    一.基于位置的服务简介 LBS:基于位置的服务.随着移动互联网的兴起,这个技术在最近的几年里十分火爆.其实它本身并不是什么时髦的技术,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动 ...

  9. Oracle 存储过程或函数传入的数值参数number

    在oralce中,如果存储过程需要接收含有数值类型的参数时,如何声明呢.如下: CREATE OR REPLACE PACKAGE GPS.PKG_MONTH_TARGET AS ---------- ...

  10. python里面 循环明细对比 相同人员明细,生成同一订单里面

    #2018-04-16 def action_create_purc(self,cr,uid,ids,context=None): mrp_origin_obj=self.browse(cr,uid, ...