从命令行模拟执行二进制文件?

2024-02-24

有没有办法从命令行在 Simics 模拟下执行简单的 Linux 二进制文件?

就像是

simics -some-flags ./a.out

Simics 现在没有开箱即用的应用程序模式(或系统调用模式)。

根据需要,可以将有效负载编译为 ELF 文件,而无需使用标准库_start作为入口点,也许还有链接器脚本来设置自定义布局。这可以作为一种bare-metal模式 - Simics 有load-binary将 ELF 文件放入物理内存并返回其起始地址的命令 - 只需设置%rip = <start-address>并开始模拟。整个脚本可能如下所示:

$start = (load-binary $elf_file)
%rip = $start
%rsp = 0x40001000
bp.hap.run-until name = X86_HLT_Instr

假设应用程序有hlt其末尾的指令_start. If hlt是不可取的,那么 Simics 有所谓的魔法指令- 请包括simics-6.0.xx\src\include\simics\magic-instruction.h从您的 Simics 安装中,然后使用MAGIC_BREAKPOINT你的源代码中的宏。然后在上面的脚本中而不是run-until use enable-magic-breakpoint- Simics 会在任何击中时停止魔法指令在模拟过程中。

您可以设置$elf_file在同一脚本中或在 Simics 在命令行中调用期间手动到应用程序路径,如下所示:

./simics -e \$elf_file=$HOME/my-new-project/a.out ...

作为一种解决方法,可以使用 CRT 替换(即提供自定义标准库)。例如,支持printf和朋友们,Simics 有简单的 TTY 控制台模型,它接受字节写入地址空间中的特定(可定制)位置,这样putchar可以重写以使用此地址,并且其余标准函数可以保持不变。

另一种解决方法是打印到内存,最后将其转储到文件中,如下所示:

(pselect)->physical_memory.save-file mem.txt 0x40001000 1000 -overwrite

这将在物理地址 = 处转储 1000 字节0x40001000 to mem.txt文件。这通常是在批处理模式下运行某些测试并随后探索其日志的最快方法。

最后,可以将应用程序编译为 UEFI 负载并将其与类似的东西配对https://slimbootloader.github.io/supported-hardware/qsp.html https://slimbootloader.github.io/supported-hardware/qsp.html。经过一些努力,它可以在 Simics 和真实硬件上运行(仍处于裸机模式)。

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

