一、运行login可执行程序,屏幕显示需要输入密码,随便输入一串字符,结果是Drop dead!

二、objdump -d login,对login进行反汇编,找到main函数,找到含有scanf的那一行,再看接下来几行,发现有cmp指令进行比较,比较的寄存器是1c和18,找到main函数开始几行,发现1c被赋值7fe,转换成十进制后是2046。再次执行login,输入2046,结果是on your command,my master!破解成功。

三、修改代码,改变程序功能。

vi login

:%!xxd

/750e

进入insert模式修改十六进制数

:%!xxd -r

:wq

/login

1.如下图所示,程序进行比较后,不相等时跳转到输入错误的处理语句。找到即将修改的750e字段,将表示jne的75修改为74(表示je,即相等时跳转)或90(nop无效指令),可以将程序修改成输入正确密码时,输出Drop dead!输入错误密码时输出on your command,my master!

2.如下图所示,修改cmp指令的对象,使得比较结果永远相等。不管输入什么,结果都是on your command,my master!

3.如下图所示,将含有scanf字符的那一行指令的十六进制数都改为无效指令。结果为直接输出Drop dead!然后再如1、2修改一下,就可以直接输出on your command,my master!

4.本项修改时尝试修改!将1c和18存储的数值改成一样的。执行login,结果是不管输入什么,结果都是on your command,my master!(不知道是为何如此,按理来说18存储的是输入的密码的值,应该没有变化的……)

5.程序还有很多其他的改法,在此就不一一列举的。欢迎讨论交流~

6.以上

linux实践——简单程序破解的更多相关文章

  1. linux实践之程序破解

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

  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课程实践三:简单程序破解

    一.基本知识 1. 常用指令机器码 不同版本对应机器码不同,这里以我做实验的kali(Intel 80386)为例. 指令 作用 机器码 nop 无作用(no operation) 90 call 调 ...

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

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

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

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

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

随机推荐

  1. Stack与Heap的区别

    申明:这里所说的栈和堆是程序内存管理中的栈和堆,而不是数据结构里的栈和堆. (1)保存的内容不同:栈里保存的是局部变量,而堆里保存的是动态申请的变量. (2)栈里的内存系统自动申请和释放,程序执行出申 ...

  2. 【OpenCV】图像转成YUV420 I420格式

    一.YUV420 I420介绍 一种颜色编码方法,在YUV色彩空间中,Y表示亮度信号,U.V表示色度信号: 其YUV排列如下,4个Y分量(2x2)对应一个U和V, Y存放完,接着存放U,U存放完,最后 ...

  3. 日常工作生活中的做人做事道理[持续更新ing]

    1.凡是预则立,不预则废 2.不能用特殊案例说明事情本身的发展规律 3.任务不能拖,需主动出击,想方设法完成 4.工作要有细致化的沟通和安排 5.解决问题和安排任务可以逆向思维的去想 6.问题要举一反 ...

  4. Ubuntu 环境 运行Asp.net mvc +EntityFramework+ Mysql

    关键词:ubuntu,mono,.Net framework 4.5,asp.net mvc 4,Entityframework 6,Mysql Mono安装 参考文章: Install Mono o ...

  5. uboot 2014.04 运行过程记录

    uboot启动流程分析,针对S5PV210 BL1阶段,SPL,u-boot-spl.bin 1.首先运行arch/arm/cpu/armv7/start.S 里面的_start函数,进行异常向量表设 ...

  6. java 基础

    一 4类8种基本数据类型 逻辑型   - boolean 文本型   - char 整数型   - byte short int long 浮点数型 - float double ☆java各整数类型 ...

  7. html3秒跳转

    <script>     setTimeout( 'window.location= "home.jsp " ',3000) ;//注意,此处“;”可加可不加</ ...

  8. malloc calloc 和 realloc

    realloc()函数 原型:extern void *realloc(void *mem_address, unsigned int newsize); 语法:指针名=(数据类型*)realloc( ...

  9. [转]PhoneGap使用PushPlugin插件实现消息推送

    本文转自:http://my.oschina.net/u/1270482/blog/217661 http://devgirl.org/2013/07/17/tutorial-implement-pu ...

  10. cnblogs美化及插件

    1.vp计数 http://www.amazingcounters.com 2.来源地图 http://clustrmaps.com 2.1来源地图 http://www.flagcounter.co ...