• 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

    输出目标文件的所有段概括:objdump -h obj

    输出反汇编源代码结果:objdump -d obj

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

    二、程序破解实践
    1.登陆结果:

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

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

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

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

    运行,输入密码2046:

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

    运行,输入原密码2046和新密码5309:

  • 相关阅读:
    计算机网络学习目录
    手把手教你玩微信小程序跳一跳
    (三)python函数式编程
    跟托福说分手
    (二)python高级特性
    BitCoin工作原理
    反向传播的工作原理(深度学习第三章)
    1.22计划
    梯度下降——神经网络如何学习?(深度学习第二章)
    什么是神经网络 (深度学习第一章)?
  • 原文地址:https://www.cnblogs.com/lxq20135309/p/5551642.html
Copyright © 2020-2023  润新知