最近想写一个程序,想在OD载入时自己检测OEP的第一个字节是否被替换为CC,

OD载入后,会在OEp处下个CC,所以要在OD在OEP处停下之前检测,就像Execryptor 2.4.1,要调试的话,必须删除OD的one-shot断点那样,问了很多大牛,都说可以在TLS中做手脚,我搜索了坛子,找到一个Asm语言的TLS例子,没怎么明白,希望有大牛能解释一下~给个VC++例子或是Delphi例子

  • 标 题:答复
  • 作 者:XSJS
  • 时 间:2009-02-21 12:01

代码:
#include "stdafx.h"
#include <windows.h>
#include "winbase.h"
#pragma comment(linker, "/INCLUDE:__tls_used")

int main();

void do_anti(){
  ExitThread(0);
}

void NTAPI Anti_CC_In_OEP(PVOID h, DWORD reason, PVOID pv){
  if( reason == DLL_PROCESS_ATTACH ){
    IMAGE_DOS_HEADER *dos_head=(IMAGE_DOS_HEADER *)GetModuleHandle(NULL);
    IMAGE_NT_HEADERS32 *nt_head=(IMAGE_NT_HEADERS32 *)(((DWORD)dos_head)+((DWORD)dos_head->e_lfanew));
    BYTE *OEP=(BYTE *)(nt_head->OptionalHeader.AddressOfEntryPoint+(DWORD)dos_head);
    if(*OEP==0xcc){
      do_anti();
    }
    OEP=(BYTE *)main;
    if(*OEP==0xcc){
      do_anti();
    }
  }
  return;
}

#pragma data_seg(".CRT$XLB")
  PIMAGE_TLS_CALLBACK p_thread_callback[] = {Anti_CC_In_OEP,0};
#pragma data_seg()

int main(){
  printf("Hello,World");
}

  • 标 题:答复
  • 作 者:Hannibal
  • 时 间:2009-02-27 15:28

漫谈TLS_CallBack:原理、编程、手工感染及检测
http://www.team509.com/modules.php?name=News&file=article&sid=73

  • 标 题:答复
  • 作 者:Aker
  • 时 间:2009-03-23 23:14

引用:
最初由 ben中文发布 查看帖子
附件法下,有人能上一下?!
机器上有份:)
上传的附件 TLS_CallBack.rar