linux实践之程序破解

这次的实践是文件破解,让我们从login可执行文件开始吧!

首先我们执行一下这个可执行程序

①我们希望在不知道密码的情况下,能够登陆进去。且无论密码是什么,都是提示“on your command,my master!”。

首先对该程序执行反汇编。

我们首先要找到main函数的入口处。

我们可以看到cmp语句后,有jmp语句,如果不等于就跳转到“0x8048466”处,这是正常程序执行的过程,我们在这里希望不等于的时候,也不要跳转,所以可以把“75 0e”修改为“75 00”表示,不用跳转。这样这句跳转语句相当于不存在了,因为无论比较的结果是否相等,都将按顺序继续执行。

先来看看正确登陆是什么样子的。

首先打开login文件,结果如图所示,

输入“:%!xxd”,结果如图所示。

搜索“75 0e”,输入“/75 0e”,结果如图所示。

修改该值为“75 00”,输入“:%!Xxd -r”保存修改。

退回到二进制文件格式后,输入“:wq”保存。

重新执行该可执行文件,结果如图所示。

②我们希望无论输入什么,跳过提示。直接结束。

分析main函数的反汇编。

我们只需要将cmp比较后的jne判断语句,直接跳转到leave处。即将“75 00”修改为“75 1a”,这样在输错密码的情况下会直接结束,退出程序。在“75 00”处增加代码,增加代码为“jmp 8048472”,即增加“eb 0c”。总结:就是将“75 00”修改为“75 1a eb 0c”。

让我们来尝试一下是否能够成功吧!

但是失败了,显示为段错误。

这是我想重新反汇编该可执行文件,结果为

由于我的修改,导致文件不可用,也无法复原回原来的版本,所以我又只好重新开始新的代码,进行尝试。

于是我只好重新修改,我这次不增加新的代码,直接将“75 0e”修改为“75 1a”。

修改后的执行结果如下。

修改后重新反汇编一下,查看结果。

③深入研究,试图猜测密码。

从上图的main代码中,我们可以看到,比较的是“0x1c(%esp)”和“%eax”的值,而看上一步“%eax”的值是“0x18(%esp)”,往上面找,我猜测,这里比较的就是“0x7fe”和“0x0”,这样一来,结果永远是不等于,所以我尝试修改,将下面的“00 00”改为“fe 07”。

修改后保存。

修改后,输入任何密码,都是成功登陆。

就是这样,搞定啦!

linux实践之程序破解的更多相关文章

  1. linux实践——简单程序破解

    一.运行login可执行程序,屏幕显示需要输入密码,随便输入一串字符,结果是Drop dead! 二.objdump -d login,对login进行反汇编,找到main函数,找到含有scanf的那 ...

  2. LINUX第三次实践:程序破解

    LINUX第三次实践:程序破解 标签(空格分隔): 20135328陈都 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即"空指令".执行到NOP ...

  3. Linux及安全实践三——程序破解

    Linux及安全实践三--程序破解 一.基本知识 常用指令机器码 指令 作用 机器码 nop 无作用(no operation) 90 call 调用子程序,子程序以ret结尾 e8 ret 返回程序 ...

  4. Linux实践:文件破解

    Linux实践:文件破解 标签(空格分隔): 20135321余佳源 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即"空指令".执行到NOP指令 ...

  5. Linux及安全——程序破解

    Linux及安全——程序破解 由于我的Ubuntu的vi有故障,所以用kaili做. 运行原程序 1.反汇编代码,查看 objdump -d login 2.修改代码 vi login 转换为16进制 ...

  6. Linux课题实践三——程序破解

    2.3   程序破解 20135318 刘浩晨 1.     掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即“空指令”.执行到NOP指令时,CPU什么也不做,仅仅当做一 ...

  7. 20135323符运锦----LINUX第三次实践:程序破解

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

  8. linux内核分析程序破解实践报告

  9. Linux内核分析——程序破解

    1. 掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即“空指令”.执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令.(机器码: ...

随机推荐

  1. effective OC2.0 52阅读笔记(七 系统框架)

    47 熟悉系统框架 总结:将代码封装为动态库,并提供接口的头文件,就是框架.平时的三方应用都用静态库(因为iOS应用程序不允许在其中包含动态库),并不是真正的框架,然而也经常视为框架.例如:NSLin ...

  2. Sql Server 2008服务启动失败,错误17058

    SQL Server (SQLEXPRESS) 服务因 17058 (0x42A2) 服务性错误而停止. 有关更多信息,请参阅在 http://go.microsoft.com/fwlink/even ...

  3. SAP 销售订单的文本项目

    http://blog.itpub.net/9859323/viewspace-616508/ ls_hdname = wa_vbak-vbeln .     CALL FUNCTION 'READ_ ...

  4. JavaScript高级程序设计学习笔记--DOM

    DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口). Document类型 文档的子节点 虽然DOM标准规定Document节点的子节点可以是DocumentType,Ele ...

  5. aes加密C语言

    /** * \file aes.h * * \brief AES block cipher * * Copyright (C) 2006-2010, Brainspark B.V. * * This ...

  6. whose view is not in the window hierarchy

    参考:http://www.jianshu.com/p/9e90cb866fdf 在做界面跳转的时候,我们经常会用到这两个函数 func dismissViewControllerAnimated(f ...

  7. php随机生成验证码代码

    <?php session_start(); //产生一个随机的字符串验证码 $checkcode=""; for ($i=0;$i<4;$i++){ $checkco ...

  8. 使用 CUDA范例精解通用GPU编程 配套程序的方法

    用vs新建一个cuda的项目,然后将系统自动生成的那个.cu里头的内容,除了头文件引用外,全部替代成先有代码的内容. 然后程序就能跑了. 因为新建的是cuda的项目,所以所有的头文件和库的引用系统都会 ...

  9. 会话控制:Cookie和session

    HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本.图形.视频和所有其他数据所有的规则.HTTP是一种无状态的协议,说明每次请求的处理都与之前或之后的请求无关.虽然这种简化实现对于HTTP的 ...

  10. Pyqt show和exec的区别

    Pyqt中 QDialog  show和exec的区别 QDialog的显示有两个函数show()和exec().他们的区别在参考文档上的解释如下: show():显示一个非模式对话框.控制权即刻返回 ...