From 91d59eaaa3aab155f8faed4b2d0e78c3fb8c0be7 Mon Sep 17 00:00:00 2001 From: Aivan Monceller Date: Mon, 12 Feb 2024 04:11:07 +0800 Subject: [PATCH 1/3] add support for v8.3 ida pro plugin --- PluginGeneric/AttachDialog.cpp | 2 +- PluginGeneric/OptionsDialog.cpp | 11 ++--- ScyllaHide.sln | 10 +++-- .../ScyllaHideIDAProPlugin.cpp | 19 ++++----- .../ScyllaHideIDAProPlugin.vcxproj | 40 ++++++++++++------- 5 files changed, 49 insertions(+), 33 deletions(-) diff --git a/PluginGeneric/AttachDialog.cpp b/PluginGeneric/AttachDialog.cpp index f364d42f..f99967fb 100644 --- a/PluginGeneric/AttachDialog.cpp +++ b/PluginGeneric/AttachDialog.cpp @@ -27,7 +27,7 @@ extern HWND hwmain; // Handle of main OllyDbg window #elif OLLY2 HWND hwmain = hwollymain; #elif __IDP__ -HWND hwmain = (HWND)callui(ui_get_hwnd).vptr; +HWND hwmain = GetForegroundWindow(); #elif X64DBG extern HWND hwndDlg; HWND hwmain; diff --git a/PluginGeneric/OptionsDialog.cpp b/PluginGeneric/OptionsDialog.cpp index 1eb0937d..609413e8 100644 --- a/PluginGeneric/OptionsDialog.cpp +++ b/PluginGeneric/OptionsDialog.cpp @@ -646,10 +646,11 @@ INT_PTR CALLBACK OptionsDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM l wstrNewProfileName.resize(lstrlenW(wstrNewProfileName.c_str())); #elif defined(__IDP__) - auto szNewProfileName = askstr(0, "", "New profile name?"); - if (!szNewProfileName) + qstring qNewProfileName; + bool success = ask_str(&qNewProfileName, 0, "New profile name?"); + if (!success) break; - wstrNewProfileName = scl::wstr_conv().from_bytes(szNewProfileName); + wstrNewProfileName = scl::wstr_conv().from_bytes(qNewProfileName.c_str()); #elif defined(X64DBG) std::string strNewProfileName; @@ -874,7 +875,7 @@ INT_PTR CALLBACK OptionsDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM l break; EndDialog(hDlg, NULL); - DialogBoxW(hinst, MAKEINTRESOURCE(IDD_ATTACH), (HWND)callui(ui_get_hwnd).vptr, &AttachProc); + DialogBoxW(hinst, MAKEINTRESOURCE(IDD_ATTACH), GetForegroundWindow(), &AttachProc); break; } @@ -883,7 +884,7 @@ INT_PTR CALLBACK OptionsDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM l if (HIWORD(wParam) != BN_CLICKED) break; - scl::ShowAboutBox((HWND)callui(ui_get_hwnd).vptr); + scl::ShowAboutBox(GetForegroundWindow()); break; } #endif diff --git a/ScyllaHide.sln b/ScyllaHide.sln index 99fef206..06eb69c6 100644 --- a/ScyllaHide.sln +++ b/ScyllaHide.sln @@ -106,10 +106,12 @@ Global {9EEA6D78-4E74-47B9-8746-B8754B15525D}.Release|Win32.ActiveCfg = Release|Win32 {9EEA6D78-4E74-47B9-8746-B8754B15525D}.Release|Win32.Build.0 = Release|Win32 {9EEA6D78-4E74-47B9-8746-B8754B15525D}.Release|x64.ActiveCfg = Release|Win32 - {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|Win32.ActiveCfg = Debug|Win32 - {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|x64.ActiveCfg = Debug|Win32 - {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|Win32.ActiveCfg = Release|Win32 - {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|x64.ActiveCfg = Release|Win32 + {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|Win32.ActiveCfg = Debug|x64 + {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|Win32.Build.0 = Debug|x64 + {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|x64.ActiveCfg = Debug|x64 + {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|Win32.ActiveCfg = Release|x64 + {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|Win32.Build.0 = Release|x64 + {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|x64.ActiveCfg = Release|x64 {4506D672-19C3-439B-8E1B-F1BA8BE28844}.Debug|Win32.ActiveCfg = Debug|Win32 {4506D672-19C3-439B-8E1B-F1BA8BE28844}.Debug|x64.ActiveCfg = Debug|x64 {4506D672-19C3-439B-8E1B-F1BA8BE28844}.Release|Win32.ActiveCfg = Release|Win32 diff --git a/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.cpp b/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.cpp index 8d35662a..83e85671 100644 --- a/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.cpp +++ b/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.cpp @@ -1,16 +1,16 @@ #define USE_STANDARD_FILE_FUNCTIONS #pragma warning(disable : 4996 4512 4127 4201) - //for 64bit - p64 #ifdef BUILD_IDA_64BIT #define __EA64__ -#pragma comment(lib, "x86_win_vc_64/ida.lib") +#pragma comment(lib, "x64_win_vc_64_pro/ida.lib") #else //for 32bit - plw -#pragma comment(lib, "x86_win_vc_32/ida.lib") +#pragma comment(lib, "x64_win_vc_32_pro/ida.lib") #endif + #include #include #include @@ -64,14 +64,14 @@ static void AttachProcess(DWORD dwPID) switch (res) { case -1: { - MessageBoxA((HWND)callui(ui_get_hwnd).vptr, + MessageBoxA(GetForegroundWindow(), "Can't attach to that process !", "ScyllaHide Plugin", MB_OK | MB_ICONERROR); break; } case -2: { - MessageBoxA((HWND)callui(ui_get_hwnd).vptr, + MessageBoxA(GetForegroundWindow(), "Can't find that PID !", "ScyllaHide Plugin", MB_OK | MB_ICONERROR); break; @@ -102,7 +102,7 @@ static bool SetDebugPrivileges() } //callback for various debug events -static int idaapi debug_mainloop(void *user_data, int notif_code, va_list va) +static ssize_t idaapi debug_mainloop(void *user_data, int notif_code, va_list va) { switch (notif_code) { @@ -295,13 +295,14 @@ static void idaapi IDAP_term(void) } //called when user clicks in plugin menu or presses hotkey -static void idaapi IDAP_run(int arg) +static bool idaapi IDAP_run(size_t arg) { - DialogBoxW(hinst, MAKEINTRESOURCE(IDD_OPTIONS), (HWND)callui(ui_get_hwnd).vptr, &OptionsDlgProc); + DialogBoxW(hinst, MAKEINTRESOURCE(IDD_OPTIONS), GetForegroundWindow(), &OptionsDlgProc); + return true; } //init the plugin -static int idaapi IDAP_init(void) +static plugmod_t* idaapi IDAP_init(void) { //ensure target is PE executable if (inf.filetype != f_PE) return PLUGIN_SKIP; diff --git a/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.vcxproj b/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.vcxproj index c5b44603..8df94511 100644 --- a/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.vcxproj +++ b/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.vcxproj @@ -1,13 +1,13 @@ - + Debug - Win32 + x64 - + Release - Win32 + x64 @@ -18,7 +18,7 @@ 10.0 - + DynamicLibrary true Unicode @@ -27,7 +27,7 @@ false 14.27.29110 - + DynamicLibrary false true @@ -42,6 +42,16 @@ + + + + + + + + + + @@ -53,25 +63,27 @@ - + false - .plw + .dll + $(TargetName)x64 - + false - .plw + .dll + $(TargetName)x64 - + - WIN32;_DEBUG;_WINDOWS;__NT__;__IDP__;%(PreprocessorDefinitions) + WIN64;__X64__;_DEBUG;__VC__;_WINDOWS;__NT__;__IDP__;%(PreprocessorDefinitions);BUILD_IDA_64BIT; Windows - + - WIN32;NDEBUG;_WINDOWS;__NT__;__IDP__;%(PreprocessorDefinitions) + WIN64;__X64__;NDEBUG;__VC__;_WINDOWS;__NT__;__IDP__;%(PreprocessorDefinitions);BUILD_IDA_64BIT; Windows From e857fc1c1bef184031314f3670b50b87f5afe6cb Mon Sep 17 00:00:00 2001 From: Duncan Ogilvie Date: Mon, 26 Feb 2024 20:01:16 +0100 Subject: [PATCH 2/3] do not build IDA plugin for 32-bit --- ScyllaHide.sln | 1 - 1 file changed, 1 deletion(-) diff --git a/ScyllaHide.sln b/ScyllaHide.sln index 06eb69c6..c1d69a4d 100644 --- a/ScyllaHide.sln +++ b/ScyllaHide.sln @@ -110,7 +110,6 @@ Global {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|Win32.Build.0 = Debug|x64 {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|x64.ActiveCfg = Debug|x64 {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|Win32.ActiveCfg = Release|x64 - {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|Win32.Build.0 = Release|x64 {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|x64.ActiveCfg = Release|x64 {4506D672-19C3-439B-8E1B-F1BA8BE28844}.Debug|Win32.ActiveCfg = Debug|Win32 {4506D672-19C3-439B-8E1B-F1BA8BE28844}.Debug|x64.ActiveCfg = Debug|x64 From 884c3ce1712d4259e8bcd900bb8ccb03b048b140 Mon Sep 17 00:00:00 2001 From: Duncan Ogilvie Date: Mon, 26 Feb 2024 20:01:16 +0100 Subject: [PATCH 3/3] few minor updates to the IDA plugin --- 3rdparty/README.txt | 2 +- ScyllaHide.sln | 1 - ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.cpp | 8 +++++--- ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.vcxproj | 2 -- release.bat | 6 +++--- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/3rdparty/README.txt b/3rdparty/README.txt index 1dfcc110..a0cb29f9 100644 --- a/3rdparty/README.txt +++ b/3rdparty/README.txt @@ -1 +1 @@ -To build the IDA plugin, extract the contents of idasdk695.zip in the directory "idasdk" \ No newline at end of file +To build the IDA plugin, extract the contents of idasdk83_pro.zip in the directory "idasdk" \ No newline at end of file diff --git a/ScyllaHide.sln b/ScyllaHide.sln index c1d69a4d..ca48326b 100644 --- a/ScyllaHide.sln +++ b/ScyllaHide.sln @@ -107,7 +107,6 @@ Global {9EEA6D78-4E74-47B9-8746-B8754B15525D}.Release|Win32.Build.0 = Release|Win32 {9EEA6D78-4E74-47B9-8746-B8754B15525D}.Release|x64.ActiveCfg = Release|Win32 {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|Win32.ActiveCfg = Debug|x64 - {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|Win32.Build.0 = Debug|x64 {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Debug|x64.ActiveCfg = Debug|x64 {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|Win32.ActiveCfg = Release|x64 {A94B6222-ABEF-41A0-BE48-06801157AAA5}.Release|x64.ActiveCfg = Release|x64 diff --git a/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.cpp b/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.cpp index 83e85671..d0b7d257 100644 --- a/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.cpp +++ b/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.cpp @@ -1,5 +1,6 @@ +#include + #define USE_STANDARD_FILE_FUNCTIONS -#pragma warning(disable : 4996 4512 4127 4201) //for 64bit - p64 #ifdef BUILD_IDA_64BIT @@ -10,13 +11,14 @@ #pragma comment(lib, "x64_win_vc_32_pro/ida.lib") #endif - -#include +#pragma warning(push, 0) #include #include #include #include #include +#pragma warning(pop) + #include #include #include diff --git a/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.vcxproj b/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.vcxproj index 8df94511..222081fa 100644 --- a/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.vcxproj +++ b/ScyllaHideIDAProPlugin/ScyllaHideIDAProPlugin.vcxproj @@ -66,12 +66,10 @@ false .dll - $(TargetName)x64 false .dll - $(TargetName)x64 diff --git a/release.bat b/release.bat index ea8efe75..267b720d 100644 --- a/release.bat +++ b/release.bat @@ -99,7 +99,7 @@ mkdir Release\Olly1 mkdir Release\Olly2 mkdir Release\TitanEngine mkdir Release\Generic -mkdir Release\IDA +mkdir Release\IDA\plugins copy /y /b build\Release\Win32\ScyllaHideGenericPluginx86.dll Release\Generic\ copy /y /b build\Release\x64\ScyllaHideGenericPluginx64.dll Release\Generic\ @@ -109,7 +109,7 @@ copy /y /b build\Release\Win32\ScyllaHideTEPluginx86.dll Release\TitanEngine\ copy /y /b build\Release\x64\ScyllaHideTEPluginx64.dll Release\TitanEngine\ copy /y /b build\Release\Win32\ScyllaHideX64DBGPlugin.dp32 Release\x64dbg\x32\plugins\ copy /y /b build\Release\x64\ScyllaHideX64DBGPlugin.dp64 Release\x64dbg\x64\plugins\ -copy /y /b build\Release\Win32\ScyllaHideIDAProPlugin.plw Release\IDA\ +copy /y /b build\Release\x64\ScyllaHideIDAProPlugin.dll Release\IDA\plugins\ xcopy /S /Y build\Release\Win32\*.exe Release\ xcopy /S /Y build\Release\x64\*.exe Release\ @@ -140,4 +140,4 @@ copy /y /b Release\HookLibraryx64.dll Release\IDA\ copy /y /b Release\HookLibraryx86.dll Release\IDA\ move Release\ScyllaHideIDAServer* Release\IDA\ -exit 0 \ No newline at end of file +exit /b 0 \ No newline at end of file