linux实践之程序破解
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实践之程序破解的更多相关文章
- linux实践——简单程序破解
一.运行login可执行程序,屏幕显示需要输入密码,随便输入一串字符,结果是Drop dead! 二.objdump -d login,对login进行反汇编,找到main函数,找到含有scanf的那 ...
- 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课题实践三——程序破解
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内核分析程序破解实践报告
- Linux内核分析——程序破解
1. 掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即“空指令”.执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令.(机器码: ...
随机推荐
- Android编程容易犯的错误之二
11.不要太相信工具,比如Eclipse里面的断点遇到多线程什么,经常不起作用/走不到,还有就是如果语句为空的也不会走,这时候别太早下结论断点地方出错了, 所以每个工程都应该有日志的开关,通过查看日志 ...
- 51nod1073(约瑟夫环)
题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1073 题意: 中文题诶~ 思路: 直接模拟的话O(n*k)的 ...
- _stdcall,_cdecl区别
(1) _stdcall调用 _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈. WIN32 Api都采用_stdcall调用方式,这样的宏定 ...
- [BI项目记]-配置Sharepoint2013支持文档版本管理笔记
做开发或者做方案,写文档是很重要的一个工作,我们经常需要知道文档被修改的次数,谁在什么时间修改的文档,以及在某一个版本中,都修改了哪些内容,以及不同版本的文档之间有什么差别. 如何对文档进行版本管理, ...
- 算法系列:Fibonacci
Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...
- 使用ajax.dll时js脚本错误-XXX未定义
操作系统:Windows 7 IIS:7.5 ajax.dll现在用的比较少,但是以前的项目有这个,使用的时候很容易出现这个错误,因为总是会遗漏配置. 使用ajax.dll时,js脚本错误,无法调用后 ...
- sqlmap和burpsuite绕过csrf token进行SQL注入检测
利用sqlmap和burpsuite绕过csrf token进行SQL注入 转载请注明来源:http://www.cnblogs.com/phoenix--/archive/2013/04/12/30 ...
- Nginx二级域名及多Server反向代理配置
Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了. 注:nginx反向代理同一ip多个域名,给head ...
- 2016 Multi-University Training Contest 1 J.Subway
Subway Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Su ...
- PHP-Redis扩展使用手册(四)
/* 添加一个或者多个value到无顺序集合总,如果value已经成set中,则返回false * @param key set名称 * @param value * ... * @return in ...