利用内联汇编实现多层深度检测非法call
在上章节中介绍了利用ebp返回地址检测非法call函数调用、如何实现VS2010调试器的调用堆栈列表的方法,在这章节中,我们换另一种内联汇编的方法实现的深度多层调用堆栈检测,示例代码如下:
AsmStackCheck.cpp
// AsmStackCheck.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Public.h"
#include "EnumModule.h"
#include "EasyHook.h"
// 定义函数指针
typedef BOOL (WINAPI *fun_MessageBoxW)(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
// 原始函数地址
fun_MessageBoxW g_pOldMessageBoxW = MessageBoxW;
// 钩子过滤函数检测非法ebp
BOOL WINAPI new_MessageBoxW(HWN