Jesses

集中精神
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

隐藏DLL 和 修改MFC窗体类名(转)

Posted on 2010-01-14 10:40  Jesses  阅读(1514)  评论(0编辑  收藏  举报

  1. void HideDll()     
  2. {     
  3.     HMODULE hMod = ::GetModuleHandle("MyHook.dll");     
  4.     PLIST_ENTRY Head,Cur;     
  5.     PPEB_LDR_DATA ldr;     
  6.     PLDR_MODULE ldm;     
  7.     __asm     
  8.     {     
  9.         mov eax , fs:[0x30]     
  10.         mov ecx , [eax + 0x0c] //Ldr     
  11.         mov ldr , ecx     
  12.     }     
  13.     Head = &(ldr->InLoadOrderModuleList);     
  14.     Cur = Head->Flink;     
  15.     do    
  16.     {     
  17.         ldm = CONTAINING_RECORD( Cur, LDR_MODULE, InLoadOrderModuleList);     
  18.         //printf("EntryPoint [0x%X]\n",ldm->BaseAddress);     
  19.         if( hMod == ldm->BaseAddress)     
  20.          {     
  21.             ldm->InLoadOrderModuleList.Blink->Flink =     
  22.                 ldm->InLoadOrderModuleList.Flink;     
  23.             ldm->InLoadOrderModuleList.Flink->Blink =     
  24.                 ldm->InLoadOrderModuleList.Blink;     
  25.             ldm->InInitializationOrderModuleList.Blink->Flink =     
  26.                 ldm->InInitializationOrderModuleList.Flink;     
  27.             ldm->InInitializationOrderModuleList.Flink->Blink =     
  28.                 ldm->InInitializationOrderModuleList.Blink;       
  29.             ldm->InMemoryOrderModuleList.Blink->Flink =     
  30.                 ldm->InMemoryOrderModuleList.Flink;     
  31.             ldm->InMemoryOrderModuleList.Flink->Blink =     
  32.                 ldm->InMemoryOrderModuleList.Blink;       
  33.             break;     
  34.          }     
  35.         Cur= Cur->Flink;     
  36.      }while(Head != Cur);     
  37. }    

MFC 改变窗口类名

1,改变窗口类名:比如:MyClassName是自己想设置的类名
方法:打开资源视图,右击外挂窗口,属性改掉ClassName属性,若它为灰色,右击.rc文件改mfc Mode属性为false,再改
2,改变后在CTestCpp中的InitInstance()注册该窗口类名
WNDCLASS wc;

// 获取窗口类信息。MFC默认的所有对话框的窗口类名为 #32770 
::GetClassInfo(AfxGetInstanceHandle(), _T("#32770"), &wc);

// 改变窗口类名 
wc.lpszClassName = _T("MyClassName");

// 注册新窗口类,使程序能使用它 

 AfxRegisterClass(&wc);

AfxRegisterClass(&wc);