改写二进制文件

以下是一些常见的方法和工具:

1. 使用十六进制编辑器

十六进制编辑器 是最直接的工具之一,用于查看和编辑二进制文件中的数据。它允许你以十六进制格式查看和修改文件内容。

  • 常见十六进制编辑器
    • HxD(Windows)
    • Hex Fiend(macOS)
    • GHex(Linux)
    • Bless(Linux)

步骤

  1. 打开十六进制编辑器。
  2. 加载你要修改的二进制文件。
  3. 以十六进制或 ASCII 格式查看文件内容。
  4. 修改需要更改的字节。
  5. 保存文件。

2. 使用 xxd 命令(Linux)

xxd 是一个在 Linux 上将二进制文件转换为十六进制格式的工具,也可以用来将十六进制数据转换回二进制格式。

示例

  1. 查看二进制文件的十六进制表示:
    xxd filename.bin 
  2. 将修改后的十六进制数据转换回二进制:
    xxd -r -p hexfile.txt filename.bin 
    其中 hexfile.txt 是包含十六进制数据的文件。
    xxd -p hexfile.txt.bin > hexfile.txt

示例

#include <stdio.h>int main() {char p[] = "hello world";puts(p);return 0;
}
cc test.c -o a.out
xxd -p test.c > test.txt

 修改 "he" 为 "HE" 即 "6865" 为 "4845"

05faf32c0c2743688b42bfd6ad12056b.png

然后

xxd -r -p test.txt > ./a.out
#执行./aout
./a.out

 065899ff60ac4eb3938ea8c0a871ff39.png

3. 使用 dd 命令(Linux)

dd 是一个强大的命令行工具,用于低级别的文件操作,可以用来读取和写入二进制数据。

示例

  1. 从文件中提取部分数据:

    dd if=filename.bin of=part.bin bs=1 skip=10 count=5 

    其中 skip=10 是跳过前10个字节,count=5 是读取5个字节。

  2. 将数据写入到文件中:

    dd if=part.bin of=filename.bin bs=1 seek=10 conv=notrunc 

    其中 seek=10 是从第10个字节开始写入,conv=notrunc 确保不会截断目标文件。

4. 使用编程语言

如果你需要更复杂的操作,可以使用编程语言(如 Python、C++)来修改二进制文件。

Python 示例

with open('filename.bin', 'r+b') as f:f.seek(10) # 跳到第10个字节f.write(b'\xFF') # 写入一个字节的值 

C++ 示例

#include <fstream>int main() {std::fstream file("filename.bin", std::ios::in | std::ios::out | std::ios::binary);if (file.is_open()) {file.seekp(10);  // 跳到第10个字节file.put(0xFF);  // 写入一个字节的值file.close();}return 0;
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LabVIEW学习篇 - 16】:文件操作

