Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - includere un file in un eseguibile
Forum - C/C++ - includere un file in un eseguibile

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 18:22
Sabato, 10/04/2010
Questo topic è stato chiuso dal moderatore

Salve a tutti. Sono riuscito a inglobare in un eseguibile un altro file semplicemente inserendo nel file WindowsResources.rc la riga
Codice sorgente - presumibilmente Plain Text

  1. programSong MP3File "Into the pit.mp3"


Ora come faccio ad usarlo dentro l'eseguibile, ad esempio copiarlo in un altra cartella?

P.S.: ho provato sia con
Codice sorgente - presumibilmente Plain Text

  1. CopyFile("programSong ", "c:\\into.mp3", TRUE);


che con
Codice sorgente - presumibilmente Plain Text

  1. char* fileName = getDirectoryNameOfCurrentProcess();
  2. fileName = addCharStringToCharString(fileName , "\\Into The pit.mp3");
  3. CopyFile(fileName , "c:\\into.mp3", TRUE);


ma niente

Ultima modifica effettuata da robrock80 il 10/04/2010 alle 18:23
PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:17
Sabato, 10/04/2010
Non capirò mai perchè insistete a volere inserire nell'eseguibile un file, per poi estrarlo.

E' assolutamente inutile e non fate altro che perdere tempo e scrivere inutile codice.

Distribuisci il file insieme all'eseguibile.

P.S. In ogni caso, devi usare le opportune API per accedere alle risorse

FindResource
http://msdn.microsoft.com/en-us/library/ms648042(VS.85).aspx

LoadResource
http://msdn.microsoft.com/en-us/library/ms648046(v=VS.85). ...

e

LockResource
http://msdn.microsoft.com/en-us/library/ms648047(v=VS.85). ...

Ultima modifica effettuata da nessuno il 10/04/2010 alle 19:41


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 19:42
Sabato, 10/04/2010
E se volessi fare una DLL injection??? Ricordi quella volta che mi parlasti dell'API hooking? Beh, grazie alle librerie Detours di Microsoft sono veramente a un passo. Comunque sono andato avanti nell'inclusione di risorse ma sono bloccato di nuovo, Questo è il nuovo codice

File WindowsResources.rc
Codice sorgente - presumibilmente C/C++

  1. #include "resource.h"
  2.  
  3. file_01        BINARY   "Into the pit.mp3"



file resource.h
Codice sorgente - presumibilmente C++

  1. #ifndef RESOURCE_H_
  2. #define RESOURCE_H_
  3.  
  4.         #define file_01 120
  5. #endif



file Main.c
Codice sorgente - presumibilmente C#

  1. bool extractResource(const HINSTANCE hInstance, WORD resourceID, LPCTSTR szOutputFilename){
  2.  
  3.         bool bSuccess = false;
  4.         HRSRC hResource = FindResource(hInstance, MAKEINTRESOURCE(resourceID), _T("BINARY"));
  5.         if (hResource == NULL) {
  6.         MessageBox (NULL, "Error in Resource Finding !!.. ", "FindResource Error", 0) ;
  7.         }
  8.  
  9.         HGLOBAL hFileResource = LoadResource(hInstance, hResource);
  10.  
  11.                         LPVOID lpFile = LockResource(hFileResource);
  12.         DWORD dwSize = SizeofResource(hInstance, hResource);
  13.  
  14.                         HANDLE hFile = CreateFile(szOutputFilename, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
  15.         HANDLE hFilemap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, dwSize, NULL);
  16.         LPVOID lpBaseAddress = MapViewOfFile(hFilemap, FILE_MAP_WRITE, 0, 0, 0);
  17.  
  18.                 CopyMemory(lpBaseAddress, lpFile, dwSize);
  19.  
  20.                 UnmapViewOfFile(lpBaseAddress);
  21.         CloseHandle(hFilemap);
  22.         CloseHandle(hFile);
  23.         return bSuccess;
  24. }
  25.  
  26.  
  27.  
  28. int main() {
  29.         extractResource(NULL, file_01, "C:\\into.mp3");
  30. }



Qualcuno riesce a capire dove è il problema?

