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 |