mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
OnlineChecks: Moved menuitem (Misc > Online Analysis), added VirusTotal/Comodo/Jotti upload progress
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@5004 21ef857c-d57f-4fe0-8362-d861dc6d29cd
This commit is contained in:
@@ -13,39 +13,11 @@
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (Australia) resources
|
||||
// English resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -91,13 +63,15 @@ END
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_PROGRESS DIALOGEX 0, 0, 189, 41
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Uploading"
|
||||
IDD_PROGRESSDIALOG DIALOGEX 0, 0, 260, 100
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Online Analysis"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
PUSHBUTTON "Cancel",IDCANCEL,132,20,50,14
|
||||
LTEXT "Message",IDC_MESSAGE,7,7,175,8
|
||||
PUSHBUTTON "Cancel",IDCANCEL,203,79,50,14
|
||||
LTEXT "Select a file to upload",IDC_MESSAGE,6,5,246,12
|
||||
CONTROL "",IDC_UPLOADPROGRESS,"msctls_progress32",PBS_SMOOTH,7,60,246,11
|
||||
CONTROL "Status",IDC_STATUS,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,8,48,245,8
|
||||
END
|
||||
|
||||
|
||||
@@ -107,18 +81,54 @@ END
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_PROGRESS, DIALOG
|
||||
IDD_PROGRESSDIALOG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 182
|
||||
RIGHTMARGIN, 253
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 34
|
||||
BOTTOMMARGIN, 93
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (Australia) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA)
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS
|
||||
#pragma code_page(1252)
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English (Australia) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<ProjectGuid>{79D24223-1122-40A9-BC8F-46A2089FE089}</ProjectGuid>
|
||||
<RootNamespace>OnlineChecks</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectName>OnlineChecks</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
* main program
|
||||
*
|
||||
* Copyright (C) 2010-2011 wj32
|
||||
* Copyright (C) 2012 dmex
|
||||
*
|
||||
* This file is part of Process Hacker.
|
||||
*
|
||||
@@ -24,37 +25,63 @@
|
||||
#include "onlnchk.h"
|
||||
#include "resource.h"
|
||||
|
||||
VOID NTAPI LoadCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
);
|
||||
PPH_PLUGIN PluginInstance;
|
||||
static PH_CALLBACK_REGISTRATION PluginLoadCallbackRegistration;
|
||||
static PH_CALLBACK_REGISTRATION PluginShowOptionsCallbackRegistration;
|
||||
static PH_CALLBACK_REGISTRATION PluginMenuItemCallbackRegistration;
|
||||
static PH_CALLBACK_REGISTRATION ProcessMenuInitializingCallbackRegistration;
|
||||
static PH_CALLBACK_REGISTRATION ModuleMenuInitializingCallbackRegistration;
|
||||
static PH_CALLBACK_REGISTRATION MainWindowShowingCallbackRegistration;
|
||||
|
||||
VOID NTAPI ShowOptionsCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
);
|
||||
|
||||
VOID NTAPI MainWindowShowingCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
);
|
||||
VOID NTAPI MenuItemCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
);
|
||||
|
||||
VOID NTAPI ProcessMenuInitializingCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
);
|
||||
|
||||
VOID NTAPI ModuleMenuInitializingCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
);
|
||||
|
||||
PPH_PLUGIN PluginInstance;
|
||||
PH_CALLBACK_REGISTRATION PluginLoadCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION PluginShowOptionsCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION PluginMenuItemCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION ProcessMenuInitializingCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION ModuleMenuInitializingCallbackRegistration;
|
||||
PPH_EMENU_ITEM CreateSendToMenu(
|
||||
__in PPH_EMENU_ITEM Parent,
|
||||
__in PWSTR InsertAfter,
|
||||
__in PPH_STRING FileName
|
||||
)
|
||||
{
|
||||
PPH_EMENU_ITEM sendToMenu;
|
||||
PPH_EMENU_ITEM menuItem;
|
||||
ULONG insertIndex;
|
||||
|
||||
// Create the Send To menu.
|
||||
sendToMenu = PhPluginCreateEMenuItem(PluginInstance, 0, 0, L"Online Analysis", NULL);
|
||||
PhInsertEMenuItem(sendToMenu, PhPluginCreateEMenuItem(PluginInstance, 0, UPLOAD_SERVICE_VIRUSTOTAL, L"Virustotal", FileName), -1);
|
||||
PhInsertEMenuItem(sendToMenu, PhPluginCreateEMenuItem(PluginInstance, 0, UPLOAD_SERVICE_JOTTI, L"Jotti", FileName), -1);
|
||||
PhInsertEMenuItem(sendToMenu, PhPluginCreateEMenuItem(PluginInstance, 0, UPLOAD_SERVICE_CIMA, L"Comodo", FileName), -1);
|
||||
|
||||
menuItem = PhFindEMenuItem(Parent, PH_EMENU_FIND_STARTSWITH, InsertAfter, 0);
|
||||
|
||||
if (menuItem)
|
||||
insertIndex = PhIndexOfEMenuItem(Parent, menuItem);
|
||||
else
|
||||
insertIndex = -1;
|
||||
|
||||
PhInsertEMenuItem(Parent, sendToMenu, insertIndex + 1);
|
||||
|
||||
return sendToMenu;
|
||||
}
|
||||
|
||||
|
||||
LOGICAL DllMain(
|
||||
__in HINSTANCE Instance,
|
||||
@@ -73,30 +100,30 @@ LOGICAL DllMain(
|
||||
if (!PluginInstance)
|
||||
return FALSE;
|
||||
|
||||
info->DisplayName = L"Online Checks";
|
||||
info->Author = L"wj32";
|
||||
info->Description = L"Allows files to be checked with online services.";
|
||||
info->DisplayName = L"OnlineChecks";
|
||||
info->Author = L"wj32 & dmex";
|
||||
info->Description = L"";
|
||||
info->HasOptions = FALSE;
|
||||
|
||||
PhRegisterCallback(
|
||||
PhGetPluginCallback(PluginInstance, PluginCallbackLoad),
|
||||
LoadCallback,
|
||||
NULL,
|
||||
&PluginLoadCallbackRegistration
|
||||
);
|
||||
PhRegisterCallback(
|
||||
PhGetPluginCallback(PluginInstance, PluginCallbackShowOptions),
|
||||
ShowOptionsCallback,
|
||||
NULL,
|
||||
&PluginShowOptionsCallbackRegistration
|
||||
);
|
||||
PhRegisterCallback(
|
||||
PhGetGeneralCallback(GeneralCallbackMainWindowShowing),
|
||||
MainWindowShowingCallback,
|
||||
NULL,
|
||||
&MainWindowShowingCallbackRegistration
|
||||
);
|
||||
|
||||
PhRegisterCallback(
|
||||
PhGetPluginCallback(PluginInstance, PluginCallbackMenuItem),
|
||||
MenuItemCallback,
|
||||
NULL,
|
||||
&PluginMenuItemCallbackRegistration
|
||||
);
|
||||
|
||||
PhRegisterCallback(
|
||||
PhGetGeneralCallback(GeneralCallbackProcessMenuInitializing),
|
||||
ProcessMenuInitializingCallback,
|
||||
@@ -116,14 +143,6 @@ LOGICAL DllMain(
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
VOID NTAPI LoadCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
)
|
||||
{
|
||||
// Nothing
|
||||
}
|
||||
|
||||
VOID NTAPI ShowOptionsCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
@@ -132,58 +151,64 @@ VOID NTAPI ShowOptionsCallback(
|
||||
// Nothing
|
||||
}
|
||||
|
||||
VOID NTAPI MainWindowShowingCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
)
|
||||
{
|
||||
//PhPluginAddMenuItem(PluginInstance, PH_MENU_ITEM_LOCATION_TOOLS, NULL, UPLOAD_SERVICE_VIRUSTOTAL, L"Upload file to VirusTotal", NULL);
|
||||
//PhPluginAddMenuItem(PluginInstance, PH_MENU_ITEM_LOCATION_TOOLS, NULL, UPLOAD_SERVICE_JOTTI, L"Upload file to JOTTI", NULL);
|
||||
//PhPluginAddMenuItem(PluginInstance, PH_MENU_ITEM_LOCATION_TOOLS, NULL, UPLOAD_SERVICE_CIMA, L"Upload file to Comodo", NULL);
|
||||
}
|
||||
|
||||
VOID NTAPI MenuItemCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
)
|
||||
{
|
||||
PPH_PLUGIN_MENU_ITEM menuItem = Parameter;
|
||||
PPH_STRING fileName;
|
||||
|
||||
switch (menuItem->Id)
|
||||
{
|
||||
case ID_SENDTO_SERVICE1:
|
||||
fileName = menuItem->Context;
|
||||
UploadToOnlineService(menuItem->OwnerWindow, fileName, UPLOAD_SERVICE_VIRUSTOTAL);
|
||||
case UPLOAD_SERVICE_VIRUSTOTAL:
|
||||
{
|
||||
if (menuItem->Context)
|
||||
{
|
||||
UploadToOnlineService(
|
||||
menuItem->OwnerWindow,
|
||||
menuItem->Context ? menuItem->Context : NULL,
|
||||
UPLOAD_SERVICE_VIRUSTOTAL
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ID_SENDTO_SERVICE2:
|
||||
fileName = menuItem->Context;
|
||||
UploadToOnlineService(menuItem->OwnerWindow, fileName, UPLOAD_SERVICE_JOTTI);
|
||||
case UPLOAD_SERVICE_JOTTI:
|
||||
{
|
||||
if (menuItem->Context)
|
||||
{
|
||||
UploadToOnlineService(
|
||||
menuItem->OwnerWindow,
|
||||
menuItem->Context ? menuItem->Context : NULL,
|
||||
UPLOAD_SERVICE_JOTTI
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ID_SENDTO_SERVICE3:
|
||||
fileName = menuItem->Context;
|
||||
UploadToOnlineService(menuItem->OwnerWindow, fileName, UPLOAD_SERVICE_CIMA);
|
||||
case UPLOAD_SERVICE_CIMA:
|
||||
{
|
||||
if (menuItem->Context)
|
||||
{
|
||||
UploadToOnlineService(
|
||||
menuItem->OwnerWindow,
|
||||
menuItem->Context ? menuItem->Context : NULL,
|
||||
UPLOAD_SERVICE_CIMA
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
PPH_EMENU_ITEM CreateSendToMenu(
|
||||
__in PPH_EMENU_ITEM Parent,
|
||||
__in PWSTR InsertAfter,
|
||||
__in PPH_STRING FileName
|
||||
)
|
||||
{
|
||||
PPH_EMENU_ITEM sendToMenu;
|
||||
PPH_EMENU_ITEM menuItem;
|
||||
ULONG insertIndex;
|
||||
|
||||
// Create the Send To menu.
|
||||
sendToMenu = PhPluginCreateEMenuItem(PluginInstance, 0, 0, L"Send To", NULL);
|
||||
PhInsertEMenuItem(sendToMenu, PhPluginCreateEMenuItem(PluginInstance, 0, ID_SENDTO_SERVICE1, L"virustotal.com", FileName), -1);
|
||||
PhInsertEMenuItem(sendToMenu, PhPluginCreateEMenuItem(PluginInstance, 0, ID_SENDTO_SERVICE2, L"virusscan.jotti.org", FileName), -1);
|
||||
PhInsertEMenuItem(sendToMenu, PhPluginCreateEMenuItem(PluginInstance, 0, ID_SENDTO_SERVICE3, L"camas.comodo.com", FileName), -1);
|
||||
|
||||
menuItem = PhFindEMenuItem(Parent, PH_EMENU_FIND_STARTSWITH, InsertAfter, 0);
|
||||
|
||||
if (menuItem)
|
||||
insertIndex = PhIndexOfEMenuItem(Parent, menuItem);
|
||||
else
|
||||
insertIndex = -1;
|
||||
|
||||
PhInsertEMenuItem(Parent, sendToMenu, insertIndex + 1);
|
||||
|
||||
return sendToMenu;
|
||||
}
|
||||
|
||||
VOID NTAPI ProcessMenuInitializingCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
@@ -192,6 +217,8 @@ VOID NTAPI ProcessMenuInitializingCallback(
|
||||
{
|
||||
PPH_PLUGIN_MENU_INFORMATION menuInfo = Parameter;
|
||||
PPH_PROCESS_ITEM processItem;
|
||||
ULONG flags;
|
||||
PPH_EMENU_ITEM miscMenu;
|
||||
PPH_EMENU_ITEM sendToMenu;
|
||||
|
||||
if (menuInfo->u.Process.NumberOfProcesses == 1)
|
||||
@@ -199,13 +226,17 @@ VOID NTAPI ProcessMenuInitializingCallback(
|
||||
else
|
||||
processItem = NULL;
|
||||
|
||||
sendToMenu = CreateSendToMenu(menuInfo->Menu, L"Search Online", processItem ? processItem->FileName : NULL);
|
||||
flags = 0;
|
||||
|
||||
// Only enable the Send To menu if there is exactly one process selected and it has a file name.
|
||||
|
||||
if (!processItem || !processItem->FileName)
|
||||
flags = PH_EMENU_DISABLED;
|
||||
|
||||
miscMenu = PhFindEMenuItem(menuInfo->Menu, 0, L"Miscellaneous", 0);
|
||||
|
||||
if (miscMenu)
|
||||
{
|
||||
sendToMenu->Flags |= PH_EMENU_DISABLED;
|
||||
sendToMenu = CreateSendToMenu(miscMenu, L"Search Online", processItem ? processItem->FileName : NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,50 @@
|
||||
#ifndef ONLNCHK_H
|
||||
#define ONLNCHK_H
|
||||
|
||||
#pragma comment(lib, "OleAut32.lib")
|
||||
#pragma comment(lib, "Winhttp.lib")
|
||||
|
||||
#define COBJMACROS
|
||||
#include <time.h>
|
||||
#include <phdk.h>
|
||||
#include <OleCtl.h>
|
||||
#include <winhttp.h>
|
||||
#include <Netlistmgr.h>
|
||||
#include <ShObjIdl.h>
|
||||
|
||||
#include "sha256.h"
|
||||
#include "resource.h"
|
||||
|
||||
#define HASH_SHA1 1
|
||||
#define HASH_SHA256 2
|
||||
|
||||
#define UM_LAUNCH_COMMAND (WM_APP + 1)
|
||||
#define UM_ERROR (WM_APP + 2)
|
||||
|
||||
typedef struct _UPLOAD_CONTEXT
|
||||
{
|
||||
LONG RefCount;
|
||||
|
||||
PPH_STRING FileName;
|
||||
ULONG Service;
|
||||
HWND WindowHandle;
|
||||
HANDLE ThreadHandle;
|
||||
|
||||
PPH_STRING LaunchCommand;
|
||||
PPH_STRING ErrorMessage;
|
||||
} UPLOAD_CONTEXT, *PUPLOAD_CONTEXT;
|
||||
|
||||
typedef struct _SERVICE_INFO
|
||||
{
|
||||
ULONG Id;
|
||||
PWSTR HostName;
|
||||
INTERNET_PORT HostPort;
|
||||
ULONG HostFlags;
|
||||
PWSTR UploadObjectName;
|
||||
PWSTR FileNameFieldName;
|
||||
} SERVICE_INFO, *PSERVICE_INFO;
|
||||
|
||||
|
||||
// main
|
||||
|
||||
#ifndef MAIN_PRIVATE
|
||||
@@ -9,9 +53,9 @@ extern PPH_PLUGIN PluginInstance;
|
||||
|
||||
// upload
|
||||
|
||||
#define UPLOAD_SERVICE_VIRUSTOTAL 1
|
||||
#define UPLOAD_SERVICE_JOTTI 2
|
||||
#define UPLOAD_SERVICE_CIMA 3
|
||||
#define UPLOAD_SERVICE_VIRUSTOTAL 101
|
||||
#define UPLOAD_SERVICE_JOTTI 102
|
||||
#define UPLOAD_SERVICE_CIMA 103
|
||||
|
||||
VOID UploadToOnlineService(
|
||||
__in HWND hWnd,
|
||||
@@ -19,4 +63,14 @@ VOID UploadToOnlineService(
|
||||
__in ULONG Service
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK UploadDlgProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,16 +2,10 @@
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by OnlineChecks.rc
|
||||
//
|
||||
#define ID_SENDTO_SERVICE1 101
|
||||
#define IDD_PROGRESS 101
|
||||
#define ID_SENDTO_SERVICE2 102
|
||||
#define ID_SENDTO_SERVICE3 103
|
||||
#define ID_SENDTO_SERVICE4 104
|
||||
#define ID_SENDTO_SERVICE5 105
|
||||
#define ID_SENDTO_SERVICE6 106
|
||||
#define ID_SENDTO_SERVICE7 107
|
||||
#define ID_SENDTO_SERVICE8 108
|
||||
#define IDD_PROGRESSDIALOG 101
|
||||
#define IDC_MESSAGE 1002
|
||||
#define IDC_UPLOADPROGRESS 1003
|
||||
#define IDC_STATUS 1004
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
@@ -19,7 +13,7 @@
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 102
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1003
|
||||
#define _APS_NEXT_CONTROL_VALUE 1007
|
||||
#define _APS_NEXT_SYMED_VALUE 109
|
||||
#endif
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user