导出函数与未导出函数

导出函数:

  出现在导出表EAT里面的函数,可以供外部调用的函数。

  使用LordPE查看,或者使用GetProcAddress或者MmGetSystemRoutineAddress之类的函数获取地址,能获取到就是导出函数。

非导出函数:

  仅供自己调用,可以根据函数的特征码来搜索,即硬编码(NeReadVirtualMemory)

公开(文档化)函数:

    各种厂商提供的带有函数原型和文档的函数,带有参数说明。

  肯定是导出函数,但是导出函数可以是非公开函数,比如LdrLoadDll这个函数,能获取到地址但是msdn上没有说明。

非公开(非文档化)函数:
  没有函数与原型和文档的函数,可以被GetProcAddress或者MmGetSystemRoutineAddress获取到地址,函数原型需要搜索或者逆向。

 

未公开的函数(导出未文档化)已经对导出来,但是不能直接使用。

  使用方法:

  1. 在Ring0层使用MmGetSystemRoutineAddress加函数名称获得函数的地址。

  2. 在Ring3层使用LoadLibrary和GetProcessAddress(提前定义好原型)。

 

未导出函数的使用比较麻烦,一般先获得函数所在模块的基地址,然后通过特征码去获取函数的地址。

posted @ 2017-04-06 11:03  SenberHu  阅读(1529)  评论(0编辑  收藏  举报