Jump to content
×
×
  • Create New...

Lire la Mémoire


Poulais4

Recommended Posts

Niveau requis Débutant

Temps estimé : 30 minutes

 

Ouais, un autre article axé 'newbie', que voulez-vous, faut pas s'attendre à un tutoriel sur l'exploitation UMA sous freebsd, j'mappelle pas overcl0k. Bref, pour expliquer ça vite fait, chaque programme utilise de la mémoire, ça vous le savez, certains programme, utilisent cette mémoire pour stocker des informations importantes, tels que des mots de passe et j'en passe (la rime de foo © int_0×80 ), cet article traitera donc, l'écriture d'un dumper (anglicisme nécessaire) de mémoire.

 

Révélation

 

Pour commencer notre dump l'on a besoin du numéro d'identification du programme victime.

#include 
#include 

void main(int argc,char *argv[])
{
//déclaration de quelques vars

char buf[24000]; // ceci est le buffer, où la mémoire est stockée.
DWORD bufsize = sizeof(buf); // ceci est le nombre de bytes que l'on va utiliser.
DWORD hPID=0; // Un PID standard. 
HANDLE hReadp; // Va tenir ( sens figuré pour les cons qui auront pas compris ) la rentrée de la fonction lulz.

printf("Numéro d'identification du programme (PID) ");
scanf("%d",&hPID);

hReadp = lulz(PROCESS_QUERY_INFORMATION | 
PROCESS_VM_READ,FALSE, hPID); // La fonction lulz se chargera d'ouvrir note programme.

if(NULL != hReadp)
{

int ret = ReadProcessMemory(hReadp,(LPCVOID)0x400000, &buf, 
bufsize,NULL);

 if(ret<=0)

 {
  printf("échecbr0 %d\n",GetLastError());
 }

  if(ret>0)
  {


   for(int e=0;e<=sizeof(buf);e++)
   printf("%c",buf[e]);    // Le coup de maestro, on echo notre résultat magique. Le tour est joué.
  }
}

CloseHandle(hReadp); 
}
Le code étant relativement simple, je n'ai pris le temps que de commenter les lignes les plus cruciales.

 

 
Cordialement,
Hey hey
Link to comment
  • 4 weeks later...
  • Replies 10
  • Created
  • Last Reply

Top Posters In This Topic

  • 1 year later...

le but du programme est surtout une dérision pour le c/c++ pour t'aider a développer ex:.. un programme pour récupérer la musique de deezer ... la musique de spotify ... récupérer les fichier de certain jeux ... cracker une application ....

donc très utile !!

Link to comment
  • 2 years later...

Je déterre ce post au risque de prendre un avertissement, mais je me doit de rétablir la vérité : Ce code est dégueulasse !

 

#include 
#include 
#include 


int		main()
{
int    ret;
int    i;
char   *buf;
DWORD  hPID; // PID (Processus ID)
HANDLE hReadp;

i = hPID = 0;
printf("Numéro d'identification du programme (PID) ");
scanf("%d",&hPID);
if ((buf = malloc(sizeof(char *) * 24000 + 1)) == NULL)	// Allocation de la taille mémoire à la chaine buf
	return (-1);
hReadp = lulz(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE, hPID); // Prend le return de la fonction lulz()

if (hReadp != NULL)
{
	if (ret = ReadProcessMemory(hReadp,(LPCVOID)0x400000, &buf, sizeof(buf), NULL)) <= 0)
	{
		printf("Erreur : Can't Read Process Memory\n");
		return (-1);
	}
	else
	{
		while (i <= sizeof(buff))
			printf("%c", buf[i++]);
	}
}
CloseHandle(hReadp);
return (0);
}

 

Voilà qui est plus propre, il n'a pas été testé mais bon c'est déjà mieux de partir avec de bonnes syntaxes et bases

  • J'adore 1

XIII

Link to comment
  • 1 month later...
  • 6 months later...

Je déterre ce sujet une fois de plus car inclure directement windows.h est une mauvaise pratique, il serait plus judicieux d'utiliser une macro pour rentre le code portatif (osx, linux, windaube):

 

#if defined(_WIN32) || defined(_WIN64) || defined(__CYGWIN__)
 #include 
#else
 #include  /* Linux et OSX utilisent le même header */
#endif

 

Utiliser le C c'est bien, le rendre cross-plateform c'est mieux ;)

Link to comment

Ouais mais ça n a aucun intérêt de mettre les header Unix dans un code qui utilise des fonctions de l API Windows...

ReadProcessMemory, les HANDLE c'est des trucs specifiques a Windows. Ça sera jamais cross platform.

 

Je suis d'accord qu'il vaut mieux mettre des ifdef, mais dans le cas présent, c'est inutile et ca donne du boulot inutile au préprocesseur (même si ça pour le coup c'est complètement négligeable)

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Flux d'Activité

    1. 29

      Rodnia.net | PVM | International | The Great Conqueror |

    2. 0

      [Funding/Incubator Program] W Combinator

    3. 25

      File Bvural41 (PAYANT) lvl 1-120 - Multi-Language

    4. 25

      File Bvural41 (PAYANT) lvl 1-120 - Multi-Language

    5. 9

      Canal général

    6. 9

      Canal général

    7. 9

      Canal général

    8. 9

      Canal général

    9. 9

      Canal général

  • Recently Browsing

    No registered users viewing this page.

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.