Assembly 我在MSVC输出反汇编中经常看到的函数的jmp指令表是什么? 00007FF755AF1118 jmp scrt获取动态tls初始化回调(07FF755AF2730h) __scrt\u dllmain\u crt\u螺纹\u连接: 00007FF755AF111D jmp螺纹连接(07FF755AF1E90h) __acrt螺纹连接: 00007FF755AF1122用于acrt螺纹连接的jmp螺纹接头(07FF755AF4F30h) __acrt_螺纹_分离: 00007FF755AF1127用于螺纹分离(07FF755AF4F40h)的jmp螺纹接头 __crt\u快速\u解码\u指针: 00007FF755AF112C jmp crt快速解码指针(07FF755AF1B20h) __报告\u rangecheckfailure: 00007FF755AF1131 jmp报告范围检查失败(07FF755AF49A0h) __scrt\u初始化\u默认\u本地\u标准选项: 00007FF755AF1136 jmp、scrt、初始化、默认、本地、标准选项(07FF755AF26A0h) __scrt\u exe\u初始化\u mta: 00007FF755AF113B用于mta的jmp scrt存根(07FF755AF2B00h) f: 00007FF755AF1140 jmp f(07FF755AF1490h) __scrt获取动态数据或回调: 00007FF755AF1145 jmp scrt获取动态数据或回调(07FF755AF2740h) __scrt\u获取\u启动\u锁定: 00007FF755AF114A jmp scrt获取启动锁(07FF755AF1DA0h) ReadNoFence64: 00007FF755AF114F jmp ReadNoFence64(07FF755AF2C70h) _执行警卫检查: 00007FF755AF1154强制执行的jmp保护检查(07FF755AF2CC0h) ReadPointerOffence: 00007FF755AF1159 jmp读点失效(07FF755AF2CA0h) __acrt螺纹连接: 00007FF755AF115E用于螺纹连接的jmp螺纹接头(07FF755AF4F30h) __scrt\u exe\u初始化\u mta: 00007FF755AF1163用于mta的jmp scrt存根(07FF755AF2B00h) __scrt\u未处理的\u异常\u筛选器: 00007FF755AF1168 jmp未处理的scrt异常过滤器(07FF755AF2B10h) ... 这张桌子很大。

Assembly 我在MSVC输出反汇编中经常看到的函数的jmp指令表是什么? 00007FF755AF1118 jmp scrt获取动态tls初始化回调(07FF755AF2730h) __scrt\u dllmain\u crt\u螺纹\u连接: 00007FF755AF111D jmp螺纹连接(07FF755AF1E90h) __acrt螺纹连接: 00007FF755AF1122用于acrt螺纹连接的jmp螺纹接头(07FF755AF4F30h) __acrt_螺纹_分离: 00007FF755AF1127用于螺纹分离(07FF755AF4F40h)的jmp螺纹接头 __crt\u快速\u解码\u指针: 00007FF755AF112C jmp crt快速解码指针(07FF755AF1B20h) __报告\u rangecheckfailure: 00007FF755AF1131 jmp报告范围检查失败(07FF755AF49A0h) __scrt\u初始化\u默认\u本地\u标准选项: 00007FF755AF1136 jmp、scrt、初始化、默认、本地、标准选项(07FF755AF26A0h) __scrt\u exe\u初始化\u mta: 00007FF755AF113B用于mta的jmp scrt存根(07FF755AF2B00h) f: 00007FF755AF1140 jmp f(07FF755AF1490h) __scrt获取动态数据或回调: 00007FF755AF1145 jmp scrt获取动态数据或回调(07FF755AF2740h) __scrt\u获取\u启动\u锁定: 00007FF755AF114A jmp scrt获取启动锁(07FF755AF1DA0h) ReadNoFence64: 00007FF755AF114F jmp ReadNoFence64(07FF755AF2C70h) _执行警卫检查: 00007FF755AF1154强制执行的jmp保护检查(07FF755AF2CC0h) ReadPointerOffence: 00007FF755AF1159 jmp读点失效(07FF755AF2CA0h) __acrt螺纹连接: 00007FF755AF115E用于螺纹连接的jmp螺纹接头(07FF755AF4F30h) __scrt\u exe\u初始化\u mta: 00007FF755AF1163用于mta的jmp scrt存根(07FF755AF2B00h) __scrt\u未处理的\u异常\u筛选器: 00007FF755AF1168 jmp未处理的scrt异常过滤器(07FF755AF2B10h) ... 这张桌子很大。,assembly,visual-c++,x86,linker,Assembly,Visual C++,X86,Linker,我的理论是,它可以帮助链接器进行编辑和继续操作,因为链接器可以将新函数转储到内存空间中的任何位置,然后将跳转表修补到新位置。但我现在还没有启用“编辑并继续”,而且有时在打开大量优化时,我仍然会看到这种情况 它叫什么?我想知道谷歌搜索什么 它为什么存在 额外信用:我能通过网络质疑它的存在吗 所有这些函数都是在C运行时初始化库中定义的。除此之外,如果不精确描述如何复制该表,就很难完全回答这个问题。我看到一个用于调试构建的跳转表,但不用于发布构建。我不清楚跳转表如何帮助调试生成。@rcgldr:增量链

