跳转表在拆卸二进制文件的开头

时间:2013-07-14 00:11:57

标签: assembly disassembly

每当我在Immunity Debugger中反汇编二进制文件时,第一个入口点始终是mainCRTStartup的JMP,这很好......

但我很好奇它是其中一部分的其他跳跃。我很好奇这个部分叫什么?

例如;

003210EB   E9 A00E0000      JMP Hello_Wo._onexit
003210F0   E9 7B040000      JMP Hello_Wo.NtCurrentTeb
003210F5   E9 48280000      JMP Hello_Wo._HeapFree@12                ; JMP to kernel32.HeapFree
003210FA   E9 71080000      JMP Hello_Wo._RTC_SetErrorFunc
003210FF   E9 6C100000      JMP Hello_Wo._invoke_watson_if_error
00321104 > E9 F7070000      JMP Hello_Wo.mainCRTStartup
00321109   E9 C8270000      JMP Hello_Wo.___crtUnhandledException    ; JMP to MSVCR110.__crtUnhandledException
0032110E   E9 FD080000      JMP Hello_Wo.__CxxUnhandledExceptionFilt>
00321113   E9 78090000      JMP Hello_Wo.__CxxSetUnhandledExceptionF>
00321118   E9 CB270000      JMP Hello_Wo._QueryPerformanceCounter@4  ; JMP to kernel32.QueryPerformanceCounter

我只是想知道这叫什么,所以我可以阅读它。我尝试搜索PE文件结构,因为我认为这可能是导入表,但它们并不完全是DLL条目,并且它们不适合PE头中的偏移量。

我根本不知道它是什么的一部分,所以我不知道该搜索什么。谢谢。

1 个答案:

答案 0 :(得分:1)

这些是从DLL导入的函数的跳转。只要导入函数的实际地址未知,编译的应用程序就会从跳转表中调用该地址。此技巧减少了在加载应用程序期间需要设置的地址数量。