linux实践之程序破解

linux实践之程序破解linux

此次的实践是文件破解,让咱们从login可执行文件开始吧!函数

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

 

①咱们但愿在不知道密码的状况下,可以登录进去。且不管密码是什么,都是提示“on your commandmy master”。blog

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

 

咱们首先要找到main函数的入口处。搜索

 

咱们能够看到cmp语句后,有jmp语句,若是不等于就跳转到“0x8048466”处,这是正常程序执行的过程,咱们在这里但愿不等于的时候,也不要跳转,因此能够把“75 0e”修改成“75 00”表示,不用跳转。这样这句跳转语句至关于不存在了,由于不管比较的结果是否相等,都将按顺序继续执行。二进制

先来看看正确登录是什么样子的。程序

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

 

输入“:%!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”。

 

修改后保存。

 

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

 

 

就是这样,搞定啦!

相关文章
相关标签/搜索