Debugging 如何了解JIT';密码?

Debugging 如何了解JIT';密码?,debugging,firefox,reverse-engineering,jit,disassembly,Debugging,Firefox,Reverse Engineering,Jit,Disassembly,我正在与Firefox合作进行一个研究项目。Firefox在运行时使用大量的JIT'ed代码 我使用定制的PIN工具检测Firefox,以找出我正在寻找的某些东西的位置(地址)。问题在于,这些位置都是在JIT'edcode中。我想知道代码里到底发生了什么 为此,我转储了相应的内存区域,并使用objdump反汇编转储。 我使用objdump-D-b binary-mi386 file.dump查看本应执行的指令。令我惊讶的是,唯一列出的部分是.data部分(一个非常大的部分) 要么是我错误地分解了

我正在与Firefox合作进行一个研究项目。Firefox在运行时使用大量的
JIT'ed
代码

我使用定制的
PIN工具
检测Firefox,以找出我正在寻找的某些东西的位置(地址)。问题在于,这些位置都是在
JIT'ed
code中。我想知道代码里到底发生了什么

为此,我转储了相应的内存区域,并使用
objdump
反汇编转储。 我使用
objdump-D-b binary-mi386 file.dump
查看本应执行的指令。令我惊讶的是,唯一列出的部分是
.data
部分(一个非常大的部分)

要么是我错误地分解了它,要么是我的理解有问题。我希望看到更多像
.text
这样的部分,其中应该有实际的可执行指令,而
.data
部分不应该是可执行的

我在这里的理解正确吗

另外,如果有人能告诉我如何正确地知道Jit'ed中发生了什么

机器
Linux 3.13.0-24-generic#47 Ubuntu SMP x86_64

或者我的理解有什么问题

是的:你的理解还有其他问题

节(如
.text
.data
)仅在静态链接时才有意义(静态链接器将多个
.o
文件中的
.text
组合成最终可执行文件中的单个
.text
)。它们没有用处,实际上可以在执行时完全剥离。在ELF系统上,运行时需要的全部是段(
PT_LOAD
段),您可以通过
readelf-l binary
看到这些段

ELF文件中的部分是“文件的一部分”。当您转储内存时,节甚至不值得讨论


您在
objdump
输出中看到的
.data
也不存在,它只是
objdump
制造的一个工件。

如果您真正谈论的是JITed代码,这意味着它是动态生成的,因此不会成为可执行映像的一部分。它将只是在内存中标记为可执行文件,例如。再次感谢。这意味着我可以解释objdump所示的指令,并尝试弄清楚这里发生了什么。我的意思是,在这种情况下,objdump拆卸是可以的。