• Exp1 PC平台逆向破解(5)M 20154307 冯彬


    Exp1 PC平台逆向破解(5)M 20154307 冯彬#

    本次只是做了部分实验,课上学习了手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。

    首先,我们先了解本次任务需要用到的代码###

    1.反汇编,将汇编语言转换成机器语言

      `objdump -d 文件名 | more`
    

    2.vi命令,进入文件编辑界面

       vi 文件名
    

    3.vi命令状态下的进制转换

    ①将当前文本转化为16进制格式

       :%!xxd
    

    ②将当前文本转化回文本格式

       :%!xxd -r
    

    4.vi状态下的查找

       /查找的内容
    

    5.vi状态下的存盘退出

       :wq
    

    ok,了解这些以后,就可以开始了。首先我们用这个函数objdump -d 20154307 | more查看该文件的机器语言。

    如上图所示,主函数调用foo,查阅可知e8 d7 ff ff ff就是调用foo的指令

    我们想让它调用getShell

    如上图,可知foo和getshell的地址,然后通过计算偏移量,可得出将e8 d7 ff ff ff改为e8 c3 ff ff ff

    进入该文件的vi编辑模式

    按住esc,输入:%!xxd指令,查看其十六进制格式,再按住esc,输入/e8 d7,找到foo指令位置,修改为c3,即为getshell对应的指令

    修改后

    然后,用 :%!xxd -r转回原格式,存盘退出

    再用反汇编看其指令,如下图

    看,已经修改完了。

    那么,如此一来,实验1的修改指令部分就已经完成了。

    实验问题###

    部分同学补码可能已经忘记,在计算偏移量的时候可能会有些疑惑,需要课后复习之前学过的有关计算机组成原理等的知识。

  • 相关阅读:
    html5中新增的form表单属性
    FORM
    .Net Core 发布失败
    Sql Server查询最近执行sql
    HttpWebRequest.GetResponse()操作超时
    使用SqlBulkCopy批量插入/更新数据
    ADO .NET 往数据库批量插入数据发生错误:超时时间已到,但是尚未从池中获取链接
    Ueditor代码内容前台只显示一行
    Lambda表达式
    委托的简单使用
  • 原文地址:https://www.cnblogs.com/gnlm/p/8524762.html
Copyright © 2020-2023  润新知