从命令行模拟执行二进制文件? 的相关文章

  • C#/CLI 标识符的最大长度是多少?

    名称还有哪些其他限制 除了范围内明显的唯一性之外 这些是在哪里定义的 除了其他答案之外 Microsoft Visual C 编译器接受的最大标识符长度是511 个字符 可以使用以下代码进行测试 class Program private
  • CLI 模式下的 PHP APC

    PHP中的APC模块在CLI模式下运行时是否支持代码优化 例如 当我运行一个文件时php f
  • 从命令行将文件包含在项目中

    有没有办法在 vs2012 中从命令行将文件包含在项目中 我之所以问这个问题 是因为每当我使用其他 IDE 如 ST3 或从 Photoshop 等保存文件时 将添加到项目文件夹中的任何新文件包含在内是非常令人沮丧的 我正在使用 Grunt
  • 用于重新加载部署的 WildFly CLI 命令

    我可以重新启动运行以下 Java 代码的整个 WildFly 服务器 但我只想重新加载名为 test war 的部署 怎么可能呢 public void flushall throws IOException Runtime getRunt
  • 如何在启动 iex 会话时执行一些命令?

    假设我想在项目的根路径中启动 iex 时实现一些命令 例如 Logger configure level info require Ecto Query alias MyApp User and so on 我想在每次启动 iex 时自动执
  • 如何启用实验性 Docker CLI 功能

    我正在尝试使用docker manifest inspect
  • Python Curses 不清除屏幕

    我想在Python下使用Curses而不清除屏幕 原因是我希望我的应用程序在现有屏幕上弹出一个简单的小菜单并很快退出 退出时将弹出菜单中丑陋的部分保留在屏幕上是可以接受的 但不是首选 我们的想法是将其用于快速实用的系统管理应用程序和脚本 其
  • Intellij - 如何制作一个可以通过 CLI 或 Web 服务执行 IDE 操作的插件?

    我需要一些帮助来开始制作特定的 IntelliJ 插件 我想制作一个 IntelliJ 插件 这样您就可以从 CLI 或者从 Web 服务 如果更容易的话 启动 IntelliJ 操作 例如 我已经用 gradle 脚本构建了我的项目 但我
  • 无法使用命令行解释器

    我尝试在 php 解释器中执行简单的 php 代码 当我执行命令时php a我收到消息 启用交互模式 没有任何地方可以输入 php 但我可以通过命令执行php代码php r 例如 php r echo Hello stackoverflow
  • 在 Windows Server 2019 Core 中强制安装不兼容的 .inf 驱动程序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的第六代 NUC 上安装 Server 2019 Core 尽管安装进展顺利 但当它在没有任何网络连接的情况下启动时 我想起
  • aws elasticbeanstalk 和 EB CLI 之间的区别?

    两个命令aws elasticbeanstalk and eb似乎是做同样事情的替代方法 它们的语法似乎略有不同 例如aws elasticbeanstalk create environment but eb create 然而帮助页面的
  • 在一致的环境中执行Java程序

    在我工作的地方 我们有一个 shell 脚本 它允许我们使用所有必要的库和设置执行任意 Java 类 例如 bin sh JAVA HOME bin java cp LONG LIST OF JARS Xmx6g XX MaxPermSiz
  • ng 完成不再存在

    刚刚更新为使用最新版本的 Angular CLI 6 0 如何为 ng 二进制文件设置 bash 补全 它曾经是 lt ng completion bash in the bashrc文件 但现在不再了 这还能实现吗 根据this http
  • 通过使用 Foo() 参数运行子命令,在主单击组命令上实例化 Foo() 类

    我想运行一个带有可变参数的 click 子命令 这些参数将用于在 main 组命令上实例化类 Foo args 以便创建一个由其子命令使用的 Foo 实例 以便它与点击的工作方式一致 python foo py subcommand arg
  • 如何在 Node CLI 程序中使用 babel?

    我正在 Node 中编写一个小型 CLI 工具 并希望使用 ES6 来实现 index js 看起来像 usr bin env node require babel register module exports require app 我
  • 为所有图像添加前缀(递归)

    我有一个包含 5000 多张图像的文件夹 全部带有 JPG 扩展名 我想要做的就是递归地向所有图像添加 thumb 前缀 我发现了一个类似的问题 重命名文件和目录 添加前缀 https stackoverflow com questions
  • 如何从命令行提供非 slurpy 数组或命名数组?

    首先 raku perl6 非常棒 克罗也是如此 只花了一个周末就坠入爱河 然而现在我偶然发现了一些非常简单的事情 如果我在多重调度 MAIN 中使用 slurpy 参数 则会被识别并完美运行 multi MAIN config add h
  • 如何在 phpfarm php 安装上安装 pthreads

    记录我为帮助他人所做的努力 并希望得到一些关于我如何做得更好的反馈 命令pecl install pthreads由于我的 php 安装失败ubuntu 13 04盒子没有配置 zts Options 1 ubuntu存储库没有启用zts的
  • coreapi 操作,没有当前文档

    我正在尝试使用 coreapi 和 Django Rest Framework 进行发布 我正在关注这个tutorial https wsvincent com official django rest framework tutorial
  • 使用 php 脚本的电子邮件管道

    你好 我想将所有电子邮件 到达我的收件箱 转发到 php 脚本并检索电子邮件内容并将其保存在文件中 因此 我正确地添加了具有管道路径的电子邮件转发器 转发地址 电子邮件受保护 cdn cgi l email protection 管道到程序

