Techniques d'injection de DLL et de hooking avec la bibliothèque Detours
L'injection de code est une méthode fondamentale en ingénierie logicielle pour modifier le comportement d'un processus sans en posséder le code source. Bien que de nombreuses techniques existent, nous allons nous concantrer ici sur deux approches majeures : l'injection via l'API Windows standard et l'utilisation de la bibliothèque Mircosoft Det ...
Publié le 9 août à 09h22
Analyse des examens de programmation C++ GESP : Niveau 2 (Mars 2024)
Problème 1 : Calcul de Produit
Description
Étant donné un ensemble d'entiers positifs, calculez leur produit. Si le produit dépasse 1 000 000, affichez ">1000000". Sinon, affichez le produit calculé.
Entrée
La première ligne contient un entier n, le nombre d'entiers. Les n lignes suivantes contiennent chacune un entier a.
Sortie
Af ...
Publié le 7 août à 16h52
Algorithmes Gloutons en C++ : Résolution de Problèmes Avancés
La station-service
Vous disposez de n stations-service sur un circuit circulaire. À la station i, le réservoir peut recevoir gas[i] litres de carburant, et le coût pour se rendre de la station i à la station i+1 est de cost[i] litres. Vous commencez avec un réservoir vide au départ d'une des stations. L'objectif est de trouver l'index de la ...
Publié le 6 août à 14h10
Gestion des erreurs avec argparse : Créer des applications en ligne de commande robustes
argparse est une bibliothèque moderne de parsing d'arguments en C++ qui offre aux développeurs un mécanisme de gestion des erreurs puissant et flexible. Lors de la création d'applications en ligne de commande, la gestion adéquate des erreurs de saisie utilisateur est essentielle pour garantir la robustesse de l'application. Cet article détaille ...
Publié le 4 août à 10h13
Tutoriel du projet open source CodeLite
Introduction à CodeLite
CodeLite est un environnement de développement intégré (IDE) gratuit, open-source et multiplateforme, spécialement conçu pour les langages de programmation C, C++, PHP et JavaScript (orienté développeurs backend Node.js). Il est disponible sur Windows, macOS et Linux, et offre un ensemble riche de fonctionnalités et d'ou ...
Publié le 4 août à 04h00
Serveur et client écho avec brpc : diagnostic d'une réponse manquante après modification du paquet
Définition du service Protobuf
Commencez par décrire l'interface dans un fichier echo.proto. L'option cc_generic_services est nécessaire pour que brpc génère les stubs C++.
syntax = "proto2";
option cc_generic_services = true;
message PacketRequest {
required string payload = 1;
}
message PacketResponse {
required string pa ...
Publié le 4 août à 00h51
Conception d'une Pile Supportant la Récupération du Minimum en Temps Constant
La structure de données de type pile (Stack) est un composant fondamental en informatique, offrant des opérations telles que l'insertion (push), la suppression (pop) et la consultation de l'élément au sommet (top), le tout avec une complexité temporelle de O(1). Cependant, un besoin fréquent dans diverses applications, comme l'évaluation d'expr ...
Publié le 2 août à 23h02
Comparaison entre Synchronicité et Asynchronicité, ainsi que Blocage et Non-blocage
1. Synchronicité (Synchronous)
Définition: Après avoir envoyé une requête, l'appelant doit attendre la fin de celle-ci avant de pouvoir continuer.
Caractéristiques:
L'exécution est séquentielle.
L'appelant attend activement le résultat.
Tout le temps d'attente est imputé à l'appelant.
int resultat = executeTache(); // Attend jusqu'à ce que ...
Publié le 2 août à 19h22
Calcul du nombre de solutions pour le problème du sac à dos 0/1
Le problème du sac à dos 0/1 est un défi classique en programmation dynamique où il s'agit de sélectionner un sous-ensemble d'objets, chacun ayant un poids et une valeur, pour les placer dans un sac à dos de capacité limitée. La particularité "0/1" indique que chaque objet ne peut être pris qu'une seule fois ou pas du tout. Cet articl ...
Publié le 2 août à 12h26
Recherche dichotomique dans un tableau trié
Problème (LeetCode 704)
Étant donné un tableau d'entiers nums trié par ordre croissant contenant n éléments, et un entier target, écrivez une fonction qui recherche target dans nums. Si target existe, retournez son indice ; sinon, retournez -1.
Exemple 1 :
Entrée : nums = [-1,0,3,5,9,12], target = 9
Sortie : 4
Explication : La valeur 9 se trouv ...
Publié le 2 août à 07h13