Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

[C] Binär in eine Datei schreiben -> ausführbare .com Datei [ERLEDIGT]

Diskussion: [C] Binär in eine Datei schreiben -> ausführbare .com Datei [ERLEDIGT] im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi zu allen, ich möchte mir ein Programm schreiben das eine .com Datei erstellt. Also, als erstes habe ich ...

Antwort
Alt 02.12.07, 18:19   #1 (permalink)
 
Registriert seit: 02.07.06
_D4rk_ Leistung: Facit NTK
Likes: 0
[C] Binär in eine Datei schreiben -> ausführbare .com Datei [ERLEDIGT]

Anzeige

Hi zu allen,
ich möchte mir ein Programm schreiben das eine .com Datei erstellt.
Also, als erstes habe ich eine kleine ASM Datei geschrieben und diese Assembeliert (<- heißt das echt so?):

Code:
; Dies ist ein .asm Datei für den Assembler FASM
ORG 100h
    Start:
    mov cx, 0BB8h
    marke:
    mov ax, 1h
    push ax
    LOOP marke
    int 21h
Danach habe ich die Datei (die .com) mit einem Hexeditor geöffnet und habe folgendes vorgefunden:
Code:
B9B8 0BB8 0100 50E2 FACD 21
Darauffolgend habe ich die Hexzahlen in Binärzehlen umgewandelt (z.B. B9 = 10111001)

Anschließend habe ich ich diesen ANSI C Quellcode verfasst:
Code:
/* Dies ist eine gekürzte Version */

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
	FILE* fp_com;
	char str_array_erstellen[]="1011100110111000000010111011100000000001000000000101000011100010111110101100110100100001";


		fp_com = fopen("test.com", "a+b");
		
		fwrite(&str_array_erstellen, sizeof(str_array_erstellen), 1, fp_com);
		fclose(fp_com);

	return(0);
}
str_array_erstellen stellt dabei den Binärcode da den ich aus dem umgerechneten Hexdump habe.

Wenn ich die test.com jetzt aufrufe kommt ein Fehler (was für ein Fehler das ist ist jetzt nicht von Interesse.)

Also habe ich die Datei mit dem Hexeditor geöffnet. Uns siehe da, die einsen und nullen wurden nicht auf Binärer Ebene in die Datei geschrieben sondern ganz normal wie bei einem a+ ich habe die Datei aber mit a+b geöffnet.
Jetzt frag ich mich was schief gelaufen ist, oder besser gesagt ich frag das jetzt euch.

ich hoffe hier kann/möchte mir jemand helfen. danke im voraus.

MfG _D4rK_
_D4rk_ ist offline   Mit Zitat antworten
Alt 02.12.07, 18:56   #2 (permalink)
 
Registriert seit: 06.05.04
RedEagle Leistung: Facit NTK
RedEagle eine Nachricht über ICQ schicken
Likes: 0
Standard

Du kannst nur byteweise in eine datei schreiben, und dass hexadezimal:

Code:
/* Dies ist eine gekürzte Version */

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
	FILE* fp_com;
	int code[]=0xB9, 0xB8, 0x0B, 0xB8, 0x01, 0x00, 0x50, 0xE2, 0xFA, 0xCD, 0x21;


		fp_com = fopen("test.com", "a+b");
		
		fwrite(&code, sizeof(code), 1, fp_com);
		fclose(fp_com);

	return(0);
}
RedEagle ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 02.12.07, 18:57   #3 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Du musst schon dem Compiler sagen, dass Du die Ausgabe gerne "Raw" hättest. Z.B Shellcode mäßig
Code:
char str_array_erstellen[]="\xB9\xB8\x0B\xB8\x01\x00\x50\xE2\xFA\xCD\x21";


		fp_com = fopen("test.com", "a+b");

		fwrite(&str_array_erstellen, sizeof(str_array_erstellen)-1, 1, fp_com);
sizeof(str_array_erstellen)-1 = um die terminierende 0 nicht mit in die Datei zu schreiben.
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 03.12.07, 16:15   #4 (permalink)
Themenstarter
 
Registriert seit: 02.07.06
_D4rk_ Leistung: Facit NTK
Likes: 0
Standard

Funktioniert, thx.
_D4rk_ ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » [C] Binär in eine Datei schreiben -> ausführbare .com Datei [ERLEDIGT]
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Java ausführbare Datei per Eclipse machen Problem frankred Code Kitchen 2 27.06.08 09:11
Loginsystem in VC++ - In Datei schreiben und auslesen sym4nt3c Code Kitchen 6 01.12.06 20:13
[C++] Programm will nicht in Datei schreiben reaLInsanity Code Kitchen 2 23.08.06 00:13
[C]in datei schreiben. shUnderdog Code Kitchen 7 13.08.06 17:31
.dat datei mit binär zeichen Neomatrix Cryptography & Encryption 12 12.05.05 16:12


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61