防范黑客的技术措施(黑客技术安全之API拦截)
防范黑客的技术措施(黑客技术安全之API拦截)3.接下来进行HOOK,将我们的Add.dll文件中函数int add(int a int b)进行hook2.创建MFC应用程序调用我们的API程序执行的过程如下:首先编写我们的Add.dll,实现add函数建立一个DLL工程,实现代码如下:
API hook 与我之前介绍的Message HOOK在原理上不同 消息钩子是截获程序中的消息或事件的,API钩子是拦截目标程序中调用的函数,替换或者调用函数的功能,常用来实现进程隐藏,文件隐藏和端口隐藏。
API HOOK常应用在木马编写程序中,它可以HOOK住API函数CreateProcess,改变它的执行流程,使得我们创建的程序可以不在任务管理器中出现,能很好地实现隐藏。
实现原理
我们都知道,Win32系统API都是以dll封装起来,应用程序调用系统函数时,首先会把该DLL加载到当前的进程空间,调用系统函数的入口地址,可通过GetProcAddress函数进行获取。当系统函数进行调用的时候,首先将相应的信息压栈保存下来(参数、返回地址等信息),然后就跳转到函数的入口地址去执行。那么如何让函数首先执行我们的函数呢,其实很简单,就是将要执行的系统函数的入口地址的内容替换为一条跳转指令,目的就是跳转到我们的函数去执行。跳转指令跳转的地址就是我们程序的首地址。为了我们的函数进行相应处理后还能返回到原理的系统函数进行调用,然后返回,则需要将系统函数入口修改地方进行恢复。
程序执行的过程如下:
首先编写我们的Add.dll,实现add函数
建立一个DLL工程,实现代码如下:
2.创建MFC应用程序调用我们的API
3.接下来进行HOOK,将我们的Add.dll文件中函数int add(int a int b)进行hook
在dll实例化函数InitInstance()中,初始化变量和进行注入:
HOOK函数Inject:
编写HOOK开始和停止函数:
编写自己的Myadd函数