Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente | |||
|
tutoriel:comment_utiliser_mingw32_pour_faire_des_executables_windows [Le 21/08/2024, 00:34] 74.56.181.71 [Comment utiliser MingW[32|64] pour faire des exécutables Windows ?] |
tutoriel:comment_utiliser_mingw32_pour_faire_des_executables_windows [Le 21/08/2024, 21:32] (Version actuelle) Amiralgaby ancienne révision (Le 24/05/2024, 14:08) restaurée |
||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| ---- | ---- | ||
| + | ====== Comment utiliser MingW[32|64] pour faire des exécutables Windows ? ====== | ||
| + | Il peut arriver que pour certaines raisons l'on souhaite créer des exécutables pour Windows depuis Linux. La solution est d'utiliser le programme MingW. | ||
| - | #include <iostream> | + | MingW est le portage de GCC sur Windows. MinGW est aussi disponible pour Linux. Il sert, sous ce système, à compiler des applications pour Windows. |
| - | #include <windows.h> | + | |
| - | void WriteMemory(HANDLE process, DWORD address, int value) { | + | //Voir [[wpfr>MinGW|MinGW (Wikipédia)]]// |
| - | DWORD oldProtect; | + | |
| - | VirtualProtectEx(process, (LPVOID)address, sizeof(int), PAGE_EXECUTE_READWRITE, &oldProtect); | + | |
| - | WriteProcessMemory(process, (LPVOID)address, &value, sizeof(int), NULL); | + | |
| - | VirtualProtectEx(process, (LPVOID)address, sizeof(int), oldProtect, &oldProtect); | + | |
| - | } | + | |
| - | int main() { | + | Pour suivre ce tutoriel vous devez savoir |
| - | DWORD pid; // ID de processus du jeu | + | [[tutoriel:console_ligne_de_commande|vous déplacer dans l'arborescence en ligne de commande]]. |
| - | HANDLE process; | + | |
| - | DWORD ammoAddress = 0x00ABCDEF; // Adresse mémoire trouvée avec Cheat Engine | + | |
| - | int infiniteAmmoValue = 9999; // Valeur pour munitions infinies | + | |
| - | std::cout << "Entrez l'ID du processus de Bodycam : "; | + | Nous allons uniquement utiliser du C ici, pour du C++ remplacer **gcc** par **g++**. |
| - | std::cin >> pid; | + | |
| - | // Ouvrir le processus du jeu | + | Plan du tutoriel : |
| - | process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); | + | * Code en C à avoir pour la compilation |
| - | + | * Installation de MingW64 | |
| - | if (process == NULL) { | + | * Compilation |
| - | std::cerr << "Échec de l'ouverture du processus." << std::endl; | + | * Exécution du programme créé |
| - | return 1; | + | * Supplément : faire un make file pour faciliter la commande de build |
| - | } | + | |
| - | + | ||
| - | // Écrire la valeur infinie dans la mémoire | + | |
| - | WriteMemory(process, ammoAddress, infiniteAmmoValue); | + | |
| - | + | ||
| - | CloseHandle(process); | + | |
| - | + | ||
| - | std::cout << "Munitions infinies activées." << std::endl; | + | |
| - | return 0; | + | |
| - | } | + | |
| ===== Code à avoir sous la main ===== | ===== Code à avoir sous la main ===== | ||
| Ligne 77: | Ligne 59: | ||
| sudo apt install gcc-mingw-w64 | sudo apt install gcc-mingw-w64 | ||
| - | x86_64-w64-mingw32-gcc -o bonjour.exe main.c | ||
| ==== Compiler en ligne de commande ==== | ==== Compiler en ligne de commande ==== | ||
| x86_64-w64-mingw32-gcc -o bonjour.exe main.c | x86_64-w64-mingw32-gcc -o bonjour.exe main.c | ||