Seregon/Hermes

Hermes/Dyforge is a program written in c++ allows you to inject a dll that can analyze all processes in a program, can be used for mod and reverse engeneering

C/3.8 KB/No license
DyForge/main.cpp
Hermes / DyForge / main.cpp
1#include <iostream>
2#include <string>
3#include <windows.h>
4#include "DyMain.h"
5#include "DyHexInject.h"
6 
7int main(int argc, char* argv[]) {
8 std::cout << "DyForge v1.0.0 - Custom Module Loader" << std::endl;
9 std::cout << "--------------------------------" << std::endl;
10 
11 // Inizializza DyMain
12 if (!Initialize()) {
13 std::cerr << "Errore durante l'inizializzazione di DyMain" << std::endl;
14 return 1;
15 }
16 
17 std::cout << "DyMain inizializzato correttamente" << std::endl;
18 
19 // Menu principale
20 while (true) {
21 std::cout << "\nMenu:" << std::endl;
22 std::cout << "1. Carica modulo" << std::endl;
23 std::cout << "2. Scarica modulo" << std::endl;
24 std::cout << "3. Lista moduli" << std::endl;
25 std::cout << "4. Esci" << std::endl;
26 std::cout << "\nScelta: ";
27 
28 int scelta;
29 std::cin >> scelta;
30 std::cin.ignore();
31 
32 switch (scelta) {
33 case 1: {
34 std::cout << "Inserisci il percorso del modulo: ";
35 std::string path;
36 std::getline(std::cin, path);
37
38 if (WriteCommand(("LOAD_MOD " + path).c_str(), path.length() + 9)) {
39 std::cout << "Comando inviato correttamente" << std::endl;
40 } else {
41 std::cerr << "Errore nell'invio del comando" << std::endl;
42 }
43 break;
44 }
45 case 2: {
46 std::cout << "Inserisci il nome del modulo: ";
47 std::string name;
48 std::getline(std::cin, name);
49
50 if (WriteCommand(("UNLOAD_MOD " + name).c_str(), name.length() + 11)) {
51 std::cout << "Comando inviato correttamente" << std::endl;
52 } else {
53 std::cerr << "Errore nell'invio del comando" << std::endl;
54 }
55 break;
56 }
57 case 3: {
58 if (WriteCommand("LIST_MODS", 9)) {
59 // Leggi lo stato
60 char buffer[4096];
61 size_t bytesRead;
62 if (ReadState(buffer, sizeof(buffer), &bytesRead)) {
63 std::cout << "Lista moduli:" << std::endl;
64 std::cout << std::string(buffer, bytesRead) << std::endl;
65 } else {
66 std::cerr << "Errore nella lettura dello stato" << std::endl;
67 }
68 } else {
69 std::cerr << "Errore nell'invio del comando" << std::endl;
70 }
71 break;
72 }
73 case 4: {
74 // Cleanup
75 Cleanup();
76 return 0;
77 }
78 default: {
79 std::cout << "Scelta non valida" << std::endl;
80 break;
81 }
82 }
83 }
84 
85 return 0;
86}