Linux及安全实践三——程序破解

Linux及安全实践三——程序破解
一、基本知识

  1. 常用指令机器码
    指令 作用 机器码
    nop 无作用(no operation) 90
    call 调用子程序,子程序以ret结尾 e8
    ret 返回程序 c3
    cmp 比较 c3
    jmp 无条件跳转 eb
    je/jz 若相等则跳转 74/84
    jne/jnz 不相等则跳转 75/85
    mov 传值 89
    movl 长字传值 c7
    2.修改工具
    (1)反汇编:objdump
    输出目标文件的符号表:objdump -t obj
    745283-20160602011121430-150790443.png

输出目标文件的所有段概括:objdump -h obj
745283-20160602011140617-1428954165.png

输出反汇编源代码结果:objdump -d obj
745283-20160602011153555-43486462.png

(2)十六进制编程器
查看文件的十六进制编码(输出规范的十六进制和ASCII码):hexdump -C obj
745283-20160602011203289-1514307148.png

二、程序破解实践
1.登陆结果:
745283-20160602011213508-359608475.png

  1. 使用反汇编查看login程序:objdump -d login
    找到main函数部分,可以看到:
    745283-20160602011222571-589434376.png

密码:07feH(即十进制2046)

  1. 修改程序:用编辑器打开,使用命令:%!xxd转换显示十六进制,进行修改,使用命令:%!xxd -r还原显示,保存退出
    (1)实现任何输入都成功登录
    找到比较750e处:
    745283-20160602011314196-1363440503.png

将e更改为0,不判断条件而是直接执行下面登录成功的代码,任意输入密码验证:
745283-20160602011325227-2058369532.png

(2)实现任何输入都无法成功登陆
找到比较750e处,将75更改为eb,将条件跳转更改为无条件跳转,直接执行登陆失败的代码:
745283-20160602011335227-377975473.png

运行,输入密码2046:
745283-20160602011348633-1559413571.png

(3)实现密码更改
找到密码07fe处,将07fe更改为14bd(即十进制的5309),注意使用大端法写入:
745283-20160602011359289-193645357.png

运行,输入原密码2046和新密码5309:
745283-20160602011411399-637035295.png

转载于:https://www.cnblogs.com/lxq20135309/p/5551642.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值