mirror of
https://github.com/hasherezade/module_overloading
synced 2026-06-08 14:33:42 +00:00
51 lines
1008 B
C++
51 lines
1008 B
C++
#include "util.h"
|
|
#include <peconv.h>
|
|
|
|
DWORD translate_protect(DWORD sec_charact)
|
|
{
|
|
if ((sec_charact & IMAGE_SCN_MEM_EXECUTE)
|
|
&& (sec_charact & IMAGE_SCN_MEM_READ)
|
|
&& (sec_charact & IMAGE_SCN_MEM_WRITE))
|
|
{
|
|
return PAGE_EXECUTE_READWRITE;
|
|
}
|
|
if ((sec_charact & IMAGE_SCN_MEM_EXECUTE)
|
|
&& (sec_charact & IMAGE_SCN_MEM_READ))
|
|
{
|
|
return PAGE_EXECUTE_READ;
|
|
}
|
|
if (sec_charact & IMAGE_SCN_MEM_EXECUTE)
|
|
{
|
|
return PAGE_EXECUTE_READ;
|
|
}
|
|
|
|
if ((sec_charact & IMAGE_SCN_MEM_READ)
|
|
&& (sec_charact & IMAGE_SCN_MEM_WRITE))
|
|
{
|
|
return PAGE_READWRITE;
|
|
}
|
|
if (sec_charact & IMAGE_SCN_MEM_READ) {
|
|
return PAGE_READONLY;
|
|
}
|
|
|
|
return PAGE_READWRITE;
|
|
}
|
|
|
|
bool is_compatibile(BYTE *implant_dll)
|
|
{
|
|
bool is_payload64 = peconv::is64bit(implant_dll);
|
|
#ifdef _WIN64
|
|
if (!is_payload64) {
|
|
std::cerr << "For 64 bit loader you MUST use a 64 bit payload!\n";
|
|
return false;
|
|
}
|
|
#else
|
|
if (is_payload64) {
|
|
std::cerr << "For 32 bit loader you MUST use a 32 bit payload!\n";
|
|
return false;
|
|
}
|
|
#endif
|
|
return true;
|
|
}
|
|
|