- 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/
如何在不使用Array.Reverse()方法的情况下反转数组(在C#中)?。例如,。应该会导致。这是我的面试任务。
我有一个内容,我希望它们以倒序排列和换行倒序排列,但顺序相反。这是代码: .a { height: 200px; width: 520px; padding: 5px 5px 5px 10
很多时候,我看到在列表头部运行的函数,例如: trimHead ('\n':xs) = xs trimHead xs = xs 然后我看到了定义: trimTail = reverse
如果 Reverse :: [k] -> [k]是一个类型族,那么 Haskell 无法判断 (Reverse (Reverse xs)) ~ xs .有没有办法让类型系统知道这一点而无需任何运行时成
我有一个单维项目数组,其声明和初始化为: string[] SubDirectorylist = Directory.GetDirectories(TargetDirectory); 我想反转成员并发
这是代码 >>> a=[1,3,2] >>> a [1, 3, 2] >>> a= 3,1,2 >>> a (3, 1, 2) >>> sorted(a) [1, 2, 3] >>> sorted(a
我对以下问题感兴趣:Collections.reverse() 与 Lists.reverse() 哪个更快? 最佳答案 他们做不同的事情。 Collections.reverse 采用可变列表并反转
我对以下问题感兴趣:Collections.reverse() 与 Lists.reverse() 哪个更快? 最佳答案 他们做不同的事情。 Collections.reverse 采用可变列表并反转
我今天在我的 Django 控制台中尝试了这个,我得到了两个不同的结果。我认为 list.reverse() 会反转列表(即第一个对象变成最后一个,依此类推)[1]。然而,情况似乎并非如此。 >>>
这个小小的 jQuery 插件: jQuery.fn.reverse = [].reverse; 它是如何工作的?对象绑定(bind)在哪里 - 反转函数的数组原型(prototype)?我真的不明白
大概都是 mylist.reverse()和 list.reverse(mylist)最终执行 reverse_slice 在 listobject.c通过 list_reverse_impl 或 P
您好,我在添加 django-reversion 和 django-reversion-compare 模块时遇到了一些问题。 我创建了新项目,我想使用 django-reversion 跟踪 use
我有以下观点: def default_new (request): if request.method == "POST": post = EquipmentForm(req
我对 List.Reverse() 有疑问和 Reverse(this IEnumerable source) .查看代码: // Part 1 List list = new List {
我需要首先对字典进行排序,值 reverse=True,对于重复值,按键排序 reverse=False 到目前为止,我有这个 dict = [('B', 3), ('A', 2), ('A', 1)
我有一个字典,其中包含要排序的字符串键和 int 值。我希望它首先按递减值编号排序,然后按字母顺序排序。 例如,如果您有一个包含以下内容的字典: my_dict = {'zebra':1, 'the'
我是编程新手。我正在通过第 9 channel 的 Bob Tabors 视频学习 c#。 你能解释一下为什么我们不能做这样的事情吗: string mijnVoornaam = "Remolino"
这个问题在这里已经有了答案: Why there is two completely different version of Reverse for List and IEnumerable? (
有什么区别 mylist = reversed(sorted(mylist)) 对 mylist = sorted(mylist, reverse=True) 为什么要使用一个而不是另一个? 如何在多
我的问题涉及将新方法添加到现有String 构造函数 的应用程序。在 Stoyan Stefanov 的 Object Oriented Program for Javascript 中,有一个使用
我是一名优秀的程序员,十分优秀!