我的理论是,它可以帮助链接器进行编辑和继续操作,因为链接器可以将新函数转储到内存空间中的任何位置,然后将跳转表修补到新位置。但我现在还没有启用“编辑并继续”,而且有时在打开大量优化时,我仍然会看到这种情况

  • 它叫什么?我想知道谷歌搜索什么
  • 它为什么存在
  • 额外信用:我能通过网络质疑它的存在吗

  • 所有这些函数都是在C运行时初始化库中定义的。除此之外,如果不精确描述如何复制该表,就很难完全回答这个问题。我看到一个用于调试构建的跳转表,但不用于发布构建。我不清楚跳转表如何帮助调试生成。@rcgldr:增量链接使用它进行修补。如果我认为这个表应该有一堆0xcc字节,以便将来添加新函数时使用thunk条目。如果这就是我现在所认为的,这个问题可以作为一个重复的问题关闭,因为在SO上也有类似的问题。@MichaelPetch-true,但是发布版本的默认设置是增量链接关闭。
    00007FF755AF1118  jmp         __scrt_get_dyn_tls_init_callback (07FF755AF2730h)  
    __scrt_dllmain_crt_thread_attach:
    00007FF755AF111D  jmp         __scrt_dllmain_crt_thread_attach (07FF755AF1E90h)  
    __acrt_thread_attach:
    00007FF755AF1122  jmp         __scrt_stub_for_acrt_thread_attach (07FF755AF4F30h)  
    __acrt_thread_detach:
    00007FF755AF1127  jmp         __scrt_stub_for_acrt_thread_detach (07FF755AF4F40h)  
    __crt_fast_decode_pointer<void (__cdecl** __ptr64)(void)>:
    00007FF755AF112C  jmp         __crt_fast_decode_pointer<void (__cdecl**)(void)> (07FF755AF1B20h)  
    __report_rangecheckfailure:
    00007FF755AF1131  jmp         __report_rangecheckfailure (07FF755AF49A0h)  
    __scrt_initialize_default_local_stdio_options:
    00007FF755AF1136  jmp         __scrt_initialize_default_local_stdio_options (07FF755AF26A0h)  
    __scrt_exe_initialize_mta:
    00007FF755AF113B  jmp         __scrt_stub_for_initialize_mta (07FF755AF2B00h)  
    f:
    00007FF755AF1140  jmp         f (07FF755AF1490h)  
    __scrt_get_dyn_tls_dtor_callback:
    00007FF755AF1145  jmp         __scrt_get_dyn_tls_dtor_callback (07FF755AF2740h)  
    __scrt_acquire_startup_lock:
    00007FF755AF114A  jmp         __scrt_acquire_startup_lock (07FF755AF1DA0h)  
    ReadNoFence64:
    00007FF755AF114F  jmp         ReadNoFence64 (07FF755AF2C70h)  
    _guard_icall_checks_enforced:
    00007FF755AF1154  jmp         _guard_icall_checks_enforced (07FF755AF2CC0h)  
    ReadPointerNoFence:
    00007FF755AF1159  jmp         ReadPointerNoFence (07FF755AF2CA0h)  
    __acrt_thread_attach:
    00007FF755AF115E  jmp         __scrt_stub_for_acrt_thread_attach (07FF755AF4F30h)  
    __scrt_exe_initialize_mta:
    00007FF755AF1163  jmp         __scrt_stub_for_initialize_mta (07FF755AF2B00h)  
    __scrt_unhandled_exception_filter:
    00007FF755AF1168  jmp         __scrt_unhandled_exception_filter (07FF755AF2B10h)  
    ... etc etc this table is huge.