3.hook到达的位置是 00401561 50 push eax
于是乎,首次调用api的路线变成了
原生:调用api->查表DLL是否在表中存在,不存在则LoadlLibrary->查表该api地址是否在表中存在,不存在则GetProcAddress->返回api地址->jmp api
优化后:首次调用api->查表DLL是否在表中存在,不存在则LoadlLibrary->查表该api地址是否在表中存在,不存在则GetProcAddress->返回api地址->修改调用方机器码,改为 call api
优化后:第二次及以上调用api->call api
下图为:易语言静态编译原生调用api,会有一个api编号,然后call(这个call包含了上面说的所有过程)
下图为:优化后的调用api,编号填充为多字节NOP,然后直接call api