1,TLS(线程本地存储),给TLS申请完成的事件加一个回调函数,进程有一个主线程,在系统加载进程,申请主线程本地存储完就会执行这个回调,在进程运行之前运行,用来防止别人破解,所以能在od加载之时,运行之前,做一些我们想做的事,比如加密,或者加密自己的代码(代码区需要写入权限)等等,
void NTAPI tls_callback(PVOID h,DWORD reason,PVOID pv)
{
return;
}
#ifdef _M_IX86
#pragma comment(linker,"/INCLUDE:__tls_usd");//链接tls表,使用线程的局部存储
#pragma comment(linker,"/INCLUDE:__tls_callback");//链接回调
#else
#pragma comment(linker,"/INCLUDE:_tls_usd");
#pragma comment(linker,"/INCLUDE:_tls_callback");
//创建一个TLS区段
EXTERN_C
#ifdef _M_X64
#pragma const_seg(".CRT$XLB")
#else
#pragma const_data(".CRT$XLB")
#endif
PIMAGE_TLS_CALLBACK _tls_callbak[]={tls_callback,0};//把回调函数的地址写入到.CRT$XLB段里面
#pargma data_seg()
#pragma const_seg()
还有其他的teb,ped标志位 以后再写