linux 可执行文件反编译,如何反汇编,修改,然后重新组装一个Linux可执行文件?...

2023-10-27

我不认为有任何可靠的方法来做到这一点。 机器码格式非常复杂,比assembly文件更复杂。 编译的二进制文件(比如ELF格式文件)并不是真的有可能产生一个源代码汇编程序,它将编译成相同的(或类似的)二进制文件。 为了理解差异,将GCC编译直接输出到汇编器( gcc -S )的输出与objdump在可执行文件( objdump -D )上的输出进行比较。

我可以想到两个主要的并发症。 首先,由于指针偏移等原因,机器码本身并不是与汇编代码一一对应的。

例如,考虑C代码到Hello世界:

int main() { printf("Hello, world!\n"); return 0; }

这编译为x86汇编代码:

.LC0: .string "hello" .text movl $.LC0, %eax movl %eax, (%esp) call printf

其中.LCO是一个命名常量,printf是共享库符号表中的一个符号。 比较objdump的输出:

80483cd: b8 b0 84 04 08 mov $0x80484b0,%eax 80483d2: 89 04 24 mov %eax,(%esp) 80483d5: e8 1a ff ff ff call 80482f4

首先,常量.LC0现在只是内存中的某个随机偏移量 – 在正确的位置创build一个包含这个常量的汇编源文件是很困难的,因为汇编器和链接器可以自由select这些常量的位置。

其次,我不完全确定(这取决于位置独立的代码),但我相信对printf的引用实际上并没有在那里的代码中的指针地址编码,但ELF头包含一个查找表,它在运行时dynamic地replace它的地址。 因此,反汇编代码并不完全对应源代

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 可执行文件反编译,如何反汇编,修改,然后重新组装一个Linux可执行文件?... 的相关文章

  • Apache mod_wsgi模块简介

    Apache HTTP服务器的mod wsgi扩展模块 实现了Python WSGI标准 可以支持任何兼容Python WSGI标准的Python应用 出于安全的考虑 建议使用mod wsgi 3 5及以后的版本 最新版本是2017年1月发
  • [C/C++]内存管理,对内存进行操作

    目录 一 内存结构 二 内存拷贝函数 三 栈空间与堆空间 四 变量的四种存储类型 五 函数返回值使用指针 六 常见错误总结 个人主页 北 海 CSDN新晋作者 欢迎 点赞 评论 收藏 收录专栏 C C 希望作者的文章能对你有所帮助 有不足的
  • Python写2048小游戏全部代码及所用图片

    鉴于有很多朋友要图片 把整个项目上传了 自行去取吧 资源地址 https download csdn net download qq 44651842 20009590 游戏效果 游戏用到的图片 数字图片都是90像素的正方形 游戏代码 20
  • python外星人入侵添加音效_Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践 基础课程终于看完了 现在跟着做三个小项目 第一个是外星人入侵的小游戏 一 Pygame pygame 是一组功能强大而有趣的模块 可用于管理图形 动画乃至声音 让你轻松的开发出想要的游戏 二 安装Pyga
  • sqlite的事务和锁,很透彻的讲解 【转】

    原文 sqlite的事务和锁 http 3y uu456 com bp 877d38906bec097sf46se240 1 html 事务 事务定义了一组SQL命令的边界 这组命令或者作为一个整体被全部执行 或者都不执行 事务的典型实例是
  • 概念题3

    SaaS的意思是软件服务化 Software as a Service Windows上的共享文件传输使用哪个端口137 138 139 445 我国PCM数字设备间的传输接口码型是HDB3 调制解调的目的是 MVC全名是Model Vie
  • 基于SSM的在线考试系统

    全网粉丝20W csdn特邀作者 博客专家 CSDN新星计划导师 java领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java技术领域和毕业项目实战 文末获取项目下载方式 一 项目背景介绍 在线考试借助于
  • 全网最详细,Fiddler抓包实战 - 网页浏览器https请求(超详细)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • Qt-D指针和Q指针及使用

    阅读Qt的源代码的时候 我们经常看Q D Q Q Q DECLARE PRIVATE Q DECLARE PUBLIC这几个宏 这几个宏是干什么用的呢 其实这几个宏就是实现D指针和Q指针的宏 D指针在Qt的源码中大量使用 根本目的在于解决二
  • Cocoapods方式导入OC库和swift库

    Cocoapods 是 iOS 应用的包管理程序 它简化了第三方库的导入并且将帮你处理库之间的依赖 在这个教程中 我们将会使用 cocoa pods 导入 Alamofire swift库 和AFNetworking OC库 这两个个第三方
  • Spring Cache详解

    第一节 Spring Cache介绍 1 Spring Cache 简介 从3 1开始 Spring引入了对Cache的支持 其使用方法和原理都类似于Spring对事务管理的支持 Spring Cache是作用在方法上的 其核心思想是这样的
  • 机器学习 加利福尼亚房价预测

    学习目标 提示 导入包 例如 import pandas as pd import numpy as np from sklearn datasets import fetch california housing from sklearn
  • 【web开发】6、Django(1)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 Django是什么 二 使用步骤 1 安装Django 2 创建项目 3 创建app 4 快速上手 数据库操作 1 安装第三方模块 2 自己创建数据库 3 DJ
  • Linux问题—主机与虚拟机相互通信及虚拟机访问外网

    相互通信指的是 主机 host 和虚拟主机 Vhost 能相互访问 宿主机及同一个局域网中的其他计算机能够访问到虚拟机 虚拟机也能访问到网络中的其它机器 当然包括宿主机 在我们接触的应用中 最常见的应该是互传文件了 比如 校内ftp 几秒钟
  • 利用Python查询IP地址

    听说最近抖音快手都可以看IP地址了 肯定还有很多同学不知道怎么查询吧 一文讲清楚 从http freeapi ipip net和http ip api com json 这两个网站提供的免费调用接口查询IP地址归属地 接口调用方法是在url
  • 实战干货!用 Python 爬取股票实时数据!

    今天我们一起来学习一个 Python 爬虫实战案例 我们的目标网站就是东方财富网 废话不多说 开搞 网站分析 东方财富网地址如下 http quote eastmoney com center gridlist html hs a boar
  • openGL之API学习(三十八)投影变换公式

    原文在https blog csdn net gggg ggg article details 45969499 这里只记录几个重要结论 1 正交投影变换 1 1一般形式 1 2常用形式 2 透视投影 2 1一般形式 2 2常用形式 经过投
  • Git修改代码并提交上传

    1 创建本地git 仓库 在本地磁盘创建一个文件夹 用来存放需要push到coding上的文件 打开此文件夹 单击右键 git bash here 输入 git init 此步操作完成后 会在此文件夹下生成一个隐藏的 git后缀文件 2 添
  • 路由器学习总结

    路由器在网络中的作用至关重要 就好像我们坐公交车到某个地方 公交车肯定不是一站直达的 中间要经过许多个公交站点 网络中数据的传输也是一样 源地址与目标地址之间并不是直接到达的 中间也要经过一系列的路由器转发 所以路由器的作用 就是用来转发数

