linux实践——简单程序破解
一、运行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实践——简单程序破解的更多相关文章
- linux实践之程序破解
linux实践之程序破解 这次的实践是文件破解,让我们从login可执行文件开始吧! 首先我们执行一下这个可执行程序 ①我们希望在不知道密码的情况下,能够登陆进去.且无论密码是什么,都是提示“on y ...
- LINUX第三次实践:程序破解
LINUX第三次实践:程序破解 标签(空格分隔): 20135328陈都 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即"空指令".执行到NOP ...
- Linux及安全实践三——程序破解
Linux及安全实践三--程序破解 一.基本知识 常用指令机器码 指令 作用 机器码 nop 无作用(no operation) 90 call 调用子程序,子程序以ret结尾 e8 ret 返回程序 ...
- Linux实践:文件破解
Linux实践:文件破解 标签(空格分隔): 20135321余佳源 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即"空指令".执行到NOP指令 ...
- Linux及安全——程序破解
Linux及安全——程序破解 由于我的Ubuntu的vi有故障,所以用kaili做. 运行原程序 1.反汇编代码,查看 objdump -d login 2.修改代码 vi login 转换为16进制 ...
- Linux课程实践三:简单程序破解
一.基本知识 1. 常用指令机器码 不同版本对应机器码不同,这里以我做实验的kali(Intel 80386)为例. 指令 作用 机器码 nop 无作用(no operation) 90 call 调 ...
- Linux课题实践三——程序破解
2.3 程序破解 20135318 刘浩晨 1. 掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即“空指令”.执行到NOP指令时,CPU什么也不做,仅仅当做一 ...
- 20135323符运锦----LINUX第三次实践:程序破解
程序破解 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 ①NOP:NOP指令即"空指令".执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行N ...
- linux内核分析程序破解实践报告
随机推荐
- ReSharper 8.XXX 注册机
今天给电脑重装系统,发现Rsharper已经更新到8.0.14.856了,于是下载新版本的,但像咱搞开发的,肯定不能用付费软件(关键是你也付不起啊,499$,499刀啊).于是在网上找相关的激活软件. ...
- vs2012远程调试功能的改进
不知道大家有没有遇到过这种情况,刚开发完的程序,明明在本机能够好好的运行,可是部署到服务器过分发给用户时,总是出现莫名其妙的错误. 一时半会又看不出问题来,怎么办呢?难道只能在服务器或是客户电脑上装一 ...
- 使用Android studio创建的AIDL编译时找不到自定义类的解决办法
使用AS创建ADIL文件时AS会在main文件夹下给我们生成一个aidl文件夹和一个相同包名的包,通常我们会把所有和ADIL相关的类或文件放在这个包下,但是如果存在自定义的类时,程序编译时无法通过,提 ...
- Effective Java 03 Enforce the singleton property with a private constructor or an enum type
Principle When implement the singleton pattern please decorate the INSTANCE field with "static ...
- cocos2d-x之物理引擎之碰撞监测
#include "HelloWorldScene.h" USING_NS_CC; #define RED_BIT_MASK 0b0100 #define GREEN_BIT ...
- C语言的函数
"函数"在英文的翻译是"function",无论在自然科学还是计算机科学都是这个词,而"function"的本意是"功能" ...
- 获取radio和select的值,获取select的值
获取radio的值 var val=$('input:radio[name="_objId"]:checked').val(); jQuery中获得选中select值 第一种方法$ ...
- Hadoop question list
1.我们在开发普通的web app的时候,总会用到orm框架,如hibernates ,ibates等,在hadoop中我们一直使用writable对象,当然如果我们想实现自己的对象类,需要继承这个w ...
- 聚合数据全国天气预报api接口
查询天气预报在APP中常用的一个常用功能,聚合数据全国天气预报api接口可以根据根据城市名/id查询天气.根据IP查询天气.据GPS坐标查询天气.查询城市天气三小时预报,并且支持全国不同城市天气预报查 ...
- [转]设定version 更新js缓存
http://zhenggm.iteye.com/blog/680600 遇到的问题: 在访问量比较大的系统中,我们需要将一些静态的文件在客户端缓存,以减少下载的流量,从而加快客户端访 ...