PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit lesen aus exe



]=-antr4xx-=[
22.11.2007, 11:02
das hier soll mal ein Stub von mir werden, um anzufangen, soll sich die Exe-Datei mal selbst kopieren, geht aber nicht, kann mir einer helfen?

PS: Ich weiss, dass daran noch viel geändert werden muss, damit es ein packer wird, aber hier übe ich das Auslesen aus einer Exe...

/*test.c*/

#include <stdio.h>

int main(int argc, char *argv[])
{
FILE *me, *to;
char c;

printf("argv[0] = %s\n", *argv);

me = fopen(*argv, "r");
if(me == NULL)
{
fprintf(stderr, "Couldn' t open source file...");
return 1;
}

to = fopen("C:\\test.exe", "w");
if(to == NULL)
{
fprintf(stderr, "Couldn' t open destination file...");
return 1;
}

while((c = fgetc(me)) != EOF)
{
fputc(c, to);
printf("%c", c);
}




}[/quote]

l0dsb
22.11.2007, 12:06
Was geht denn genau nicht?

]=-antr4xx-=[
22.11.2007, 16:07
erstens wird die test.exe nur 1 kB gross, das eigentliche Programm ist 17 kB gross.
Inhalt der test.exe mit Text-Editor betrachtet:

MZ?  
zweitens muss ich in die konsole den kompletten pfad eingeben, sonst geht es auch nicht, da bräuchte ich auch eine bessere Lösung.

l0dsb
22.11.2007, 16:21
me = fopen(*argv, "r");
wird zu

me = fopen(*argv, "rb");

Du musst die Datei binär einlesen, sonst bleibt es bei der ersten binären Null (00) stehen. :)

Wenn es nicht geht, wieder posten. ^^

zao
22.11.2007, 18:25
was f0gx sagt ist richtig du musst das ganze auf der binären ebene machen. ich würde auch an deiner stelle das ganze mit fstreams aus C machen, funktioniert aber in C++ noch genauso gut. Ich hab auchmal so versucht nen Builder mit Stub etc zu schreiben, ist aber wahnsinnig umständlich, mein lieber f0gx hat mir da was viel tollererereres gezeigt xD

mfg

zao

]=-antr4xx-=[
23.11.2007, 12:04
ich würde auch an deiner stelle das ganze mit fstreams aus C machen
du meinst aus C++?


mein lieber f0gx hat mir da was viel tollererereres gezeigt xD
Darfst du mir das auch verraten??xD

eigentlcih hatte ich mir das so vorgestellt, nachher in das letzte byte des stubs zu schreiben, wie lange die aufgenommene Datei ist, dann den zeiger zurückspulen, von da aus extrahieren, und mit system("trojaner.exe") ausführen...

l0dsb
23.11.2007, 12:26
Darfst du mir das auch verraten??xD
Es kommt bald ein Tutorial dazu. :) Immer Geduld.

]=-antr4xx-=[
23.11.2007, 12:57
OK, vielen Dank euch beiden...