使用汇编程序恢复C库、动态链接器

文章目录

  • 写在前面
  • 背景
  • 原理
    • 动态链接器
    • C库
  • 汇编代码
  • 示例
    • 删除C库
    • 删除动态链接器

写在前面

上层语言的好处就是方便,但无法触摸规则的底层,所有的规则都是别人制定的
学习底层原理不仅可以让我们对高级语言的规则有更深的理解,而且可以从自己的角度去探寻新的道路

背景

有些时候我们可能想替换环境上的c库,但是如果不慎直接把原有的c库给mv掉了,或者替换的c库不能用,这时候就傻眼了,可执行文件全部不可用,怎么恢复环境呢?
就目前来说,我没有看到其他文章有给出对于动态链接器和C库损坏的的解决方案
另一种方案请参考我的另一篇文章:基于剪贴板的文件传输方案

原理

动态链接器

在这里插入图片描述
上图是aarch64平台的动态链接器,x86平台的叫/usr/lib64/ld-xx.so
这个库被破坏会导致所有依赖动态库的可执行文件均不可用

C库

在这里插入图片描述
这个库被破坏了啥玩意都够够呛能用了,怎么说呢,,,那可是C库啊,


汇编代码

.datasrcfile:.string "/usr/lib/aarch64-linux-gnu/libc.so.6_bak"dstfile:.string "/usr/lib/aarch64-linux-gnu/libc.so.6"
.text.global  _start
_start:ldr     x0,     =srcfileldr     x2,     =dstfilemov     x8,     36          // the call number of symlinksvc #0mov     x8,     93svc #0

一段很简单的汇编代码,使用symlinkat系统调用从备份的文件建立了一个软链接,不了解汇编的话可以参考这两篇文章
x86平台AT&T语法:AT&T汇编入门[0] hello world
ARM64平台:ARM64汇编[0] hello world


x86平台上有symlink可以使用,aarch64平台上需要使用多一个参数的symlinkat ↓
在这里插入图片描述

示例

删除C库

在这里插入图片描述
可以看到删完C库之后ls立即不可用了,在左边运行实现编译好的汇编程序,从备份文件建立一个软链接,环境恢复正常

删除动态链接器

在这里插入图片描述
可以看到删完动态链接器之后ls又不可用了,在左边运行实现编译好的汇编程序,从备份文件建立一个软链接,环境恢复正常

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

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

相关文章

HiveSQL——连续增长问题

注:参考文章: SQL连续增长问题--HQL面试题35_sql判断一个列是否连续增长-CSDN博客文章浏览阅读2.6k次,点赞6次,收藏30次。目录0 需求分析1 数据准备3 小结0 需求分析假设我们有一张订单表shop_order shop_id,order_id,order_time…

springboot集成elk实现日志采集可视化

一、安装ELK 安装ELK组件请参考我这篇博客:windows下安装ELK(踩坑记录)_windows上安装elk教程-CSDN博客 这里不再重复赘述。 二、编写logstash配置 ELK组件均安装好并成功启动,进入到logstash组件下的config文件夹,创建logstash.conf配置…

性能分析5部曲:瓶颈分析与问题定位,如何快速解决瓶颈?

一、引言 很多做性能测试的同学都问过我这样一个问题:鱼哥(Carl_奕然),你说性能测试的重点是什么? 我的回答很简单:瓶颈分析与问题定位。 在性能项目的整个周期,不管是脚本设计,脚本编写还是脚本执行,都…

创新设计与技术突破:嵌入式系统在人工智能和机器学习领域的应用前景

嵌入式系统在人工智能和机器学习领域的应用前景非常广阔,创新设计和技术突破将进一步推动这些领域的发展。以下是嵌入式系统在人工智能和机器学习领域的应用前景: 1.实时数据处理 嵌入式系统具有小型化、低功耗和高效率等特点,非常适合用于实…

在cloudcompare中,已知三维坐标可视化坐标点

