-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathMessages.cpp
More file actions
67 lines (56 loc) · 2.1 KB
/
Messages.cpp
File metadata and controls
67 lines (56 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "Messages.hpp"
#include "MessageClient.hpp"
extern bool ReadMemory(LPCVOID, std::vector<uint8_t>&);
extern bool WriteMemory(LPVOID, const std::vector<uint8_t>&);
extern void EnumerateRemoteSectionsAndModules(const std::function<void(const void*, const void*, std::wstring&&)>&, const std::function<void(const void*, const void*, std::wstring&&, int, int, int, std::wstring&&)>&);
bool OpenProcessMessage::Handle(MessageClient& client)
{
client.Send(StatusMessage(true));
return true;
}
//---------------------------------------------------------------------------
bool CloseProcessMessage::Handle(MessageClient& client)
{
client.Send(StatusMessage(true));
return false;
}
//---------------------------------------------------------------------------
bool IsValidMessage::Handle(MessageClient& client)
{
client.Send(StatusMessage(true));
return true;
}
//---------------------------------------------------------------------------
bool ReadMemoryMessage::Handle(MessageClient& client)
{
std::vector<uint8_t> buffer(GetSize());
buffer.resize(GetSize());
if (ReadMemory(GetAddress(), buffer))
{
client.Send(ReadMemoryDataMessage(std::move(buffer)));
}
else
{
client.Send(StatusMessage(false));
}
return true;
}
//---------------------------------------------------------------------------
bool WriteMemoryMessage::Handle(MessageClient& client)
{
auto success = WriteMemory((void*)GetAddress(), GetData());
client.Send(StatusMessage(success));
return true;
}
//---------------------------------------------------------------------------
bool EnumerateRemoteSectionsAndModulesMessage::Handle(MessageClient& client)
{
EnumerateRemoteSectionsAndModules(
[&](auto p1, auto p2, auto p3) { client.Send(EnumerateRemoteModuleCallbackMessage(p1, p2, std::move(p3))); },
[&](auto p1, auto p2, auto p3, auto p4, auto p5, auto p6, auto p7) { client.Send(EnumerateRemoteSectionCallbackMessage(p1, p2, std::move(p3), p4, p5, p6, std::move(p7))); }
);
// Report enumeration complete to client.
client.Send(StatusMessage(true));
return true;
}
//---------------------------------------------------------------------------