改写二进制文件

news2024/9/19 19:23:46

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

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.coloradmin.cn/o/2115013.html

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

相关文章

铁路订票系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;车次信息管理&#xff0c;基础数据管理&#xff0c;论坛管理&#xff0c;通知公告管理&#xff0c;用户管理&#xff0c;轮播图信息 微信端账号功能包括&#xff1a;系统首页&a…

【linux学习指南】Linux编译器 gcc和g++使用

文章目录 &#x1f4dd;前言&#x1f320; gcc如何完成&#x1f309;预处理(进行宏替换) &#x1f320;编译&#xff08;生成汇编&#xff09;&#x1f309;汇编&#xff08;生成机器可识别代码&#xff09; &#x1f320;链接&#xff08;生成可执行文件或库文件&#xff09;&…

变压器制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

变压器制造5G智能工厂工业物联数字孪生平台&#xff0c;推进制造业数字化转型。作为传统制造业的重要组成部分&#xff0c;变压器制造行业也不例外地踏上了数字化转型的快车道。而变压器制造5G智能工厂物联数字孪生平台的出现&#xff0c;更是为这一进程注入了强大的动力&#…

内卷时代无人机培训机构如何做大做强

在当今社会&#xff0c;随着科技的飞速发展&#xff0c;“内卷”一词频繁被提及&#xff0c;反映了各行业竞争日益激烈的现象。对于无人机培训行业而言&#xff0c;如何在这样的时代背景下脱颖而出&#xff0c;实现做大做强的目标&#xff0c;成为每个培训机构必须深思的问题。…

自学C语言-11

** 第3篇 高级应用 ** 第11章 结构体和共用体 迄今为止,我们在程序中用到的都是基本数据类型。但实际开发中,有时简单的变量类型无法满足程序中各种复杂的数据要求,因此C语言还提供了构造类型。构造类型数据是由基本类型数据按照一定规则组成的。 本章致力于使读者了解结…

【Nginx系列】Nginx中rewrite模块

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

《战锤40K:星际战士2》超越《黑神话》 登Steam热销榜首

《使命召唤&#xff1a;黑色行动6》将登陆 PC Game Pass看来确实影响了销量&#xff0c;因为这次在 Steam 上它的预购并没有占领 Steam 热销榜单之首。这次霸榜的则是即将推出的《战锤40K&#xff1a;星际战士2》。 根据 SteamDB 显示&#xff0c;这部将于9 月 10 日发售的游戏…

LabVIEW中Request Deallocation 功能

此功能会在包含该功能的 VI 运行之后释放未使用的内存。 该功能仅适用于高级性能优化。在某些情况下&#xff0c;释放未使用的内存可以提高性能。然而&#xff0c;过于频繁地释放内存可能导致 LabVIEW 反复重新分配空间&#xff0c;而不是重用已有的内存分配。如果您的 VI 分配…

rocky linux 9部署zabbix6

安装rocky9 阿里巴巴开源镜像站http://mirrors.aliyun.com 1、Rocky 2、初始化 防火墙 systemctl stop firewalld systemctl disable filewalld 或者 systemctl disable firewalld --now 3、selinux vi /etc/selinux/config 配置源sed -e s|^mirrorlist|#mirrorlist|g \-e s|^#…

24程序员转行,首选为什么是它?

今天文章的主人公暂且称他为 A 君。不过 A 君有点特别&#xff0c;非科班&#xff0c;工作 10 年后才转行 iOS 程序员。今年 36 岁&#xff0c;目前在某行业头部企业任职前端负责人&#xff0c;管理 40 人的前端团队。 废话不多说&#xff0c;我们开始 A 君&#xff08;为了描…

包机制,javadoc生成文档,用户交互scanner

包机制 在建包时com.kuang直接建线性一条龙的文件只会显示一个外层包&#xff0c;当再建一个包时才会显示出两个包。 import com.kuang.base 导入包的时候在后面加入星号就能把包全导进来 javadoc生成文档 public class Doc {String name;/*** * param name* return* throw…

Python可视化集大成之作 - Seaborn 介绍

我今天要介绍一款让你在数据可视化中游刃有余的利器——Seaborn包。作为Python数据可视化库中的一员&#xff0c;Seaborn不仅美观易用&#xff0c;而且功能丰富&#xff0c;是生物信息学中数据探索的好帮手。 为什么选择Seaborn&#xff1f; 1. 美观简洁 Seaborn的默认主题和颜…

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中&#xff0c;不同电脑的配置和操作系统&#xff08;如Win11与Win7&#xff09;可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行&#xff0c;需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下&a…

PMP–一、二、三模–分类–变更–技巧–敏捷变更

文章目录 技巧高频考点分析&#xff08;一、过程&#xff1b;二、人员&#xff09;一、过程&#xff1a;1.1 变更管理&#xff1a;1.1.1 瀑布型变更&#xff08;一次交付、尽量限制、确定性需求 &#xff1e;风险储备&#xff09;1.1.2 敏捷型变更&#xff08;多次交付、拥抱变…

mybatis框架基础以及自定义插件开发

文章目录 框架概览框架预览MyBatis框架的核心组件MyBatis框架的工作原理MyBatis框架的配置MyBatis框架的最佳实践 自定义插件开发1. 添加依赖2. 创建插件类3. 配置插件4. 启动类中注册插件5. 测试插件 参考文献 框架概览 MyBatis是一个优秀的持久层框架&#xff0c;它支持自定…

多个vue项目部署到nginx服务器

文章目录 需求一、项目打包1.vue.config.js2.request.js文件3.打包 二、nginx配置 需求 同一个域名安装多个vue项目。 比如&#xff1a;域名为 https://domain.com 后缀。那么通过不同的后缀就能去访问不同的项目地址。 https://domain.com&#xff0c;不加任何后缀&#x…

OBItools:Linux下的DNA条形码分析神器

在生物信息学领域&#xff0c;DNA条形码分析是一种非常常见的研究方法&#xff0c;用于物种鉴定、生态学和进化生物学研究。今天要介绍的工具就是专为此设计的——OBItools。这个工具集专门用于处理生态学和进化生物学中的DNA条形码数据&#xff0c;在Linux环境下运行。无论你是…

linux下进行lvm分区及扩容

目录 LVM存储管理介绍 lvm磁盘扩容有两种方式 创建lvm磁盘 1. 首先先加入第一块儿新的磁盘 2. 对新磁盘 /dev/sdb 进行分区 通过LVM命令创建新卷 1. 创建物理卷 2.创建卷组 并将物理卷加入其中 3. 创建逻辑卷并分配大小 4.格式化刚刚创建的硬盘 5. 挂载磁盘 扩容lvm…

《Web性能权威指南》-网络技术概览-读书笔记

注&#xff1a;TCP/IP等知识牵涉面太广&#xff0c;且不说本文&#xff0c;哪怕是原书&#xff0c;限于篇幅&#xff0c;很多知识点都是大致介绍下。如果想深入理解&#xff0c;需要更一步Google相关页面资料。 延迟与带宽 WPO&#xff0c;Web Performance Optimization&…

基于苹果Vision Pro的AI NeRF方案:MetalSplatter

随着苹果Vision Pro的发布,混合现实(Mixed Reality, MR)技术迎来了一个新的发展阶段。为了充分利用Vision Pro的潜力,一款名为MetalSplatter的Swift/Metal库应运而生,它允许开发者在Vision Pro上以全立体的方式体验捕捉内容。本文将详细介绍MetalSplatter的特点及其如何为…