- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望你们能帮助我理解重定位条目和ELF部分数据之间的关系,以及它们是如何处理和生成的。
我有一个古老的不受支持的工具,该工具需要一个ELF文件和一个相关的PLF文件(部分链接的文件,在构建过程的早期生成),并从中构建自定义的可重定位文件,该文件可在具有严格内存限制的平台(PPC)上使用。除包含大约一小段我们要在启动后卸载的初始化代码外,此方法工作正常。因此,我们将所有init代码放入自定义节中以进行卸载,但不幸的是,该工具无法正确处理自定义节,并且rel文件无效。因此,我的任务是制作一个新工具,以正确生成其中包含定制部分的可重定位文件。
我对这个工具和生成rel文件已经走得很远了,但目前陷入了试图找出如何处理节数据和建立重定位条目的困境。等等。我是高级程序员元素,因此所有这些逆向工程业务对我来说都是新的(感谢互联网!)。
我找到了Elf Sharp并将其用作起点。它允许我同时加载ELF和PLF文件并与其内容进行交互。从那里开始,我大部分时候对重定位文件的标头和内容进行了反向工程,但这远非准确。当我比较旧工具的文件版本时,我发现一些节数据已得到修复,而我的文件使用的节数据直接来自PLF文件,并且很普通。我的意思是我复制的截面数据包含大量的“ 48 00 00 01”,但是这些都是通过旧工具以某种方式修复的。这些字节的意义是什么?对它们做了什么?我还必须生成重定位条目,但不确定如何继续。
我发现了一些在线处理小精灵重定位的示例,并且在我的工具中也有类似的东西正在运行,但是我仍然不清楚我到底应该做什么。对于所有重定位类型及其公式(第4.12.5章here),我都有很好的资源,但是我仍然不确定我应该使用哪些偏移量,节信息等。
TL; DR
您能否帮助我直观地了解这些重定位条目的实际情况,如何生成和处理这些重定位条目以及在执行程序时如何使用它们?
对节数据中的所有“ 48 00 00 01”字都做了什么?我假设已经使用适当的符号解决了这些问题,但是这是怎么做的呢?使用.rela信息?
另外,我不确定何时应该使用PLF内容以及何时应该使用ELF内容。我认为我只需要ELF即可获取加载地址和分段信息。
当我生成重定位修正程序(在PPC上)时,如何准确地评估重定位类型方程式?在这一点上,我在网上提到的示例并不直观。我对偏移量感到困惑-您从Elf32_Rela获得了一个偏移量,但是您修改了那个偏移量吗?用来记录修正结果的偏移量是多少?加数到底是什么?我还没有在网上找到任何能启发人的东西。
一些(实际上是大多数)重定位修复程序指向几个.debug_ *节或.bss之一。我应该跳过.debug修复程序还是重要的? .bss是NoBits部分,那么我该如何处理?当涉及到实际生成重定位条目时,我了解它们的构造方式,但是创建条目的真正原因是谁?我的意思是,我已经准备好构建它,但是我不知道从哪里开始-我是否在某个地方或某些地方迭代某些数据?
还有其他我想问但还没有意识到的问题吗? ;)
感谢您阅读我的冗长的问题!
最佳答案
也许objconv工具可以提供帮助。它可以将x86 ELF文件中的重定位类型显示为转储或反汇编。
http://www.agner.org/optimize/#objconv
关于reverse-engineering - ELF搬迁逆向工程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16577473/
我有 *.ipa 文件,它是 iphone 应用程序。 是否可以在该 ipa 中使用逆向工程并提取代码..? 最佳答案 嗯,这不是真正的黑客攻击,但它确实可以帮助您识别 UI 的某些部分...请执行以
我一直在尝试对游戏的功能进行逆向工程,但我有点困惑。我对逆向工程还很陌生(顺便说一句,我正在使用 ollydbg),所以我还不太了解所有的技巧和细节。 无论如何这是我的问题。当您在游戏中拾取任何元素时
我被要求抓取一个 Flash 网站,该网站似乎正在通过 AMF 协议(protocol)使用某种服务器端调用。我完全不熟悉这个协议(protocol),但找到了这个库(http://www.pyamf
我的问题是我正在使用一个巨大的网络应用程序(学校系统),没有内部逻辑的文档。我需要对特定值进行批量更新,但我不知道MySQL数据库中的哪些表包含要更新的相关数据。该应用程序是从 php 自行运行的。有
我正在学习如何逆向一个程序,我想知道..如果我用调试信息编译: gcc -g .... 这对逆向过程有什么帮助吗?如果我这样做,我会提供额外的信息吗?我找不到有关该主题的任何信息。 最佳答案 它通过将
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 5 年前。
今天我决定使用 IDA Pro 反编译一个用 Visual C++ 编写的简单“Hello world”程序。 根据我以前的知识,我确定我不会在可执行文件入口点找到对 printf 的立即调用,我是对
我正在使用 PowerDesigner 为我的 SQL Server 数据库建模。我使用逆向工程选项来导入我的数据库。我的问题是表中的默认数据未导入。 有人知道如何导入表格中的数据吗? 最佳答案 我们
我一直在分析一些 230V 通信并试图找出协议(protocol)的校验和算法。从我了解到的通信结构如下: 第一个 block 总是相同的,必须是某种开始结构(910hex) 然后嵌套5个 block
在 AmigaOS 中的 Devs:Monitors 中找到的文件,它们包含什么? 它们的内部格式是什么?您如何修补一个或从头开始创建一个? 最佳答案 Amiga 程序 MonEd ( http://
我正在使用 VS2013 更新 3 的“逆向工程”模型优先功能从现有数据库开发 EF 模型。不幸的是,我无法完全控制数据库架构,它使用表和列前缀(例如 tblPerson , cFirstName,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在尝试对 APK 文件进行逆向工程。 我尝试了 apk2jar 来获取类和资源文件。但我无法解压缩 Assets 。 有人可以帮忙吗? 最佳答案 使用 apktool。它将对所有布局、值、 Ass
我正在尝试解码由 Android instagram 应用程序发送到 graph.instagram.com 的帖子数据。该问题与此处发现的问题类似: Reverse Engineer HTTP re
我想查明用 C/C++ 编写的应用程序究竟在哪里失败。我无法直接调试应用程序,既不使用 gdb/lldb 也不使用 IDE,因为应用程序是由程序启动的(它是 webots 机器人模拟软件的机器人 Co
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是
我有一个最初用 VS2005 编写的小实用程序。 我需要做一点小改动,但是其中一个 dll 的源代码在某处丢失了。 是否有免费或价格合理的工具将 dll 反向工程回 C++ 代码。 最佳答案 Hex-
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我想知道是否有人知道如何对 Access 数据库进行逆向工程。我希望能够生成用于创建数据库表并将所有记录插入表中的 SQL 代码。换句话说,我想创建类似于 MySQL 转储文件的内容。 任何想法都会很
String.GetHashCode 的行为取决于程序架构。所以它将在 x86 中返回一个值,在 x64 中返回一个值。我有一个必须在 x86 上运行的测试应用程序,它必须预测必须在 x64 上运行的
我是一名优秀的程序员,十分优秀!