随机推荐

  • 无法在 android studio 的模拟器中启动 AVD。参数无效

    我在 Android Studio 2 1 2 中遇到模拟器问题 当我尝试启动 AVD 时 我收到一条消息 无法在模拟器中启动 AVD Output 哈克斯已启用 该虚拟机所需的内存超出了驱动程序限制 Hax ram size 0x6000
  • 如何并行化行式 Pandas 数据帧的 apply() 方法

    我有以下代码 import pandas as pd import time def enrich str str val1 f str 1 val2 f str 2 val3 f str 3 time sleep 3 return val
  • 使用 JSONDecoder 解码 PascalCase JSON

    我需要用大写首字母 又名 PascalCase 或 UppperCamelCase 解码 JSON 如下所示 Title example Items hello world 所以我创建了一个符合以下条件的模型Codable struct M
  • 如何使用 codeigniter 表单助手添加属性

    我找不到这个问题的答案 假设我使用代码点火器表单助手输出一个输入字段 echo form input username username 如何添加属性 例如class or id对此input filed 您可以传递一个关联数组 其中包含您
  • 我应该在长时间运行的 AsyncTask 中使用 getApplicationContext 还是 Activity.this

    我有一个长时间运行的异步任务 它将一些数据发送到我的服务器 然后停止 整个过程可能涉及一些请求和响应 我必须从数据库读取数据 发送数据并处理响应并相应地更新我的数据库 我正在使用内容提供程序从数据库读取和更新数据 现在要使用内容提供程序 我
  • 将数组除以值的有效方法是什么?

    只是想知道 将数组除以标量的最有效方法是什么 我可以清楚地循环它 但在我的情况下效率是最重要的 常见的琐碎方式 var array 2 var array 1 original data var divisor my scalar for
  • Windows C++ 服务启动时 ucrtbase.dll 出现故障

    所以我开发这个程序已经有一段时间了 它的目的是充当我们 IT 团队的资产管理器 将来可能会更多 我有 2 项服务 我们现在将其称为 Manager 和 IAM 管理器 负责所有服务 目前只有库存资产管理器 称为 IAM 的所有管理工作 例如
  • 未授予 Google Drive API 读取权限

    我正在尝试使用 Google Drive API 从 Google Drive 下载随机文件 尽管运行代码后我收到一条错误消息 用户尚未授予应用程序 app code 对文件 文件名 的读取权限 如何授予该文件的读取权限 我在互联网上和 A
  • 无法使用 Dockerfile 命令更新 Openssl.cnf 文件

    我正在开发一个基于 NET 5 构建的应用程序 我们生成 docker 映像 最近 我使用作为基础的自定义 Docker 映像之一遇到问题 我的应用程序中很少有外部端点 但出现 SSL 证书错误 在对这个问题进行了一些研究之后 我发现ope
  • 如何在 Silverlight 中设置 TextBox 的行为风格?

    在 Xaml 中 我可以为文本框添加自定义行为 例如
  • 如何获取“t”的值,以便我的函数“h(t)=epsilon”为固定的“epsilon”?

    继这个问题之后 如果我已经生成了m 1000随机向量x 0均匀分布在随机矩阵 GOE 的球体和特征向量上 make this example reproducible set seed 101 n lt 500 Sample GOE ran
  • 如何使用 Yarn 升级所有范围内的软件包?

    是否可以升级我的依赖项部分中的所有特定范围的包package json通过使用 Yarn 包管理器 例如 yarn upgrade scope 这将升级所有范围内的包yarn lock and package json file https
  • 使用pygame进行多线程处理,程序崩溃

    大家好 提前感谢您的帮助 我刚刚发现了 pygame 一个 python 库 我想用它玩一下 但我遇到了一个问题 我尝试在代码中使用线程 但每次启动程序时都会崩溃 我已经隔离了问题并且我知道它是thread 1这会导致崩溃 因为当我将其注释
  • 如何将文本输入与图像按钮对齐?

    我有一个表单 其中输入字段的最后一行后面跟着 2 个图像按钮 无论我尝试什么 我似乎都无法将按钮与字段水平对齐 这是所有代码 http jsfiddle net h3ZPk http jsfiddle net h3ZPk 添加此规则 but
  • 使用未声明的标识符 self [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我创建了一个名为 Data pars
  • ASP.Net 1.1 视图状态安全

    在 ASP Net 1 1 中 最终用户是否可以在将视图数据发送回服务器之前更改视图数据 例如使其看起来像是在不存在的下拉列表中选择了一个项目 我尝试使用 firebug 操作下拉列表中的值 但服务器似乎忽略了这一点 我推测是因为视图状态表
  • BigQuery Python 客户端库中查询结果的差异

    我想知道 query 的返回值和 query result 之间的区别 在 BigQuery Python 客户端库中 bigquery client bigquery Client myQuery SELECT FROM mytable
  • 将columnNames动态传递给cassandraTable().select()

    我在运行时读取文件的查询并在 SPark Cassandra 环境中执行它 我正在执行 sparkContext cassandraTable keyspaceName colFamilyName select col1 col2 col3
  • 如何关闭 PDO 句柄

    我正在使用 PDO 访问 PHP 中的两个 SQLite 3 数据库 我想在查询期间通过重命名数据库文件来切换数据库文件 但在文件打开时我无法执行此操作 因为它会给出文件正在被另一个进程使用的错误 我尝试关闭持久连接并将句柄设置为空 但都不
  • 从命令行模拟执行二进制文件?

    有没有办法从命令行在 Simics 模拟下执行简单的 Linux 二进制文件 就像是 simics some flags a out Simics 现在没有开箱即用的应用程序模式 或系统调用模式 根据需要 可以将有效负载编译为 ELF 文件