-
-
[原创]老鸟飞过。。。来坛里几个月了发一下新手学习笔记(未完。。)
-
发表于:
2010-12-12 14:59
5968
-
[原创]老鸟飞过。。。来坛里几个月了发一下新手学习笔记(未完。。)
目的:学习
发帖目的: 共同学习和记录学习 (每星期希望都能坚持发。。)
内容:对反跟踪技术原理的学习。。
虽然看雪那本书上讲了很多,但本菜 还是认为 自己动手 坐一下比较好,虽然很简单。。
第一节:对peb标志位的检测:
相应扩展习题:(在双进程保护中进行解除) Exam_CrackMe4.rar
相应示例代码:
#include <stdio.h>
#include <Windows.h>
BOOL WINAPI IsDebuggerPresent(void);
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
HWND hDebug;
if(IsDebuggerPresent())
{
hDebug=GetForegroundWindow();
SendMessage(hDebug,WM_CLOSE,NULL,NULL); //终止od
return FALSE;
}
MessageBox(NULL,"NOT FOUND OD!","SEARCH",MB_OK);
return TRUE;
}
很简单 自己动手,但也可以学很多东西。。
2.调试时间限制:加密解密上 提到过:但没有真正让我感受到 所以自己就动手写了:
示例源码:
#include <stdio.h>
#include <windows.h>
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
DWORD dTime1;
DWORD dTime2;
dTime1=GetTickCount();
GetCurrentProcessId();//加入你自己的认为可能会断下的地方放入 获取tickcount函数之间
GetCurrentProcessId();
GetCurrentProcessId();
GetCurrentProcessId();
GetCurrentProcessId();
dTime2=GetTickCount();
if(dTime2-dTime1>100) // 如果时延过大判定 其为处于调试状态
{
MessageBox(NULL,"FOUND!","SEARCH",MB_OK);
}
else
{
MessageBox(NULL,"Not FOUND!","SEARCH",MB_OK);
}
return TRUE;
}
未完待续。。。。
希望在雪坛里里面,加速进步。。。。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!