程序破解

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

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

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

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

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

⑤CMP:比较指令,功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。

二、掌握反汇编与十六进制编程器

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

首先,使用EXP进行分析,输入指令 objdump -d exp后,找到MAIN函数

这里的截图是刚好在scanf函数之后的,因为我们是要比较输入的和提前设置好的变量相比较。我又找到strcmp这个函数之前的几句有两个lea语句,也就是找了两个地址。那么strcmp比较的应该就是这两个为首地址的两个字符串。先看esp+0x38这里在前面有没有定义:



那么可以看到:

esp+0x38为首地址被定义为:0x696d6461

esp+0x3c为首地址被定义为:0x0000006e

如果从低地址往高地址连续的就是61 64 6d 69 6e 00 00 00

转换为字符表示为:admin



同样的我们看到另外一个比较的地址是esp+0x42和esp+0x46

Esp+0x42是0x79736165,由低到高就是65 61 73 79

转换为字符表示为:easy

登录成功后,如下图

(2)修改可执行文件

我主要实现任何密码都可以登录,使用的是老师上课使用的login代码

objdump –d login 查看main:



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

jne是条件跳转,如果条件满足,则跳转到8048466;jne下两行可知是输出内容;
jmp是跳转语句(没有条件,则直接跳转),直接跳到8048472;jmp下两行也是输出内容。

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

现在可以明确,需要修改使其在比较结果不等时也跳转到下一行。所以,将0e改为00即可。下一步,使用vi进入login,输入:%!xxd



输入/750c,将0c改为00:,然后输入:%!xxd –r,最后再输入:wq

发现其已经被改正。



测试结果如下,发现输入任何东西都可以输出正确的结果

三、掌握可执行文件的基本格式##

Linux可执行文件格式为ELF即Executable and Linkable Format。

ELF格式:

ELF header
program header table
.txt .rodata .data
Section header table

详细内容可以见4.2ELF文件格式分析。

补充

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

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

20135323符运锦----LINUX第三次实践:程序破解的更多相关文章

  1. 20135323符运锦----LINUX第二次实践:内核模块编译

    Linux实践二--模块 一.知识点总结 ①Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容都集成在一起,效率 ...

  2. 20135323符运锦----第三周:构建一个简单的Linux系统MenuOS

    相关知识点 1.arch目录 占据相当庞大的空间,X86目录下代码需要重点关注. 2.init目录 内核启动的相关代码基本都在此目录下,内含MAIN.C,文件中START_KERNEL是整个LINUX ...

  3. 20135323符运锦期中总结----Linux系统的理解及学习心得

    一.网易云课堂 1.各章节总结 第一周:计算机是如何工作的http://www.cnblogs.com/20135323fuyunjin/p/5222787.html 第二周:操作系统是如何工作的ht ...

  4. 20135323符运锦----第七周:Linux内核如何装载和启动一个可执行程序

    可执行程序的装载 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 ①编译器预处理 gcc -E -o XX.cpp XX.c (-m32)// 注:把include的文件包含进来, ...

  5. LINUX第三次实践:程序破解

    LINUX第三次实践:程序破解 标签(空格分隔): 20135328陈都 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即"空指令".执行到NOP ...

  6. linux第三次实践:ELF文件格式分析

    linux第三次实践:ELF文件格式分析 标签(空格分隔): 20135328陈都 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文 ...

  7. linux专题三之如何悄悄破解root密码(以redhat7.2x64为例)

    root用户在linux系统中拥有至高无上的权限.掌握了root密码,差不对可以对linux系统随心所欲了,当然了,root用户也不是权限最高的用户. 但是掌握了root密码,基本上够我们用了.本文将 ...

  8. Linux课程实践三:简单程序破解

    一.基本知识 1. 常用指令机器码 不同版本对应机器码不同,这里以我做实验的kali(Intel 80386)为例. 指令 作用 机器码 nop 无作用(no operation) 90 call 调 ...

  9. LINUX实践--程序破解

    实验思想 本次实验的主要思想有两个,第一个是修改跳转指令,把它变成无条件跳转使得无论输入什么用户名都跳转到失败的那个选项中去,第二个思想是修改比对的内容,即不判断条件,从而成功 实验步骤 1.首先从老 ...

随机推荐

  1. 开启远程Windows系统3389端口

    1.Win7.Win2003.XP系统REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDen ...

  2. flex布局下el-table横向滚动条失效

    如下图,是一种常见的页面结构,我们可以有很多方法实现,inline-block,float,flex等等 但是,最近项目中遇到一个怪事,左边是侧边栏导航,右边是一个数据展示table,el-table ...

  3. 转://oracle 重新编译用户无效对象

    select owner,object_name, replace(object_type,' ','') object_type,to_char(created,'yyyy-mm-dd') as c ...

  4. 分布式服务化系统一致性(分布式事务、ACID、BASE、CAP)原理与解决方案

    https://blog.csdn.net/rickiyeat/article/details/70224722

  5. CSS3之transition&transform

    参考网页: CSS3 transform 属性使用详解: http://www.renniaofei.com/code/css3-transform-shuxing-shiyong-xiangjie/ ...

  6. oracle 查询 磁盘使用率

    SELECT d.tablespace_name "Name",        TO_CHAR(NVL(a.bytes / 1024 / 1024 / 1024, 0), '99, ...

  7. attribute与parameter区别(转)

    文章转自http://blog.csdn.net/saygoodbyetoyou/article/details/9006001 request.getParameter取得Web客户端到web服务端 ...

  8. 错误:java.io.FileNotFoundException: /storage/emulated/0/Documents/eclipse-inst-win64.exe

    在Android服务的最佳实例中:https://www.cnblogs.com/hh8888-log/p/10300972.html,在最后运行的时候,点击Start Download按钮总是会报一 ...

  9. C语言程序设计II—第五周教学

    第五周教学总结(25/3-31/3) 教学内容 本周的教学内容为:第七章 数组 7.3 字符串. 课前准备 在博客园发布作业:2019春第五周作业 第四周作业讲解视频:A Programing Vid ...

  10. Image Restoration[Deep Image Prior]

    0.背景 这篇论文是2017年11月29号第一次提交到arxiv并紧接着30号就提交了V2版本的. 近些年DCNN模型在图像生成和修复上面表现很好,大部分人认为好的原因主要是由于网络基于大量的图片训练 ...