20135327--实践三

程序破解

 

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

NOPNOP指令即“空指令”。执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。(机器码:90)

JNE条件转移指令,如果不相等则跳转。(机器码:75)

JE条件转移指令,如果相等则跳转。(机器码:74)

JMP无条件转移指令。段内直接短转Jmp short(机器码:EB)段内直接近转移Jmp near(机器码:E9)段内间接转移Jmp word(机器码:FF)段间直接(远)转移Jmp far(机器码:EA)

CMP比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。 
2、掌握反汇编与十六进制编程器

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

打开终端,输入objdump –d 01,找到main函数:

(objdump是gcc工具,用来查看编译后目标文件的组成)

(此时使用的是实验一的代码,包含用户名和密码的输入)

在main函数的汇编代码中可以看出程序在调用“scanf”函数请求输入之后,对 [rbp-0x20] 和 [rbp-0x10] 两个内存单元的内容进行了比较,其作用应该是对比用户输入和预设口令。

esp+0x20为首地址被定义为:0x00746e6c

esp+0x10为首地址被定义为:0x00333231

如果从低地址往高地址连续的就是6c 6e 74 00 31 32 33 00

转换为字符表示为lnt 123 (用户名 密码)

(2)修改可执行文件,玩转密码登陆

①不管输入正确与否都可以正常登陆。

②不管输入正确与否都可以不可以正常登陆。

③输入正确密码不能登录,输入错误密码能够登陆。

首先,重新编写一个简单的代码11.c:

使用objdump –d 11查看main:

①为了跳过口令检查,也就是无论比较的结果如何,都正常登陆。

jne是条件跳转,如果条件满足,则跳转到4005e0;

jne下两行可知是输出内容;

jmp是跳转语句(没有条件,则直接跳转),直接跳到4005f1;

jmp下两行也是输出内容。

jne表示当比较不相等时,跳转。也就是说,当输入与已存口令不相等时,跳转到jmp下一行mov(4005e7),如果比较结果相等,则执行jne下两行mov、callq行,说明,执行mov、callq行输出的为“right”。

现在可以明确,需要修改红线处,使其在比较结果不等时也跳转到下一行。

所以,将0e改为00即可。

使用vi编辑器进入11,

输入:%!xxd

输入/750c

将0c改为00:,然后输入:%!xxd –r

输入:wq

使用objdump –d 11查看main:

测试结果:(无论输入什么,都表示正确)

②不可以正常登陆,即需要无条件跳转到错误的地方,无条件跳转为jmp,则同理需要将750c改成eb0c.(eb为无条件跳转);

测试结果:(输入正确,表示错误)

③同理若需要出现相反效果,即输入正确密码不能登录,输入错误密码能够登陆。则需要将其改为740c。

测试结果:

时间: 2024-10-24 19:49:09

20135327--实践三的相关文章

Linux课题实践三——字符集总结与分析

Linux课题实践三——字符集总结与分析 20135318  刘浩晨 字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集.GB2312字符集.BIG5字符集. GB18030字符集.Unicode字符集等. 1.总结ISO.UCS/UTF.GB系列字符集的由来.异同 (1).ISO/IEC ISO/IEC 646:是国际标准化组织(ISO)及国际电工委员会(IEC)联合制定

完整cmm解释器构造实践(三):语法分析

完整cmm解释器构造实践(三):语法分析 语法树节点 我的语法分析器不仅会判断cmm代码的语法是否正确, 同时会存储分析过程中得到的信息, 完成语法树的构建. 为什么要有语法树呢, 其实还是为了计算机方便做进一步的处理才用的, 语法树里面存储了从代码里面提取的信息, 我们生成语法树之后再通过遍历语法树来得到中间代码. 当然直接遍历语法树并解释执行也是可以的, 我们老师非得让我们有中间代码, 所以我的语法分析只为了生成中间代码而服务的, 虽然我的代码生成器本质上是解释器改造而成的. 那么既然语法树

OWIN的理解和实践(三) –Middleware开发入门

