正常情况下调用API有两种方式:call [aaaaaaaa] 和JMP[aaaaaaaa]其中aaaaaaaa这个地址中保存的是API入口地址;对Advanced Import Protection的个人理解是对前面两种API调用的变形。
变形1、call bbbbbbbb其中bbbbbbbb是处于壳利用VirtualAlloc申请的内存中,call bbbbbbbb完成对API的调用,然后回到用户模块接着执行call bbbbbbbb的下一句;
变形2、还有就是call bbbbbbbb中完成对其本身“call bbbbbbbb”的修改,修改为call cccccccc或者JMP cccccccc,其中cccccccc也是处于壳利用VirtualAlloc申请的另一块内存中,然后回到call cccccccc或者JMP cccccccc接着执行,最后加到用户模块的位置不确定;
对于ASProtect 在申请的内存中找不到对API函数的调用。
猜想:偷取标准API函数入口的一些代码放到VirtualAlloc申请的内存中然后再跳转到kernel32等标准DLL中的被偷取的下一句执行?