Ergebnis 1 bis 6 von 6
  1. #1
    NoClose Wurm
    Registriert seit
    24.09.2008
    Beiträge
    183

    Standard C++ Hex auslesen und reinschreiben

    Moin Leute,

    ich wollte mal nachfragen ob jemand weiß, wie ich aus einer Datei, gehen wir mal von *.exe aus, den Hex rauslese und neuen Hex reinschreiben kann.

    Frohe Weihnachten

    Darkmiller

  2. #2
    Kuschel-Wuschel enco Avatar von enco
    Registriert seit
    26.01.2006
    Beiträge
    1.075

    Standard

    Definiere "den Hex" ...

  3. #3
    Anfänger
    Registriert seit
    06.11.2008
    Beiträge
    16

    Standard

    Zitat Zitat von ReED
    Definiere "den Hex" ...
    Er meint in Hexadezimal denk ich mal..
    Wozu brauchst das denn?

  4. #4
    NoClose Wurm
    Registriert seit
    24.09.2008
    Beiträge
    183

    Standard

    Will meinen ersten test-crypter schreiben, wäre Sinnvoll das zu wissen

  5. #5
    Anfänger
    Registriert seit
    06.11.2008
    Beiträge
    16

    Standard

    Ich würd mal sagen Datei binär öffenen, in Hex umrechnen, verändern oder was du auch immer machen willst, neues wieder zurückrechnen und wieder reinschreiben... aber was willst du denn damit bezwecken?
    was hat das denn mit nem Crypter zutun? =D :?:

    google:

    http://forum.chip.de/c-c/binaere-dat...en-361098.html

  6. #6
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard Re: C++ Hex auslesen und reinschreiben

    Zitat Zitat von Darkmiller
    ich wollte mal nachfragen ob jemand weiß, wie ich aus einer Datei, gehen wir mal von *.exe aus, den Hex rauslese und neuen Hex reinschreiben kann.
    Denk doch mal nach.
    Was ist in einer "*.exe"? Zeichenfolgen (8 bit -> 1 byte -> 2^8 [=256] mögliche Kombinationen von Einsen und Nullen -> 0, 1, 2, ..., 255)

    Wieso wird das normalerweise im Hexadezimalsystem dargestellt? Es ist übersichtlicher... im Dezimalsystem schwankt der Zahlenwert für die Zeichen zwischen ein bis drei Stellen (zB. 3, 5, 55, 33, 163, 200, ...).
    Im Hexadezimalsystem hast du maximal zwei Stellen, es ist also einfacher zu lesen.

    Wie konvertiere ich zwischen dem Dezimal und Hexadezimalsystem? http://de.wikipedia.org/wiki/Hexadezimalsystem (Funktionsbeispiel folgt)


    Weils ja Weihnachten ist ^^:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX_HEX_STRLEN 8
    
    
    char *dec2hex(unsigned int dec)
    {
    	static const char table[] = "0123456789ABCDEF";
    	char *hex = (char *) malloc(MAX_HEX_STRLEN + 1);
    	
    	memset(hex, 0, MAX_HEX_STRLEN + 1);
    	while(dec)
    	{
    		memmove(hex + 1, hex, MAX_HEX_STRLEN);
    		*hex = table[dec % 16];
    		dec /= 16;
    	}
    	return hex;
    }
    
    void hexdump(void *buffer, unsigned int size, FILE *out)
    {
    	unsigned char *data = (unsigned char *) buffer;
    	unsigned int x;
    	unsigned int y;
    	
    	for(x = 0; x < size; x += 16)
    	{
    		for(y = 0; y < 16; y++)
    			if (x + y < size)
    				fprintf(out, "%02x ", data[x + y]);
    			else
    				fprintf(out, "   ");
    		fprintf(out, "  ");
    		for(y = 0; y < 16; y++)
    			if (data[x + y] > 31 && data[x + y] < 127 && x + y < size)
    				fprintf(out, "%c", data[x + y]);
    			else if (x + y < size)
    				fprintf(out, ".");
    		fprintf(out, "\n");
    	}
    }
    
    int main(void)
    {
    	int n = 12345;
    	char buffer[] = "4HWQH6J/%\x01Huj3H$WqwG§13\x02ZUJ7mi5L&(O%43u5$H";
    	FILE *fp = fopen("C:\\Windows\\System32\\mspaint.exe", "rb");
    	unsigned int sz;
    	char *file;
    	
    	printf("%d = %s\n", n, dec2hex(n));
    	
    	hexdump(buffer, sizeof(buffer), stdout);
    	
    	if (fp)
    	{
    		fseek(fp, 0, SEEK_END);
    		sz = ftell(fp);
    		fseek(fp, 0, SEEK_SET);
    		
    		file = (char *) malloc(sz);
    		fread(file, 1, sz, fp);
    		fclose(fp);
    		
    		hexdump(file, sz, stdout);
    	}
    	else puts("fopen failed");
    	
    	system("PAUSE > NUL");
    	return 0;
    }
    Die erste Funktion (dec2hex) habe ich nur hinzugefügt um mich später nicht der Frage stellen zu müssen "du hast ja %x von fprintf benutzt - wie macht fprintf das denn?".

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •