linux实践之程序破解

摘要:
linux实践之程序破解这次的实践是文件破解,让我们从login可执行文件开始吧!我们首先要找到main函数的入口处。首先打开login文件,结果如图所示,输入“:%!xxd”,结果如图所示。分析main函数的反汇编。即将“7500”修改为“751a”,这样在输错密码的情况下会直接结束,退出程序。修改后,输入任何密码,都是成功登陆。

linux实践之程序破解

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

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

linux实践之程序破解第1张

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

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

linux实践之程序破解第2张

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

linux实践之程序破解第3张

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

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

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

linux实践之程序破解第4张

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

linux实践之程序破解第5张

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

linux实践之程序破解第6张

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

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

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

linux实践之程序破解第7张

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

分析main函数的反汇编。

linux实践之程序破解第8张

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

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

linux实践之程序破解第9张

linux实践之程序破解第10张

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

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

linux实践之程序破解第11张

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

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

修改后的执行结果如下。

linux实践之程序破解第12张

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

linux实践之程序破解第13张

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

linux实践之程序破解第14张

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

linux实践之程序破解第15张

修改后保存。

linux实践之程序破解第16张

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

linux实践之程序破解第17张

linux实践之程序破解第18张

就是这样,搞定啦!

免责声明:文章转载自《linux实践之程序破解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇手把手教你用C#打包应用程序[打包Framework]在React中使用Swiper下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

逆向安全基础之IDA使用简介

转载:http://m.blog.csdn.net/ilnature2008/article/details/54912854IDA简介IDA是业界一个功能十分强大的反汇编工具,是安全渗透人员进行逆向安全测试的必备工具,其强大的静态反汇编和逆向调试功能能够帮助安全测试人员发现代码级别的高危致命安全漏洞,当然其价格也不便宜,国内一个license从几千到一万...

异常(2) --- 编译器对于SEH异常的拓展

Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 异常(2) --- 编译器对于SEH异常的拓展 在 异常(1)中,我们介绍了用户模拟异常与CPU异常的收集,以及内核层与用户层异常的处理,其中介绍过SEH异常。 我们之前只提到过编译器拓展SEH异常的,但是由于篇幅有限,并没...

【Linux-设备树】.dtb文件的反汇编

在使用设备树时我们将**.dts文件利用dtc编译器编译为**.dtb文件。 在已知**.dtb文件的情况下我们有两种方法可以得到dts源码: 方法一:使用fdtdump工具进行反汇编 使用命令:root#fdtdump **.dtb > temp.dts 反汇编生成的内容保存在temp.dts 方法二:使用dtc编译器进行反汇编 dtc -h 可以...

[转载]为什么有些语言可以被反编译?而有的不能?

来源:https://blog.csdn.net/z8414/article/details/73332009 要理解这个问题,先要看「正」编译的过程是怎样的。你有一个想法,这是一种人类自然语言可以表达出来的东西。你利用编程技能,把它「翻译」成你熟悉的一种编程语言: 这个过程叫做编程。然后你使用编译器(compiler)将它翻译成机器所能理解的语言:...

[转载]注册机破解法的原理以及应对方法

[--- 资料是从免费网站上获取的,上载在这里,只为交流学习目的,文章原作者保留所有权力,如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除。同时本人深表歉意,并致以崇高的谢意!erwin_609#msn.com---] 顾名思义,写注册机来破解软件注册的方法,就是模仿你的注册码生成算法或者逆向注 册码验证算法而写出来的和你一模一样的注册...

用OllyDbg做破解[转]

朋友所托,要帮忙破解一个MFC的小程序,他急等着用 (背景:几个人合伙创业,其中一个负责写这个有点小核心的项目,为了巩固自己的”地位“搞的小把戏,给加了密,要用必须通过他 - 我艹~~~)。 虽说自己搞C++比较多,相对来讲native一点,但是对于汇编与破解,了解相当有限,去年这朋友也找过我,因为当时刚换公司比较忙,是求助另外一好友才搞定的。这次还是自己...