主要思路是:已知坐标,通过在坐标生成圆球来可视化坐标点。主要操作步骤如下 1.在cloudcompare中找到“创建基础模型” 2.创建球体 输入坐标和球体半径,x,y,z中输入已知坐标,这里以(0,0,0&…

小游戏和GUI编程(6) | 基于 SFML 的井字棋

小游戏和GUI编程(6) | 基于 SFML 的井字棋 0. 简介 使用 SFML 实现井字棋(tic-tac-toe), 规划如下: 了解规则, 使用命令行实现(已经实现了)使用 SFML,提供极简的交互(预计 1 小时)制作 SVG 图像, 美化界面(预计 1 小时) 1. 基于命令行的实…

MySQL安装问题:由于找不到MSVCP120.dll,无法继续执行代码.重新安装程序可能会解决此问题。

出现的问题: 解决:由于没有安装微软常用运行库合集64位导致的问题 下载vcredist_x64 https://www.microsoft.com/zh-CN/download/details.aspx?id40784 下载完成后,点击运行解决问题。

洛谷问题买礼物和Building Roads S题解

目录 1.买礼物 2.Building Roads S 1.买礼物 P1194 买礼物 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 又到了一年一度的明明生日了,明明想要买 B 样东西,巧的是,这 B 样东西价格都是 A 元。 但是,商店老板说最…

HTTP 响应状态代码

HTTP 响应状态代码 HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。 响应分为五类: 信息性回复 ( 100 – 199​)成功响应 ( 200 – 299​)重定向消息 ( 300 – 399​)客户端错误响应 ( 400 – 499​)服务器错误…

《VulnHub》GoldenEye:1

title: 《VulnHub》GoldenEye:1 date: 2024-02-16 14:53:49 updated: 2024-02-16 15:08:49 categories: WriteUp:Cyber-Range excerpt: 主机发现、目标信息扫描、源码 js 文件泄露敏感信息、hydra 爆破邮件服务(pop3)、邮件泄露敏…

撑住!再好的命,也有坎坷的时候

再好的命,其实都有为难的时候,都有经历磨难的时候。要想真正强大起来,都要度过一段没人帮忙,所有事情都是自己一个人撑,所有情绪和思想,都只有自己知道的日子。但只要咬牙撑过去,一切就都不一样…

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

首先说明一点,finally{ }里面的code一定会执行 ,至于是在return前执行还是在return后执行(个人认为是{}代码执行完之后并且在return执行之前),具体需要分情况: 1.若try{}中没有异常,则try{}中语…

中科星图GVE——矢量之间的交集,并集和差集等关系

简介 矢量是数学中的一个重要概念,它可以分为有序矢量和无序矢量。在数学中,我们经常需要对矢量之间的关系进行分析,包括求交集、并集和差集等运算。下面将对这些概念进行具体解释。 1. 交集: 矢量的交集是指两个矢量中共同存在的元素所构成的集合。假设有两个矢量A和B,…

【JAVA-Day86】守护线程

守护线程 守护线程摘要引言1. 了解守护线程:它是什么?👻特点和用途示例代码 2. 为何我们需要守护线程?👻辅助性任务处理不阻止程序的正常运行重要的清理工作示例代码📚 3. 如何创建和管理守护线程&#xff…

使用Taro开发鸿蒙原生应用——快速上手,鸿蒙应用开发指南

导读 本指南为开发者提供了使用 Taro 框架开发鸿蒙原生应用的快速入门方法。Taro,作为一个多端统一开发框架,让开发者能够使用一套代码同时适配多个平台,包括鸿蒙系统。文章将详细介绍如何配置开发环境,以及如何利用 Taro 的特性…

真假难辨 - Sora(OpenAI)/世界模拟器的技术报告

目录 引言技术报告汉译版英文原版 引言 Sora是OpenAI在2024年2月15日发布的世界模拟器,功能是通过文本可以生成一分钟的高保真视频。由于较高的视频质量,引起了巨大关注。下面是三个示例,在示例之后给出了其技术报告: tokyo-wal…

树形dp 笔记

树的最长路径 给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值。 现在请你找到树中的一条最长路径。 换句话说,要找到一条路径,使得使得路径两端的点的距离最远。 注意&…

Java泛型编译期擦除,为什么反射还能拿到泛型信息?

首先放上运行期反射获取Java泛型类型的相关信息的代码&#xff1a; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type;public class Test2 {public static void main(String[] args) {Example<String> example new Example<String>() …

Base64编码的优点与缺点

title: Base64编码的优点与缺点 date: 2024/2/16 14:06:37 updated: 2024/2/16 14:06:37 tags: Base64编码ASCII转换数据传输文本存储安全性数据膨胀字符串解码 Base64编码是一种将二进制数据转换为可打印ASCII字符的编码方式。它被广泛应用于数据传输和存储&#xff0c;以提升…

Pytest测试技巧之Fixture:模块化管理测试数据

在 Pytest 测试中&#xff0c;有效管理测试数据是提高测试质量和可维护性的关键。本文将深入探讨 Pytest 中的 Fixture&#xff0c;特别是如何利用 Fixture 实现测试数据的模块化管理&#xff0c;以提高测试用例的清晰度和可复用性。 什么是Fixture&#xff1f; 在 Pytest 中&a…