每当我在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头中的偏移量。
我根本不知道它是什么的一部分,所以我不知道该搜索什么。谢谢。
答案 0 :(得分:1)
这些是从DLL导入的函数的跳转。只要导入函数的实际地址未知,编译的应用程序就会从跳转表中调用该地址。此技巧减少了在加载应用程序期间需要设置的地址数量。