//------------------------------------------------------------------------------ void ReviewWOW64Redirect(PVOID OldValue_W64b) { typedef BOOL (WINAPI *WOW64DISABLEREDIRECT)(PVOID *OldValue); HMODULE hDLL = LoadLibrary( "KERNEL32.dll"); if (hDLL != NULL) { if (OldValue_W64b == FALSE) { WOW64DISABLEREDIRECT Wow64DisableWow64FsRedirect = (BOOL (WINAPI *)(PVOID *OldValue)) GetProcAddress(hDLL, "Wow64DisableWow64FsRedirection"); if (Wow64DisableWow64FsRedirect)Wow64DisableWow64FsRedirect(&OldValue_W64b); }else { WOW64DISABLEREDIRECT Wow64RevertWow64FsRedirect = (BOOL (WINAPI *)(PVOID *OldValue)) GetProcAddress(hDLL, "Wow64RevertWow64FsRedirection"); if (Wow64RevertWow64FsRedirect)Wow64RevertWow64FsRedirect(&OldValue_W64b); } FreeLibrary(hDLL); } }
//---------------------------------------------------------------- BOOL RemoteConnexionFilesScan(DWORD iitem, char *ip, DWORD ip_id, PSCANNE_ST config, long int *id_ok) { #ifdef DEBUG_MODE AddMsg(h_main,"DEBUG","files:RemoteConnexionFilesScan",ip); #endif #ifdef DEBUG_MODE_FILES AddMsg(h_main,"DEBUG","files:RemoteConnexionFilesScan START",ip); #endif if (ipIsLoclahost(ip)) { //disable WOWO64 redirect PVOID OldValue = NULL; BOOL disable_wowo64 = FALSE; if( Wow64DisableWow64FsRedirect(&OldValue)) disable_wowo64 = TRUE; if (SendDlgItemMessage(h_main,CB_T_FILES,LB_GETCOUNT,(WPARAM)NULL,(LPARAM)NULL) > 0) { if (!LocalFilesScan(iitem, config, id_ok, CB_T_FILES)) AddLSTVUpdateItem((char*)"LOCAL FILE SCAN FAIL!",COL_FILES,iitem); } //localFileScanList! if (SendDlgItemMessage(h_main,CB_T_MULFILES,LB_GETCOUNT,(WPARAM)NULL,(LPARAM)NULL) > 0) { ListView_SetItemText(GetDlgItem(h_main,LV_results),iitem,COL_STATE,(LPSTR)(LPSTR)"Files (List)"); if (!LocalFilesScanList(iitem, ip, config, CB_T_MULFILES)) AddLSTVUpdateItem((char*)"LOCAL MULTI FILE SCAN FAIL!",COL_FILES,iitem); } if (disable_wowo64)Wow64RevertWow64FsRedirect(OldValue); #ifdef DEBUG_MODE_FILES AddMsg(h_main,"DEBUG","files:RemoteConnexionFilesScan END",ip); #endif return TRUE; }else { if (SendDlgItemMessage(h_main,CB_T_FILES,LB_GETCOUNT,(WPARAM)NULL,(LPARAM)NULL) > 0) { if(RemoteAuthenticationFilesScan(iitem, ip, ip_id, (char*)"C$", config, id_ok, CB_T_FILES, FALSE)) { nb_files++; BOOL b_d = RemoteAuthenticationFilesScan(iitem, ip, ip_id, (char*)"D$", config, id_ok, CB_T_FILES, FALSE); BOOL b_e = RemoteAuthenticationFilesScan(iitem, ip, ip_id, (char*)"E$", config, id_ok, CB_T_FILES, FALSE); if (SendDlgItemMessage(h_main,CB_T_MULFILES,LB_GETCOUNT,(WPARAM)NULL,(LPARAM)NULL) > 0) { ListView_SetItemText(GetDlgItem(h_main,LV_results),iitem,COL_STATE,(LPSTR)(LPSTR)"Files (List)"); RemoteAuthenticationFilesScan(iitem, ip, ip_id, (char*)"C$", config, id_ok, CB_T_MULFILES, TRUE); if(b_d)RemoteAuthenticationFilesScan(iitem, ip, ip_id, (char*)"D$", config, id_ok, CB_T_MULFILES, TRUE); if(b_e)RemoteAuthenticationFilesScan(iitem, ip, ip_id, (char*)"E$", config, id_ok, CB_T_MULFILES, TRUE); } #ifdef DEBUG_MODE_FILES AddMsg(h_main,"DEBUG","files:RemoteConnexionFilesScan END",ip); #endif return TRUE; /*}else if(RemoteAuthenticationFilesScan(iitem, ip, ip_id, (char*)"ADMIN$", config, id_ok, CB_T_FILES, FALSE)) { RemoteAuthenticationFilesScan(iitem, ip, ip_id, (char*)"ADMIN$", config, id_ok, CB_T_MULFILES, TRUE);*/ #ifndef DEBUG_NOERROR }else AddLSTVUpdateItem((char*)"CONNEXION FAIL!",COL_FILES,iitem); #else } #endif }else if (SendDlgItemMessage(h_main,CB_T_MULFILES,LB_GETCOUNT,(WPARAM)NULL,(LPARAM)NULL) > 0)