- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
第二篇中谈到了对纯CALL的辅助软件的一种检测手段,索性接着乱谈这种辅助的检测手段。
不过这里谈谈暗桩模式的检测,堆栈遍历逐层找返回的EIP相信很多人都会。
不过在某些Call的地方插入下面这样的代码,比如游戏逻辑的发包call的加密call里面
于是悲情又出来了
代码:
WCHAR wzCallerName[MAX_PATH];
PVOID dwRetArray[62];
DWORD dwRetCount;
BOOL bNeedLogStack = TRUE;
dwRetCount = RtlCaptureStackBackTrace(2,50,dwRetArray,0);//用api是不好的,可以自己实现的说~~
if (dwRetCount)
{
for(DWORD xIndex=0;xIndex<dwRetCount;xIndex++)
{
if (CheckExcepAddr((DWORD)dwRetArray[xIndex]))//排除部分白地址
{
bNeedLogStack = FALSE;
break;
}
}
if (bNeedLogStack)
{
for(DWORD xIndex=0;xIndex<dwRetCount;xIndex++)
{
GetCallerModule((DWORD)dwRetArray[xIndex],wzCallerName);//获取地址模块名称
ReportToSrv((DWORD)dwRetArray[xIndex],xIndex,wzCallerName);//把信息写入定时返回服务器的数据体里,嘿嘿~
}
}
}
第三篇内容就这些吧,还有几个有意思的检测和暗桩的方法等继续讲~~ |
|