Let us start here, from square one. No, from Zero!

This commit is contained in:
smpn2
2022-09-30 22:45:51 +09:00
parent 14215af0d1
commit b7a60638a4
1005 changed files with 303069 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
#pragma once
#include <windows.h>
#include <string>
namespace hooks::device {
extern bool ENABLE;
}
extern bool DEVICE_CREATEFILE_DEBUG;
class CustomHandle {
public:
HANDLE handle = INVALID_HANDLE_VALUE;
bool com_pass = false;
virtual ~CustomHandle() = default;
virtual bool open(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) {
return open(lpFileName);
}
virtual bool open(LPCWSTR lpFileName) {
return false;
};
virtual int read(LPVOID lpBuffer, DWORD nNumberOfBytesToRead) {
return -1;
};
virtual int write(LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite) {
return -1;
};
virtual int device_io(DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer,
DWORD nOutBufferSize) {
return -1;
};
virtual bool close() {
return true;
};
virtual void file_info(LPBY_HANDLE_FILE_INFORMATION lpFileInformation) {
memset(lpFileInformation, 0, sizeof(*lpFileInformation));
};
DCB comm_state {};
COMMTIMEOUTS comm_timeouts {};
};
class MITMHandle : public CustomHandle {
protected:
LPCWSTR lpFileName = L"";
bool lpFileNameContains = false;
std::string rec_file = "";
public:
MITMHandle(LPCWSTR lpFileName, std::string rec_file = "", bool lpFileNameContains = false);
bool open(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) override;
int read(LPVOID lpBuffer, DWORD nNumberOfBytesToRead) override;
int write(LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite) override;
int device_io(DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer,
DWORD nOutBufferSize) override;
bool close() override;
};
void devicehook_init(HMODULE module = nullptr);
void devicehook_add(CustomHandle *device_handle);
void devicehook_dispose();