Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Datei (Server) an selbsgecodeten spreader hängen ?
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.
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.
aahhhhh Dankeschön !!!
sowas habe ich gesucht :-)
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 :/
also wenn du sie mit dem Reseditor von VB6 z.B. ranhängst isses "CUSTOM" aber ich tippe einfach auf RCDATA
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 ;)
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
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);
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)
Sieht doch bisher gut aus :D
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;
}
}
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.
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
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
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.