这里我们手写两个主要函数用于完成相应的功能,两个函数是loadlibrary和getprocaddress,两个动态dll加载函数,只不过这两个系统dll函数是硬盘dll库文件加载,我们需要写两个内存dll库加载。 自己写的这个函数第一是可以自定义功能与实现,第二的话自己写的dll可以在源码改函数名,对于导出表与目标壳程序的导入表隐藏有很好的效果。 先说下对于第一个函数loadlibrary,这个函数所要完成的工作是 1.根据pe头数据进行数据的转移,并重置各区段的大小与内存页大小对齐。
2.根据重定位表数据对pe文件中的对应地址数据进行重定位。 再说下第二个函数getprocaddress,这个函数需要实现的功能就只是简单的根据导出表内容找到对应函数地址,并返回一个函数指针供上层程序调用 这里制作相应dll的细节我就不多说了,只是需要注意下函数名修改成不带特征的就行。 dll调用函数需要拼接“_”前缀和“@8”后缀,可以查看consoleapplication13的调用示范。