PDA

Ver la Versión Completa : Leer recurso y injectarlo


MacStreet
03-07-2018, 03:42:07
Saludos amigos !

Quisiera leer un recurso y injectarlo a un proceso "notepad.exe" he estado revisando algunos ejemplos en google y no he encontrado alguno que me ayudé.
Hasta ahora tengo algo avanzado y no me funciona.

procedure TForm1.Button1Click(Sender: TObject);
begin
ResourceLocation := FindResource(HInstance, pchar('RES'), RT_RCDATA); // if ResourceLocation <> 0 then
begin
ResourceSize := SizeofResource(HInstance, ResourceLocation);
if ResourceSize <> 0 then
begin
ResourceHandle := LoadResource(HInstance, ResourceLocation);
if ResourceHandle <> 0 then
begin
ResourcePointer := LockResource(ResourceHandle);
if ResourcePointer <> nil then;
InjectDLL(pchar('notepad.exe'),ResourcePointer);
end;
end;
end;
end;
Yo solo deseo leer el dll mas no guardarlo, espero que me puedan ayudar, muchas gracias

Ñuño Martínez
06-07-2018, 12:58:41
Pero, exactamente, ¿qué quieres hacer?

movorack
06-07-2018, 14:19:17
Jaquiar un juego de fijo

MacStreet
06-07-2018, 19:36:55
Jackiar? no es hackear con exactitud.
Lo que deseo hacer es leer el recurso y injectarlo a un proceso.

Ñuño Martínez
10-07-2018, 12:54:57
Ya, pero ¿qué resultado quieres conseguir? Lo digo porque "inyectar un recurso" es muy genérico, aparte de que no sé hasta qué punto es posible (dependerá del tipo de recurso) y posiblemente haya formas más simples (yo he cambiado recursos incrustados en un exe sin mucho problema :rolleyes:).

rastafarey
14-07-2018, 21:49:39
Explica completo, no tengas pena de decir que hackear lo que sea, eso es tu peo que quieres hackear y en que problemas te metes, echa el cuento completo, que si te explicas bien sin que nosotros tengamos que adivinar lo que quieres decir, es mas fácil poder ayudarte.

MacStreet
18-07-2018, 01:24:18
Que podria ocultar, si estoy haciendo una injeccion.
En lo que yo deseo que me ayuden es en lo siguiente :
Poder leer el recurso en memoria sin estar guardandolo en algun lugar .

Resource := TResourceStream.Create(MainInstance,'RES',RT_RCDATA);
Resource.SaveToFile('C:\MYDLL.dll');
Resource.Free;

En vez de guardarlo yo quisiera que al momento de injectarlo, lo lea. directamente en memoria no sé si me dejo entender.

Casimiro Notevi
18-07-2018, 09:23:24
No olvides poner las etiquetas al código fuente, gracias.
Ejemplo:

https://www.clubdelphi.com/images/UtilizarTAGs.png

Ñuño Martínez
19-07-2018, 13:28:56
A ver si me entero.

Quieres que un programa que ya está ejecutándose use un recurso que le pones tú directamente en la memoria. ¿Es eso?

Pues si es así, me temo que no es posible. O si lo es es muy complicado (casi seguro que habría que hackear el kernel o casi). Cuando un proceso "usa" un recurso lo que hace es pedírselo a Windows, este lo lee del archivo y le pasa al proceso el puntero al dato. Una vez en memoria no puede identificarse desde fuera del propio proceso, ya que los recursos no suelen tener una firma una vez cargado y evidentemente su ubicación en memoria no es fijo. Es decir, que los recursos no se cargan junto con el programa y se colocan en memoria para que los use el programa, sino que se cargan cuando se necesitan.