Ultima modifica effettuata da robrock80 il 10/04/2010 alle 19:44
PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:17
Sabato, 10/04/2010
Testo quotato

Postato originariamente da robrock80:

E se volessi fare una DLL injection??? Ricordi quella volta che mi parlasti dell'API hooking? Beh, grazie alle librerie Detours di Microsoft sono veramente a un passo.



A parte il fatto che continuo a non essere d'accordo sulle discussioni di tecniche che sono spesso usate male, perchè sarebbero necessarie le risorse?

Testo quotato

Comunque sono andato avanti nell'inclusione di risorse ma sono bloccato di nuovo, Questo è il nuovo codice ...



Sì ... ma cosa succede?

Problemi di compilazione?

Di esecuzione?

Errori a runtime?

Non funziona come dovrebbe?

Hai fatto un po' di debugging?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 1:05
Domenica, 11/04/2010
E' assurdo... Il codice che ho scritto sopra ha poi funzionato: probabilmente c'è qualche problema  nelle configurazioni del progetto. Riguardo all'API hooking, creare una DLL il cui unico scopo è quello di essere iniettata in un altro processo, includendola nell'eseguibile stesso facilito la sua copiatura da una parte all'altra del file system, mantentendo comunque coerenza poichè la sua unica finalità è di essere iniettata (ho sempre odiato copiare cartelle anzichè semplici file, se poi voglio realizzare il riutilizzo del software allora ti dò ragione)

Ultima modifica effettuata da robrock80 il 11/04/2010 alle 1:36
PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 2:39
Domenica, 11/04/2010
Testo quotato

Postato originariamente da robrock80:

... creare una DLL il cui unico scopo è quello di essere iniettata in un altro processo, includendola nell'eseguibile stesso facilito la sua copiatura da una parte all'altra del file system, mantentendo comunque coerenza poichè la sua unica finalità è di essere iniettata (ho sempre odiato copiare cartelle anzichè semplici file, se poi voglio realizzare il riutilizzo del software allora ti dò ragione)



No ... non ha nessun senso quello che dici. L'unico motivo è che non vuoi che l'utente si accorga dell'esistenza della DLL ... Inoltre, un solo file eseguibile (piuttosto che un pacchetto di installazione) è più facilmente "veicolabile" in modo "malevolo" ...

Ti ripeto ... questo tipo di programmi non mi piace per nulla e penso che non risponderò più a nessuna tua domanda ... saluti.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 2:59
Domenica, 11/04/2010
Malevolo??? Nel 2010 quando orammai su internet trovi di tutto e di più pensi che abbia intenzione di fare dei danni ad altre persone? Se volessi fare dei danni sarei già in grado di farlo e comunque pensi seriamente che sarei così deficente da espormi in pubblico in questa maniera? Già solo che tu hai pensato ciò che hai detto significa che lo hai già fatto e ora condanni altre persone che per curiosità hanno intenzione di imparare nuove tecniche? E allora perchè tu lo sai fare? Perchè hai perso tempo ad impararlo se è veramente così inutile? Ti ripeto, se vuoi fare dei danni su internet trovi di tutto e come vedi la soluzione al mio problema l'avevo scritta anche senza i tuoi link. Stà veramente diventando così difficile trovare persone con cui condividere una passione? Se veramente devo sorbirmi queste cose (con riferimento anche alle inutili polemiche di HeDo in altri miei post) me ne rimango da solo senza chiedere più niente

Ultima modifica effettuata da robrock80 il 11/04/2010 alle 3:09
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 3:10
Domenica, 11/04/2010
Testo quotato

Postato originariamente da robrock80:
me ne rimango da solo senza chiedere più niente



fai bene, meglio per tutti.

PM
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 3:12
Domenica, 11/04/2010
Ma la colpa mica è tua... Ma di chi ti ha messo la tastiera sotto le mani. Sfoghi le tue frustrazioni contro l'umiltà di persone che hanno bisogno di aiuto: fai una profonda riflessione su ciò che 6 invece di prendere in giro

Ultima modifica effettuata da robrock80 il 11/04/2010 alle 3:19
PM
Pagine: [ 1 2 ] Precedente | Prossimo