Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 18:20

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Eingebettete Resource extrahieren

Discussion on Eingebettete Resource extrahieren within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 451
Eingebettete Resource extrahieren

Für die, die noch nicht wissen, wie sie eine eingebettete Resource extrahieren können, folgt hier ein kleiner Beispielquelltext:

Hier in Drexx-(M)asm:
Code:
SaveResource proc pName:DWORD, pType:DWORD, ID:DWORD
   add esp, -4
   push ebx
   push edi
   push esi
   push 0
   call GetModuleHandle
   mov edi, eax
   invoke FindResource, edi, ID, pType
   test eax, eax
   jz @f
   mov esi, eax
   invoke SizeofResource, edi, esi
   mov ebx, eax
   invoke LoadResource, edi, esi
   push eax
   call LockResource
   mov esi, eax
   invoke CreateFile, pName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0
   cmp eax, INVALID_HANDLE_VALUE
   je @f
   push eax
   invoke WriteFile, eax, esi, ebx, [ebp - 4], 0
   pop eax
   invoke CloseHandle, eax
   mov eax, 1
   jmp @@e
@@:
   mov eax, 0
@@e:
   pop esi
   pop edi
   pop ebx
   ret
SaveResource endp
Hier in C:
Code:
int SaveResource(char *pName, int nID, char *pType) {
	DWORD dwbw;
	HGLOBAL hLoad;
	DWORD dwSize;
	void *lpData;
	HANDLE hFile;
	HMODULE hMod = GetModuleHandle(NULL);
	HRSRC hresource = FindResource(hMod, MAKEINTRESOURCE(nID), pType);
	if(!hresource) {
		return 0;
	}
	hLoad = LoadResource(hMod, hresource);
	lpData = LockResource(hLoad);
	dwSize = SizeofResource(hMod, hresource);
	hFile = CreateFile(pName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	if(hFile == INVALID_HANDLE_VALUE) {
		return 0;
	}
	WriteFile(hFile, lpData, dwSize, &dwbw, NULL);
	CloseHandle(hFile);
	return (dwSize == dwbw);
}
Oder vielleicht ein wenig schöner (von der Formatierung her):
Code:
BOOL SaveResource(char *pName, int nID, char *pType) {
   DWORD dwbw;
   HMODULE hMod = GetModuleHandle(NULL);
   HRSRC hresource = FindResource(hMod, MAKEINTRESOURCE(nID), pType);
   if(hresource) {
      HGLOBAL hLoad = LoadResource(hMod, hresource);
      void *lpData = LockResource(hLoad);
      DWORD dwSize = SizeofResource(hMod, hresource);
      HANDLE hFile = CreateFile(pName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
      if(hFile == INVALID_HANDLE_VALUE) {
         return FALSE;
      }
      WriteFile(hFile, lpData, dwSize, &dwbw, NULL);
      CloseHandle(hFile);
      return (dwSize == dwbw);
   }
   return FALSE;
}
Die Resource sollte dann entweder z.B. im VisualStudio einfach in das ResourcenSkript importiert werden, oder man macht es manuell (myres.rc):
Quote:
//ID Type Path
100 DLL "extractme.dll"
Die Funktion ruft man dann so auf:
Code:
ResID equ 100
.data
  foo db "C:\extracted.dll", 0
  bar db "DLL", 0
.code
  invoke SaveResource, OFFSET foo, OFFSET bar, ResID
oder einfach:
Quote:
SaveResource("C:\\extracted.dll", "DLL", 100);
link is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
Would S4 Resource Tool work with Korean Resource Files
12/04/2010 - S4 League - 12 Replies
Hi i tried to test it out and had to download the game due to 445mb patch when i try the s4 resource with korean resource files they open up would they work? or not? Ashley :)
AutoIt Zip Archive extrahieren und wieder zusammenfügen
08/05/2010 - AutoIt - 7 Replies
Hi, ich habe ein Problem. Ich möchte mit AutoIT ein Zip-Archiv automatisch erstellen. Inzwischen habe ich mich mit der Zip.au3 vertraut gemacht.Ich weiß auch schon wie ich eine Datei in ein Archiv hinzufüge. Doch nur sehr umständlich: _Zip_UnzipALL(@ScriptDir & "\Test.zip",@ScriptDir & "\Test.zipUNZIPPED") FileCopy(******,@ScriptDir & "\Test.zipUNZIPPED") _Zip_Create(@ScriptDir & "\Test.zip")
[Client modding]Problem beim Extrahieren
03/14/2010 - Metin2 Private Server - 4 Replies
Also Hallo erstaml ich hab ein Problem :rolleyes: Ich wollte meinen Client modden hab alles richtig gemacht und alles ging so nun hatte ich einen gemoddeteden Ordner nun hab ich ihn ausversehn gelöscht! Jetzt wollte ich mir einen neuen modden nun kommt immer dieser Fehler heir beim extrahieren mit den File extractor: http://i44.tinypic.com/n5k6ye.png PS:Hab SuFu genutzt nix gefunden!
Was noch extrahieren?
09/16/2009 - Metin2 Private Server - 13 Replies
habe jetzt fast alles extrahiert im metin2 ordner pack aber habe immernoch nicht alle monster mir fehlen z.b. der zombie könig undso ... im monster ordner ist nur: http://s1.directupload.net/images/090915/hknbeivc .jpg
Kann maps nicht extrahieren
09/13/2006 - WoW Private Server - 5 Replies
Huhu leute, nach langer Zeit bin ich wieder interessiert an den Emus. Meine alten hab ich noch. Das einzige was nicht drauf ist, sind die maps. Da ich immernoch weiss wie das geht, geh ich ins maps Verzeichniss, starte Batcreator und befolge die Anweisung oben. Beim letzten schritt wo ich auf extract drücken muss, kommt kurz das schwarze Fenster und schliest sich sofort wieder...habs mit mehreren Emus probiert,sogar neu gezogen. Ist immer das gleiche... Als erstes dachte ich das liegt...



All times are GMT +2. The time now is 18:20.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.