Skip to content

Commit fc1d634

Browse files
committed
Added ClosePipeRequest.
1 parent 389a552 commit fc1d634

File tree

4 files changed

+66
-21
lines changed

4 files changed

+66
-21
lines changed

PipeServer/Messages.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,14 @@ bool EnumerateProcessHandlesRequest::Handle(MessageClient& client)
7979

8080
for (auto handle : handles)
8181
{
82-
std::wstring path;
83-
path.resize(300);
82+
WCHAR path[PATH_MAXIMUM_LENGTH];
83+
GetModuleFileNameExW(handle, nullptr, path, PATH_MAXIMUM_LENGTH);
8484

85-
GetModuleFileNameExW(handle, nullptr, const_cast<LPWSTR>(path.data()), 300);
86-
87-
client.Send(EnumerateProcessHandlesResponse(handle, std::move(path)));
85+
client.Send(EnumerateProcessHandlesResponse(handle, path));
8886
}
8987

88+
client.Send(StatusResponse(nullptr, true));
89+
9090
return true;
9191
}
9292
//---------------------------------------------------------------------------

PipeServer/Messages.hpp

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ enum class MessageType
2222
EnumerateRemoteSectionResponse = 9,
2323
EnumerateRemoteModuleResponse = 10,
2424
EnumerateProcessHandlesRequest = 11,
25-
EnumerateProcessHandlesResponse = 12
25+
EnumerateProcessHandlesResponse = 12,
26+
ClosePipeRequest = 13
2627
};
2728
//---------------------------------------------------------------------------
2829
class IMessage
@@ -60,11 +61,13 @@ class StatusResponse : public IMessage
6061

6162
void ReadFrom(BinaryReader& reader) override
6263
{
64+
remoteId = reader.ReadIntPtr();
6365
success = reader.ReadBoolean();
6466
}
6567

6668
void WriteTo(BinaryWriter& writer) const override
6769
{
70+
writer.Write(remoteId);
6871
writer.Write(success);
6972
}
7073

@@ -90,12 +93,12 @@ class OpenProcessRequest : public IMessage
9093

9194
void ReadFrom(BinaryReader& reader) override
9295
{
93-
96+
remoteId = reader.ReadIntPtr();
9497
}
9598

9699
void WriteTo(BinaryWriter& writer) const override
97100
{
98-
101+
writer.Write(remoteId);
99102
}
100103

101104
bool Handle(MessageClient& client) override;
@@ -121,12 +124,12 @@ class CloseProcessRequest : public IMessage
121124

122125
void ReadFrom(BinaryReader& reader) override
123126
{
124-
127+
remoteId = reader.ReadIntPtr();
125128
}
126129

127130
void WriteTo(BinaryWriter& writer) const override
128131
{
129-
132+
writer.Write(remoteId);
130133
}
131134

132135
bool Handle(MessageClient& client) override;
@@ -152,12 +155,12 @@ class IsValidRequest : public IMessage
152155

153156
void ReadFrom(BinaryReader& reader) override
154157
{
155-
158+
remoteId = reader.ReadIntPtr();
156159
}
157160

158161
void WriteTo(BinaryWriter& writer) const override
159162
{
160-
163+
writer.Write(remoteId);
161164
}
162165

163166
bool Handle(MessageClient& client) override;
@@ -187,12 +190,14 @@ class ReadMemoryRequest : public IMessage
187190

188191
void ReadFrom(BinaryReader& reader) override
189192
{
193+
remoteId = reader.ReadIntPtr();
190194
address = reader.ReadIntPtr();
191195
size = reader.ReadInt32();
192196
}
193197

194198
void WriteTo(BinaryWriter& writer) const override
195199
{
200+
writer.Write(remoteId);
196201
writer.Write(address);
197202
writer.Write(size);
198203
}
@@ -224,12 +229,14 @@ class ReadMemoryResponse : public IMessage
224229

225230
void ReadFrom(BinaryReader& reader) override
226231
{
232+
remoteId = reader.ReadIntPtr();
227233
const auto size = reader.ReadInt32();
228234
data = reader.ReadBytes(size);
229235
}
230236

231237
void WriteTo(BinaryWriter& writer) const override
232238
{
239+
writer.Write(remoteId);
233240
writer.Write(static_cast<int>(data.size()));
234241
writer.Write(data.data(), 0, static_cast<int>(data.size()));
235242
}
@@ -260,13 +267,15 @@ class WriteMemoryRequest : public IMessage
260267

261268
void ReadFrom(BinaryReader& reader) override
262269
{
270+
remoteId = reader.ReadIntPtr();
263271
address = reader.ReadIntPtr();
264272
const auto size = reader.ReadInt32();
265273
data = reader.ReadBytes(size);
266274
}
267275