原文:OWIN的理解和实践(三) –Middleware开发入门 上篇我们谈了Host和Server的建立,但Host和Server无法产出任何有实际意义的内容,真正的内容来自于加载于Server的Middleware,本篇我们就着重介绍下Middleware的开发入门. Middleware是什么 如果把HTTP交互理解为一次答题活动,那么Request是问题,Response就是答案,Server是课堂,Middleware就是参与者,注意我这里用的是参与而不是解答,因为我们允许有些Midd

结对项目 实践三

一:题目简介 该次实践作业主要实现一个手机的简单应用,计算器.可以在手机平台上实现,这里模拟的安卓环境. 二:结对分工及过程 这次结对的同学是郭淑涛,主要是两人确定了题目后,编写代码,之后在各自的电脑环境平台下进行运行,有问题互相交流,互相学习,也收获很多. 三:代码地址 https://github.com/githubmengqian/partner-project 四:测试情况 首先电脑需要有安卓的eclipse的软件,配置好相应环境后,在平台上建项目,之后进行运行,这里模拟的是安卓环境,

Docker入门实践(三) 基本操作

Docker安装完毕,我们就可以试着来运行一些命令了,看看docker可以干什么. (一) 创建一个容器 首先,让我们运行一个最简单的容器,hello-world.如果安装没有问题,并运行正确的话,应该会出现下面的结果: $ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world c04b14da8d14: Pull comp

Android最佳性能实践(三)——高性能编码优化

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/42318689 在前两篇文章当中,我们主要学习了Android内存方面的相关知识,包括如何合理地使用内存,以及当发生内存泄露时如何定位出问题的原因.那么关于内存的知识就讨论到这里,今天开始我们将学习一些性能编码优化的技巧. 这里先事先提醒大家一句,本篇文章中讨论的编码优化技巧都是属于一些"微优化",也就是说即使我们都按照本篇文章的技巧来优化代码,在性能方面也是看不出有什么

中小型研发团队架构实践三要点--转

来自微信公众号聊聊架构 作者|张辉清 编辑|雨多田光 如果你正好处在中小型研发团队…… 中小型研发团队很多,而社区在中小型研发团队架构实践方面的探讨却很少.中小型研发团队特别是 50 至 200 人的研发团队,在早期的业务探索阶段,更多关注业务逻辑,快速迭代以验证商业模式,很少去关注技术架构. 这时如果继续按照原有的架构及研发模式,会出现大量的问题,再也无法玩下去了.能不能有一套可直接落地.基于开源.成本低,可快速搭建的中间件及架构升级方案呢? 我是一个有十多年经验的 IT 老兵,曾主导了两家公

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(三)

前言 在上一篇中,我们依靠着EasyUI强大的前端布局特性把前端登录界面和主界面给搭建完成了.这一篇我们就要尝试着把整个解决方案部署到云端呢,也就是Visual Studio Online(TFVC)中. 在我们进行团队项目开发的过程中,或多或少的都会接触到一些源代码管理工具,比如vss.svn.tfs.git,这些工具都有着自己的特点.但最终目的都是方便团队的协作开发,提高工作效率.Visual studio从2013版本开始就为我们提供了云端管理源代码的能力.Visual Studio On

【实践报告】Linux实践三

Linux实践——程序破解 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即“空指令”.执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令.(机器码:90) JNE:条件转移指令,如果不相等则跳转.(机器码:75) JE:条件转移指令,如果相等则跳转.(机器码:74) JMP:无条件转移指令.段内直接短转Jmp short(机器码:EB)段内直接近转移Jmp near(机器码:E9)段内间接转移Jmp word(机器码:

实践三之实验报告

Linux>实践——程序破解 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即“空指令”.执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令.(机器码:90) JNE:条件转移指令,如果不相等则跳转.(机器码:75) JE:条件转移指令,如果相等则跳转.(机器码:74) JMP:无条件转移指令.段内直接短转Jmp short(机器码:EB)段内直接近转移Jmp near(机器码:E9)段内间接转移Jmp word(机器码