ILT是啥

用vc6调试代码的时候看到反汇编代码里面有

call @ILT+35这种,查了一下ILT叫increament linking Table ,叫增量同步表。

它ILT涉及到的一种技术叫增量同步。

有这样一种应用场景,如果你有多个cpp文件,你只修改了其中一个cpp文件中的某个函数的一个小部分,那是不是要把全部cpp文件全部重新编译再链接呢?

如果是这样速度就比较慢,只需要编译和链接修改的那个cpp文件中的那个函数即可。

感觉和云盘的增量同步差不多。

 

ILT表在IDA中看到的就是增加了一个jmp跳转。

 

push    offset sub_401028
push    offset aOhWhat  ; "Oh what"
push    offset unk_439728
call    sub_4010A0

这里是调用cout函数输出字符串。这个004010A0地址并不是cout函数的真正的地址。而是一个跳转地址。

sub_4010A0 proc near
jmp     sub_401ED0
sub_4010A0 endp

cout真正的地址是00401ed0。

 

有了增量同步之后给反汇编代码造成了一定的困扰,可以在工程中关闭这个选项。

vc6 在工程 设置 链接  

取消勾选增量同步。

 

这只是增量同步的一个初步认识,为什么需要增量同步表还没有搞清楚。

 

posted @ 2021-09-30 18:17  eatwhat  阅读(456)  评论(0编辑  收藏  举报