了解反汇编的 C 代码(特别是像 var_28 = dword ptr -28h 之类的东西)(二进制炸弹实验室)

2023-12-09

所以我正在反汇编一些代码(二进制炸弹实验室)并需要一些帮助来弄清楚发生了什么。

这是 IDA 屏幕截图:

enter image description here

(下面有一些跳转表的内容和另一个比较,但我对这些内容感觉更舒服(我认为))

现在,我想我知道这个阶段发生了什么,正如我所读到的:

http://teamterradactyl.blogspot.com/2007/10/binary-bomb.html(向下滚动至第 3 阶段)

然而,我已经习惯了不同形式的装配。

我最不明白的是顶部的所有 var_28 = dword ptr -28h 内容。

当 sscanf 被调用时,它如何知道将每个标记放在哪里?并且只会有三个标记(这就是上面的链接所说的,尽管我看到了%d,%d......所以可能是两个,但我认为是三个)。基本上,谁能告诉我在调用 sscanf 后这些 var_x (和 arg_0)将指向什么?

它们只是相对于堆栈指针的寻址,对吧......?但是这些地址是如何填充来自 sscanf 的令牌的呢?

注意:这是作业,但它说不要添加作业标签,因为它已过时或其他原因。作业是找出通过命令行输入的秘密短语以通过每个阶段。

注2:我真的不知道如何使用IDA,我的朋友只是告诉我在IDA中打开炸弹文件。也许有一种简单的方法可以让我在 IDA 中进行实验并找出答案,但我不知道如何做。


局部变量存储在帧指针的正下方。参数位于帧指针上方。 x86使用BP/EBP/RBP作为帧指针。

天真的反汇编只会反汇编lea eax, [ebp+var_10] as lea eax, [ebp-10h]。该指令引用一个局部变量,其地址位于帧指针指向下方的 10h(16 字节)处。 LEA 表示加载有效地址:它正在加载变量的地址[ebp - 10h] in eax, so eax现在包含指向该变量的指针。

IDA 显然试图为局部变量赋予有意义的名称,但由于显然没有可用的调试信息,它最终使用了虚拟名称。反正:

var_10= dword ptr -10h

只是 IDA 告知它已创建别名的方式var_10 for -10.

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