随机推荐

  • 毕业设计-基于卷积神经网络的遥感图像语义分割方法

    目录 前言 课题背景和意义 实现技术思路 一 相关技术理论 二 基于残差融合和多尺度上下文信息的遥感图像语义分割方法 三 基于注意力机制和边缘检测的遥感图像语义分割方法 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着
  • 计算机网络第五篇【网络层之二】

    tags 计算机网络 title 计算机网络第五篇 网络层之二 IP数据包的首部格式 一个 IP 数据报由首部和数据两部分组成 首部的前一部分是固定长度 共 20 字节 是所有 IP 数据报必须具有的 版本 占 4 位 指 IP 协议的版本
  • 认知:大数据-Big Data

    大数据 Big Data 作者 WenasWei 一 大数据 大数据 Big Data 也称为海量数据 Massivee 是随着计算机技术及互联网技术的高速发展而产生的数据现象 2013年也称为大数据元年 标志着全球正式步入了大数据时代 大
  • kali工具-信息收集之存活主机识别(arping)

    一 介绍 ARP协议是 Address Resolution Protocol 地址解析协议 的缩写 在同一以太网中 通过地址解析协议 源主机可以通过目的主机的IP地址获得目的主机的MAC地址 arping程序就是完成上述过程的程序 arp
  • Hudi学习1:概述

    Hudi 概念 Hudi跟hive很像 不存储数据 只是管理hdfs数据 1 小文件处理 2 增加支持update delete等操作 3 实时数据写入 以下是官方点介绍 Apache Hudi 是一个支持插入 更新 删除的增量数据湖处理框
  • 求枚举变量长度‘’ sizeof_sizeof你真的弄明白了吗?

    sizeof基础 在C语言中 sizeof是一个操作符 operator 而不是函数 其用于判断数据类型或者表达式长度 所占的内存字节数 其有两种表达形式 1 sizeof 类型说明符 2 sizeof 表达式 我们通常使用第 1 种形式
  • redis持久化之AOF(Append Only File)及其总结

    1 是什么 以日志的形式来记录每个写操作 将redis执行过的所有写指令记录下来 读操作不记录 只许追加文件但不可以改写文件 redis启动之初会读取该文件重新构建数据 换言之 redis重启的话就根据日志文件的内容将写指令从前到后执行一次
  • windows10上的MySQL8.0 安装、配置、启动及登录

    MySQL8 0安装 1 首先下载MySQL8 0社区版 Community 安装程序 下载地址 https dev mysql com downloas windows installer 8 0 html 2 下载后打开安装程序按提示操
  • 大语言模型之一 Attention is all you need ---Transformer

    大语言模型已经在很多领域大显身手 其应用包括只能写作 音乐创作 知识问答 聊天 客服 广告文案 论文 新闻 小说创作 润色 会议 文章摘要等等领域 在商业上模型即产品 服务即产品 插件即产品 任何形态的用户可触及的都可以是产品 商业付费一般
  • jstat -gc pid 查询jvm 状态

    top命令查看相关应用的pid jstat gc 24272 参数说明 S0C 第一个幸存区的大小 S1C 第二个幸存区的大小 S0U 第一个幸存区的使用大小 S1U 第二个幸存区的使用大小 EC 伊甸园区的大小 EU 伊甸园区的使用大小
  • Linux 没有鼠标解决复制粘贴问题

    1 复制粘贴命令 在一行的任何位置按下yy y是yanked拷贝的意思 然后去想粘贴的位置按下p即可 p是粘贴的意思 2 如果想复制3行的话 按下3yy 就复制3行 如果想复制多行的话 直接按数字可以选中多好 然后粘贴 3 剪切和粘贴 把光
  • 【C语言技巧】51单片机打印 printf 格式化字符不正确解决办法

    原文来自keil软件 help 一栏 如下图 printf include
  • Windows防火墙配置脚本讲解

    一 natsh命令 Netsh 是命令行脚本实用工具 它允许从本地或远程显示或修改当前正在运行的计算机的网络配置 Netsh 还提供了一个脚本功能 对于指定计算机 可以通过此功能以批处理模式运行一组命令 为了存档或配置其他服务器 Netsh
  • 爬虫写得好,‘劳烦’吃得饱

    前言 提起 爬虫 总有一丝神秘色彩 大家都调侃 爬虫写得好 劳烦 吃得饱 虽然是 高危职业 但在大数据横行的年代 爬虫与反爬虫的需求却在猛烈增加 他们的关系就像矛与盾 越来越多的公司造 矛 发起攻势 获取数据 又或者在造 盾 封锁信息 这种
  • echarts设置tooltip的宽高问题

    ECharts容器 1 ECharts容器设置宽度width 值可以是百分比或者是像素 当设置为百分比时 要检查父元素是否设置了宽度 注意 容器宽度设置不要用min width 不然会发现tooltip的宽度等于min width设置的宽度
  • flutter 微信支付 跳转小程序 分享到小程序

    flutter 微信支付 跳转小程序 分享到小程序 直接上步骤 第一步 pubspec yaml 添加依赖 fluwx 1 2 1 1 fluwx最新3 0不太好用 第二步 界面添加 import package fluwx fluwx d
  • MMDetection3D/3D目标检测中的边界框和坐标系介绍(含相关函数以及坐标变换的介绍)

    1 准备知识 参考 带你玩转 3D 检测和分割 二 核心组件分析之坐标系和 Box 知乎 1 1 坐标系介绍 激光雷达坐标系通常定义如下左图所示 其中指向前方 指向左方 指向上方 相机坐标系通常定义如上右图所示 其中指向右方 指向下方 指向
  • Logisim状态机的搭建

    有限状态机概述 有限状态机 Finite State Machine FSM 是表示有限个状态以及这些状态之间的转移和动作 输入 之间关系的离散模型 有限状态机是组合逻辑和寄存器逻辑的特殊组合 组合逻辑部分包括次态逻辑和输出逻辑 分别用于状
  • Bugku:Simple_SSTI_1

    很简单的模板注入 直接F12查看提示 flag在secret key下 bugku才是对萌新最友好的平台
  • linux 可执行文件反编译,如何反汇编,修改,然后重新组装一个Linux可执行文件?...

    我不认为有任何可靠的方法来做到这一点 机器码格式非常复杂 比assembly文件更复杂 编译的二进制文件 比如ELF格式文件 并不是真的有可能产生一个源代码汇编程序 它将编译成相同的 或类似的 二进制文件 为了理解差异 将GCC编译直接输出