268276
void WriteTo(BinaryWriter& writer) const override
269277
{
278+
writer.Write(remoteId);
270279
writer.Write(address);
271280
writer.Write(static_cast<int>(data.size()));
272281
writer.Write(data.data(), 0, static_cast<int>(data.size()));
@@ -297,12 +306,12 @@ class EnumerateRemoteSectionsAndModulesRequest : public IMessage
297306

298307
void ReadFrom(BinaryReader& reader) override
299308
{
300-
309+
remoteId = reader.ReadIntPtr();
301310
}
302311

303312
void WriteTo(BinaryWriter& writer) const override
304313
{
305-
314+
writer.Write(remoteId);
306315
}
307316

308317
bool Handle(MessageClient& client) override;
@@ -342,6 +351,7 @@ class EnumerateRemoteSectionResponse : public IMessage
342351

343352
void ReadFrom(BinaryReader& reader) override
344353
{
354+
remoteId = reader.ReadIntPtr();
345355
baseAddress = reader.ReadIntPtr();
346356
size = reader.ReadIntPtr();
347357
type = static_cast<SectionType>(reader.ReadInt32());
@@ -353,6 +363,7 @@ class EnumerateRemoteSectionResponse : public IMessage
353363

354364
void WriteTo(BinaryWriter& writer) const override
355365
{
366+
writer.Write(remoteId);
356367
writer.Write(baseAddress);
357368
writer.Write(size);
358369
writer.Write(static_cast<int>(type));
@@ -396,13 +407,15 @@ class EnumerateRemoteModuleResponse : public IMessage
396407

397408
void ReadFrom(BinaryReader& reader) override
398409
{
410+
remoteId = reader.ReadIntPtr();
399411
baseAddress = reader.ReadIntPtr();
400412
size = reader.ReadIntPtr();
401413
modulePath = reader.ReadString();
402414
}
403415

404416
void WriteTo(BinaryWriter& writer) const override
405417
{
418+
writer.Write(remoteId);
406419
writer.Write(baseAddress);
407420
writer.Write(size);
408421
writer.Write(modulePath);
@@ -436,7 +449,7 @@ class EnumerateProcessHandlesRequest : public IMessage
436449
class EnumerateProcessHandlesResponse : public IMessage
437450
{
438451
public:
439-
MessageType GetMessageType() const override { return MessageType::EnumerateProcessHandlesRequest; }
452+
MessageType GetMessageType() const override { return MessageType::EnumerateProcessHandlesResponse; }
440453

441454
RC_Pointer GetRemoteId() const { return remoteId; }
442455
const std::wstring& GetPath() const { return path; }
@@ -467,3 +480,22 @@ class EnumerateProcessHandlesResponse : public IMessage
467480
std::wstring path;
468481
};
469482
//---------------------------------------------------------------------------
483+
class ClosePipeRequest : public IMessage
484+
{
485+
public:
486+
MessageType GetMessageType() const override { return MessageType::ClosePipeRequest; }
487+
488+
void ReadFrom(BinaryReader& reader) override
489+
{
490+
491+
}
492+
493+
void WriteTo(BinaryWriter& writer) const override
494+
{
495+
496+
}
497+
498+
bool Handle(MessageClient& client) override { return false; }
499+
};
500+
//---------------------------------------------------------------------------
501+
//

PipeServer/dllmain.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ namespace fs = std::experimental::filesystem;
88
std::wstring CreatePipeName()
99
{
1010
fs::path name(L"ReClass.NET_HandleAbuser");
11-
#ifdef _WIN64
12-
name.append(L"x64");
13-
#else
14-
name.append(L"x86");
15-
#endif
1611

1712
wchar_t szFileName[MAX_PATH];
1813
GetModuleFileNameW(nullptr, szFileName, MAX_PATH);
@@ -31,6 +26,8 @@ MessageClient CreatePipeServer(NamedPipeServerStream& pipe)
3126
client.RegisterMessage<ReadMemoryRequest>();
3227
client.RegisterMessage<WriteMemoryRequest>();
3328
client.RegisterMessage<EnumerateRemoteSectionsAndModulesRequest>();
29+
client.RegisterMessage<EnumerateProcessHandlesRequest>();
30+
client.RegisterMessage<ClosePipeRequest>();
3431

3532
return client;
3633
}

Plugin/Messages.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ internal enum MessageType
1818
EnumerateRemoteSectionResponse = 9,
1919
EnumerateRemoteModuleResponse = 10,
2020
EnumerateProcessHandlesRequest = 11,
21-
EnumerateProcessHandlesResponse = 12
21+
EnumerateProcessHandlesResponse = 12,
22+
ClosePipeRequest = 13
2223
}
2324

2425
internal interface IMessage
@@ -432,4 +433,19 @@ public void WriteTo(BinaryWriter writer)
432433
writer.Write(Path);
433434
}
434435
}
436+
437+
internal class ClosePipeRequest : IMessage
438+
{
439+
public MessageType MessageType => MessageType.ClosePipeRequest;
440+
441+
public void ReadFrom(BinaryReader reader)
442+
{
443+
444+
}
445+
446+
public void WriteTo(BinaryWriter writer)
447+
{
448+
449+
}
450+
}
435451
}

0 commit comments

Comments
 (0)