导出函数:顾名思义,出现在导出表(EAT)里面的函数,可以给外部调用的函数,验证是否为导出函数的方法,熟悉逆向的朋友可以使用LordPE之类的工具查看,当然也可以使用GetProcAddress或者MmGetSystemRoutineAddress之类的函数来获取地址,如果成功的话就是导出函数。
非导出函数:这种函数是供自己调用使用的,不想提供给别人使用,当然也有方法可以获取函数地址,可以根据函数的特征来搜索,这就是传说中的硬编码,经典的案例案例如,NtReadVirtualMemory。
公开(文档化)函数:微软(可以是其它厂商~)提供的带有函数原型和文档的函数,这种函数使用起来最方便,不用去寻找或者逆向函数原型,还带有参数说明~~。
非公开(非文档化)函数:没有函数原型和文档的函数,微软经常会把一些参数可能会随时变化的函数,或者功能有点强大的不河蟹的函数隐藏起来,这些也是不河蟹软件最喜欢的函数。通常这类函数可以被GetProcAddress或者MmGetSystemRoutineAddress获取到地址,但是函数原型需要搜索或者逆向。
1.公开函数肯定是导出函数,只要你在msdn上能找到函数可定都是能直接调用的导出函数,除非微软蛋疼了。
2.导出函数可以是非公开函数,比如LdrLoadDll这个函数,能取到地址但是msdn上面没有说明。