Linux实践——程序破解

一、掌握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指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。

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

  • 指令“objdump -d login”查看反汇编代码
  • 将750e改为7500
    注:为了跳过口令检查,也就是无论比较的结果如何,都正常登陆。
    jne是条件跳转,如果条件满足,则跳转;
    jne下两行可知是输出内容;
    jmp是跳转语句(没有条件,则直接跳转)
    jmp下两行也是输出内容。
    jne表示当比较不相等时,跳转。也就是说,当输入与已存口令不相等时,跳转到jmp下一行mov,如果比较结果相等,则执行jne下两行mov、call行,说明,执行mov、call行输出的为“right”。

vi打开login,输入“:%!xxd”

输入:/750e查找到那个位置,比对四周,确定位置后将其修改为7500

输入“:%!xxd -r”保存

输入“:wq”保存

运行login测试结果

 

最新文章

  1. gulp工具rename
  2. 【Java EE 学习 43】【SVN版本控制工具】【CVS版本控制工具】
  3. 测试oracle数据库的脱机备份和恢复
  4. jQuery验证插件 Validate详解
  5. nexus7 一代 手动刷4.4.4
  6. office2016各个版本 以及 解决visio搜索任何都提示无匹配项问题
  7. ps 进程查看器
  8. ios开发怎么获取输入的日期得到星期
  9. json 序列化和反序列化
  10. Linux中的段管理,bss段,data段,
  11. 向前辈致敬 strspn
  12. windows/Linux下安装maven
  13. SpringMVC-HelloWorld (XML)
  14. SpirngMVC入门第一天
  15. 一文揭秘定时任务调度框架quartz
  16. WebGL Matrix4(4*4矩阵库)
  17. RHEL7使用NAT方式上网
  18. [.net]webform 版本冲突
  19. Git的gitattributes文件详解
  20. #CSS 文本溢出部分显示省略号

热门文章

  1. ccf题库中2016年4月2日俄罗斯方块问题
  2. Django REST framework之版本,解释器,序列化
  3. Vue仿抽屉
  4. 扑克牌游戏-华为OJ-C++实现
  5. ROS 订阅图像节点(1)
  6. 虚拟机oom
  7. Maven快照机制(SNAPSHOT)
  8. 理解webpack之process.env.NODE_ENV详解(十八)
  9. Python package和module
  10. 【Topcoder 10384】KingdomMap