了解反汇编的 C 代码(特别是像 var_28 = dword ptr -28h 之类的东西)(二进制炸弹实验室) 的相关文章

  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 使用 C# 读取 Soap 消息

  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 在 OpenLayers (KML) 中刷新/重绘图层网络链接自动刷新

    TLDR我想刷新计时器上的图层 以便它绘制新的 kml 数据 如更新链接 网络链接 到目前为止 我已经尝试过操作功能如下 function RefreshKMLData layer layer loaded false layer setV
  • 如何通过事务以多模型形式显示错误消息?

    组织和用户这两个模型具有一对多关系 我有一个组合注册表单 其中一个组织加上该组织的用户进行了注册 我遇到的问题是 当为用户提交无效信息时 它会再次呈现表单 但不会显示用户的错误消息 例如 用户名不能为空 当提交有效信息时 该表单确实有效 并
  • 如何使用反向代理来绕过 X-Frame-Options: SAMEORIGIN for iframe

    我正在努力解决某些页面上的 X Frame Options SAMEORIGIN 限制 以便我可以将它们放入 iframe 中 我知道可以使用反向代理服务器来解决这个问题 但我不确定如何做 我需要的是为一些大厅监视器创建一个触摸屏界面 这些
  • Apache Ant 与 Graal VM

    我们将 Apache Ant 与 Nashorn JavaScript Engine 结合使用 该引擎在 jdk 15 及更高版本中已弃用并删除 我试图找到如何从 Nashorn 切换到 Graal VM 但即使在 Apache 网站上也没
  • WebView方向改变问题

    我有一个下面的布局 其中有一个以重力为中心的线性布局 以使子项居中对齐 我想以编程方式添加一个 webview 并在其中加载 youtube 视频 问题是 webview 的高度和宽度是wrap content wrap content 因
  • docker CMD 中的命令替换

    Using CMD pipenv venv bin python3 main py root uploads 导致错误docker run Error response from daemon invalid header field va
  • Laravel 5.1 中的表单验证异常没有被异常捕获?

    在 laravel5 中 我捕获了所有错误app Exceptions Handler render功能并且工作正常 下面给出的代码 public function render request Exception e error resp
  • 使用 Python 将 PDF 转换为图像 [重复]

    这个问题在这里已经有答案了 我正在尝试在我安装的 ubuntu 服务器中将 pdf 文件转换为图像文件 蟒蛇2 7 poppler 工具 pdf2image 1 12 1 My code from pdf2image import conv
  • Java 易失性关键字

    我知道有很多关于 volatile 的问题 但我只是从这个讨论中感到困惑 Java 挥发性如何保证这段代码中 数据 的可见性 我读过的每个网站都说变量可以存储在缓存中 使该值对其他线程不可见 我什至找到了这个例子https dzone co
  • 在 GCC/CLang 自动矢量化中强制对齐加载/存储的对齐属性

    众所周知 GCC CLang 使用 SIMD 指令可以很好地自动向量化循环 还已知存在对齐 标准 C 属性 除其他用途外还允许对齐堆栈变量 例如以下代码 在线尝试一下 include
  • Fragment Intermediate(I):从edittext获取输入,在fragment的textview中设置文本

    真的需要一些建议 不知道这里出了什么问题 语境 2 个片段 每个片段都有一个 Textview 主要活动有 2 个按钮和一个编辑文本 目的 在主活动的编辑文本框中输入 hello 并 当单击片段 1 的按钮时 文本视图将更改为 hello
  • 无法使用 create-react-app 和 docker windows 进行 webpack 热重载

    我们将使用 dockersetup 开发一个 React PWA 并在部署到 master 分支期间将应用程序发布到 gitlab 页面上 我在 Windows 设备上工作 无法在开发模式下获得热重载功能 每当我进行一些更改时 代码都不会重
  • 通过 JQuery 验证插件单击同一 HTML 表单中的不同按钮来验证不同字段

    例如假设我在表单中有两个文本框 A B 和两个按钮 C D 然后我希望在单击按钮 C 时 如果只有文本框 A 有效 则表单有效 并且在单击按钮 D 时 如果只有文本框 B 有效 则表单有效 有谁知道如何做到这一点 使用忽略选项 form v
  • Python 中块之前的冒号的作用是什么?

    Python 中块之前的冒号的作用是什么 Example if n 0 print The end 冒号用于声明缩进块的开始 从技术上来说 这是没有必要的 当块完成时 您可以缩进和取消缩进 然而 基于Python 公案 显式优于隐式 EIB
  • 在 Python 中打开 SSL 套接字连接

    我正在尝试在 Python 中建立安全套接字连接 但我在 SSL 方面遇到了困难 我找到了一些如何使用 SSL 建立连接的代码示例 但它们都涉及密钥文件 我尝试连接的服务器不需要接收任何密钥或证书 我的问题是如何使用 SSL 封装 pyth
  • 为什么 CMFCMenuBar 不使用加速器表?

    在使用 VS2008 的文档 视图项目中 MFC菜单栏似乎从项目中加载了正确的菜单资源 IDR MAINFRAME 因为添加和删除菜单项反映在菜单的 UI 中 它甚至将加速器附加到默认菜单项 例如 Ctrl O 附加到 打开 项 但是 加速
  • 如何终止我的应用程序的远程进程?

    我们的应用程序使用此方法来终止远程进程 但可以使用其他计划吗 我需要这个因为getRunningAppProcesses 可能不起作用 public void killChildProcess ActivityManager actvity
  • Facebook Messenger 应用程序无效范围 - 权限:pages_messaging_subscriptions

    我正在尝试将 Facebook Messenger 应用连接到我的一个页面 我之前已将 Facebook Messenger 应用连接到页面 但这是我第一次收到此错误 是什么赋予了 这是一个bug我们目前正在努力 同时 请使用我们的测试版或
  • 如何避免多次AJAX调用?

    我使用以下代码通过 AJAX 提交表单 form submit function e ajax type POST url ajax url dataType json data action my action str form seri
  • 了解反汇编的 C 代码(特别是像 var_28 = dword ptr -28h 之类的东西)(二进制炸弹实验室)

    所以我正在反汇编一些代码 二进制炸弹实验室 并需要一些帮助来弄清楚发生了什么 这是 IDA 屏幕截图 下面有一些跳转表的内容和另一个比较 但我对这些内容感觉更舒服 我认为 现在 我想我知道这个阶段发生了什么 正如我所读到的 http tea