文章目录 CSV文件CSV写入CSV读取 TXT文件txt写入txt读取 INI文件INI文件写入INI文件读取 CSV文件 .csv (Comma-Separated Values&#xff09;是逗号分隔值文件格式&#xff0c;有时也称之为字符分隔值&#xff0c;因为分隔符也可以不是逗号(最常见的是逗号和制表符)&#xff0…

(一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别

🍂1、不说废话,现象展示 🍃图片识别 🍃视频识别 自己训练样本 十分简易快速 opencv级联ha

小皮面板webman ai项目本地启动教程

1.前置条件 下载小皮面板 下载后&#xff0c;双击安装&#xff0c;一路next&#xff08;下一步&#xff09;&#xff0c;无需更改配置。 2.安装必须软件 在小皮面板的软件管理页&#xff0c;安装编号①②③④下面四个软件。 3.启动本地服务 进入到小皮面板的首页&#x…

空指针异常 (NullPointerException)怎么办

在 Java 编程中&#xff0c;空指针异常&#xff08;NullPointerException&#xff0c;简称 NPE&#xff09;是最常见且困扰开发人员的异常之一。尽管 Java 是一种强类型语言&#xff0c;设计上提供了类型安全的特性&#xff0c;但空指针问题依然是开发过程中最常见的运行时异常…

MES系统如何支持企业进行数字化转型

MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;在企业数字化转型中扮演着至关重要的角色&#xff0c;它通过提供实时的生产数据、优化生产流程、提升质量管理水平、实现设备智能化管理以及促进企业内部协同和沟通等多种方式&#xff…

Linux_kernel移植linux09

一、温故知新 1、分析uboot源码目录 每个目录基本上都会有自己的Makefile进行当前层级目录的编译&#xff0c;最后在整个uboot源码目录中会有一个Makefile文件进行整合&#xff0c;将每一层级编译出的目标文件&#xff0c;整合到一起&#xff0c;链接到一起&#xff0c;最终生成…

vscode从本地安装插件

1. 打开VSCode。 2. 点击左侧菜单中的“扩展”&#xff08;或按CtrlShiftX&#xff09;。 3. 点击“更多操作”&#xff08;三个点&#xff09;> “从VSIX安装”。 4. 选择下载的.vsix文件。 5. 点击“安装”即可安装插件。

传统CV算法——基于Opencv的图像绘制

直线绘制 参数解析&#xff1a; &#xff08;图像矩阵&#xff0c;直线起始坐标&#xff0c; 直线终止坐标、颜色、线条厚度&#xff09; cv2.line()是OpenCV中用于绘制直线的函数。 参数说明&#xff1a;img&#xff1a;要绘制直线的图像矩阵。(100,30)&#xff1a;直线的起…

视频提取字幕的软件有哪些?高效转录用这些

探索视频的奥秘&#xff0c;从字幕开始&#xff01;你是否曾被繁复的字幕处理困扰&#xff0c;渴望有一款简单好用的在线免费软件来轻松解锁字幕提取&#xff1f; 告别手动输入的烦恼&#xff0c;我们为你精选了6款视频字幕提取在线免费软件&#xff0c;它们不仅能一键转录&am…

堆-数组的堆化+优先队列(PriorityQueue)的使用

一、堆 1、什么是堆&#xff1f; 以完全二叉树的形式将元素存储到对应的数组位置上所形成的新数组 2、为什么要将数组变成堆&#xff1f; 当数组中的元素连续多次进行排序时会消耗大量的时间&#xff0c;将数组变成堆后通过堆排序的方式将会消耗更少的时间 二、接口 给堆…

这才是程序猿梦想的终端,赶快动手搞起来

文章目录 目标资源列表安装iTerm2安装oh-my-zsh安装颜色主题查找配置文件将配置内容复制到本地设置iTerm2 安装NERD FONTS下载字体安装设置iTerm2 安装PowerLevel10k修改.zshrc重新加载配置 安装插件下载[语法高亮](#syntaxhighlighting)下载[命令提示](#autosuggestions)配置插…

数据结构与算法02 - 复杂度

1、空间复杂度 空间复杂度指的是临时占用存储空间大小的量度&#xff1b;空间复杂度计算的是变量的个数&#xff0c;也采用大O渐进表示法&#xff1b;由于函数在运行的时候所需要的栈空间&#xff08;存储参数、局部变量、一些寄存器信息等&#xff09;在编译器已经确定好了&a…

Kafka【十二】消费者拉取主题分区的分配策略

【1】消费者组、leader和follower 消费者想要拉取主题分区的数据&#xff0c;首先必须要加入到一个组中。 但是一个组中有多个消费者的话&#xff0c;那么每一个消费者该如何消费呢&#xff0c;是不是像图中一样的消费策略呢&#xff1f;如果是的话&#xff0c;那假设消费者组…

MySQL 锁分类有哪些?一文带你详解!!

MySQL 锁 全局锁全局锁的应用场景全局锁的缺点 表级锁表锁元数据&#xff08;MDL&#xff09;锁MDL 锁的问题 意向锁AUTO-INC 锁 行级锁记录锁&#xff08;Record Lock&#xff09;间隙锁&#xff08;Gap Lock&#xff09;临键锁&#xff08;Next-Key Lock&#xff09;插入意向…

Opencv中的直方图(2)计算图像的直方图函数calcHist()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算一组数组的直方图。 函数 cv::calcHist 计算一个或多个数组的直方图。用于递增直方图bin的元组的元素是从相同位置的相应输入数组中获取的。…

Cursor是什么?Cursor Pro Plus 如何订阅升级教程

一、Cursor是什么&#xff1f; Cursor 是一个基于 Visual Studio Code&#xff08;VS Code&#xff09;技术构建的高级代码编辑器&#xff0c;专为提高编程效率并更深度地整合 AI 功能而设计。它不仅继承了 VS Code 的强大功能和用户界面&#xff0c;还增加了专门针对 AI 支持…

Agent(智能体)和 MetaGPT,一句话实现整个需求应用代码

前面 2 篇文章&#xff0c;我们使用文生文、文生图和文生音频三个大模型共同实现了图文并茂的儿童绘本故事和绘本故事音频需求&#xff1a; 第一篇 根据主题生成儿童绘本故事&#xff1a;GLM-4-Flash 大模型 API 免费了&#xff0c;手把手构建“儿童绘本”应用实战&#xff08…

Nuxt3入门:过渡效果(第5节)

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 Nuxt 利用 Vue 的 <Transition> 组件在页面和布局之间应用过渡效果。 一、页面过渡效果 你可以启用页面过渡效果&#xff0c;以便对所有页面应用自动过渡效果。 nuxt.config.js export defaul…

概率DP (由一道绿题引起的若干问题。目前为一些老题,蒟蒻的尝试学习1.0)

概率DP&#xff1a; 利用动态规划去解决 概率 期望 的题目。 概率DP 求概率&#xff08;采用顺推&#xff09; 从 初始状态推向结果&#xff0c;同一般的DP类似&#xff0c;只是经历了概率论知识的包装。 老题&#xff1a; 添加链接描述 题意&#xff1a; 袋子里有w只白鼠&am…

linux编译器——gcc/g++

1.gcc linux上先要安装&#xff0c; sudo yum install gcc gcc --version 可以查看当前的版本 &#xff0c;我们默认安装的是4.8.5的版本&#xff0c;比较低&#xff0c; gcc test.c -stdc99 可以使他支持更高版本的c标准 -o 可以殖指明生成文件的名字&#xff0c;可以自己…