PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Datei (Server) an selbsgecodeten spreader hängen ?



|)4NT3
09.06.2010, 16:34
Hallo
ich bin derzeit dabei einen Spreader zu coden, leider ohne GUI (beherrsche ich nicht) sondern nur als exe.
Also, man kann nur Änderungen/Einstellungen an der source vornehmen !

Nu weiß ich allerdings nicht wie ich einen Server damit "binde" ?
Also erst soll mein Spreader ausgeführt werden, der den Server verteilt, Autostarteinträge macht usw. dann soll der Server gestartet werden.

Hoffe jemand hat einen kleinen schubser in die richtige Richtung für mich :p

Ps:
FÜR DAS GANZE MÖCHTE ICH ALLERDINGS KEINEN EXTRA BINDER VERWENDEN !

MFG DANTE

Steiger_mp
09.06.2010, 16:35
als resource anhängen z.B.

|)4NT3
09.06.2010, 16:42
wie mache ich ich das ?
ich kann ja keine exe in einen Quellcode packen ?! Oder doch ?!

Saedelaere
09.06.2010, 16:55
Mit dem ResHacker als Resource anhängen und dann im Programm mit FindResource() SizeOfResource() LoadResource() und LockResource() auslesen.

|)4NT3
09.06.2010, 17:04
aahhhhh Dankeschön !!!
sowas habe ich gesucht :-)

deagleD
20.06.2010, 12:59
Heyho,

Beschäftige mich auch gerade mit dieser Problematik und habe dazu ne kleine Frage:
Wenn ich die Ressource via ResHacker mit
Type: EXE
Name: 30
Language: 1033
hinzufüge, welchen Type muss ich dann in der FindResource Funktion angeben?
Aktueller Code:



int res()
{
HRSRC hRes = FindResource(NULL, 30, ???);
if (!hRes)
{
cout << "Error" << endl;
return 0;
}
}


Die MSDN-Hilfe spuckt mir zwar Resource-Types aus, die jedoch alle nicht wirklich auf eine .exe Anwendung passen :/

nom
20.06.2010, 13:09
also wenn du sie mit dem Reseditor von VB6 z.B. ranhängst isses "CUSTOM" aber ich tippe einfach auf RCDATA

inout
20.06.2010, 13:10
Die MSDN-Hilfe spuckt mir zwar Resource-Types aus, die jedoch alle nicht wirklich auf eine .exe Anwendung passen :/
RT_RCDATA - Application-defined resource (raw data).sieht doch gut aus ;)

deagleD
20.06.2010, 13:24
RT_RCDATA hatte ich auch im Visier:


int res()
{
string test = "klo";
HRSRC hRes = FindResource(NULL, test.c_str(), RT_RCDATA);
if (!hRes)
{
cout << "Error" << endl;
return 0;
}
}

Nur meckert er immer an dem 2ten Parameter rum... egal ob ich nur 60 oder "60" oder wayne oder "wayne" angebe...

error C2664: 'FindResourceW': Konvertierung des Parameters 2 von 'const char *' in 'LPCWSTR' nicht möglich

inout
20.06.2010, 13:26
Dann musst du den Zeichensatz in deinen Projektoptionen von WideChar bzw. Unicode auf Multibyte umstellen oder FindRessourceA() benutzen.

blackberry
20.06.2010, 13:28
HRSRC hRes = FindResource(NULL, L"klo", RT_RCDATA);

deagleD
20.06.2010, 13:29
Der Hammer! Danke es klappt... Woher weisst du sowas / wie könnte ich auf sowas kommen :/

Edit: Bezogen auf inout und BlackBerry

blackberry
20.06.2010, 13:35
Wie man darauf kommt? Weil LPCWSTR ein Datentyp für 16bit UNICODE Zeichen ist.
Siehe: Windows Data Types (Windows) (http://msdn.microsoft.com/en-us/library/aa383751%28VS.85%29.aspx)

Dewenn
20.06.2010, 13:51
Sieht doch bisher gut aus :D

deagleD
20.06.2010, 14:01
Das builden läuft fehlerfrei, wenn ich jedoch z.B. calc.exe mit Type: EXE, Name: K und Lang.: 1033 anhänge und das Programm starte bekomme ich in der Console meinen "Error". Es muss doch entweder etwas am Typ oder am Namen der Resource falsch sein oder ?

Code:

int res()
{
HRSRC hRes = FindResource(NULL, "K", RT_RCDATA);
if (hRes == NULL)
{
cout << "Error" << endl;
return 0;
}
else
{
cout << "Good" << endl;
}
HANDLE hLoad = LoadResource(NULL, hRes);
if (!hLoad)
{
cout << "Load Error" << endl;
return 0;
}
}

inout
20.06.2010, 14:08
Lass dir mal mit GetLastError() (http://msdn.microsoft.com/en-us/library/ms679360%28v=VS.85%29.aspx) den Fehlercode ausgeben und schau hier (http://msdn.microsoft.com/en-us/library/ms681381%28v=VS.85%29.aspx) nach, was dieser bedeutet.

deagleD
20.06.2010, 14:16
The specified resource type cannot be found in the image file.Also liegt es am Typ. Ich werde mal ein bisschen mit den Typen experimentieren...

Edit: Keine Chance... Egal wie ich die .exe mit dem ResHacker anfüge, ich bekomme immer Fehlercode 1813 :/

blackberry
20.06.2010, 16:30
Ich will mal nicht so sein und hab dir ein Beispiel gemacht
carrier.c

#include <stdio.h>
#include <windows.h>
#include "carrier.h"


int main(void)
{
HRSRC hsrc;
char *psrc;

if (!(hsrc = FindResource(0, MAKEINTRESOURCE(ID_EXE), RT_RCDATA)))
{
printf("Fehler: FindResource\n");
return 1;
}

if (!(psrc = LoadResource(0, hsrc)))
{
printf("Fehler: LoadResource\n");
return 2;
}

if (*((short *)psrc) != 0x5A4D) // psrc != DOS Header magic number?
{
printf("Fehler: Resource != EXE\n");
return 3;
}

printf("psrc = Zeiger auf calc.exe im Speicher\n");

return 0;
}

carrier.h

#ifndef CARRIER_H
#define CARRIER_H

// Resource-ID von "calc.exe"
#define ID_EXE 110

#endif

carrier.rc

#include <windows.h>
#include "carrier.h"

// calc.exe als res hinzufügen
// id = ID_EXE
// RCDATA = binary raw data
// http://msdn.microsoft.com/en-us/library/aa381039%28v=VS.85%29.aspx
ID_EXE RCDATA "C:/Windows/System32/calc.exe"

make.cmd (zum Compilieren; erfordert MinGW32 samt richtigen Pfaden im Enviroment):

@ECHO OFF

windres.exe -i carrier.rc --input-format=rc -O coff -o carrier.res
gcc.exe -c -o carrier.o carrier.c
gcc.exe -o carrier.exe carrier.o carrier.res

IF EXIST carrier.o DEL carrier.o
IF EXIST carrier.res DEL carrier.res

deagleD
20.06.2010, 17:47
Top nun hab ichs nach ein bisschen basteln geschafft :D
Danke an BlackBerry... In Visual Studio 08 ist das mit den Ressouren, wenn man sich nicht auskennt, verdammt schwer gemacht ;) Der gute alte Texteditor und MinGW haben doch vorteile :D