Hola a todos anteriormente también publique cosas que después las termine resolviendo pero ahora necesito ayuda ya que me estanque y no puedo resolver esto , ..
Mis problemas son los siguientes necesito que mi Proyecto, lea un archivo dll lo mueva a temp y le haga LoadLibrary sugerencias de como podría hacerlo algun tutorial especifico alguna ayuda ?
Necesito que mi form -> Proyecto.exe al momento de abrirse estando la dll en la raíz del Proyecto es decir :
En la misma carpeta : Proyecto.exe , Midll.dll (Que la dll sea movida a temp) y se inyecte haciendo loadlibrary .
Lo que me decis vos es hacer algo así ..Pink escribió:Y porque no la cargas desde la raiz?
quieres inyectar la dll o solo cargarla?
const
KE ='kernel32.dll';
LOAD ='LoadLibraryA';
procedure TForm1.FormCreate(Sender: TObject);
begin
//Aca declaro desde donde quiero hacer la Inyección en este caso C:
LoadLibrary(Pchar('C:/Mi dll.dll'));
hHandle:= GetModuleHandle(KE);
ADDLOAD:= DWORD(GetProcAddress(hHandle,LOAD));
end;
end;
Pero eso no es lo que necesito ..Mi idea es la siguiente ejemplo :
en vB tengo un codigo que es asi y funciona bien ..
Try
Kill(My.Computer.FileSystem.SpecialDirectories.Temp & "\Midll.dll")
My.Computer.FileSystem.CopyFile(Application.StartupPath & "\Midll.dll", _
My.Computer.FileSystem.SpecialDirectories.Temp & "\Midll.dll")
X = LoadLibrary(My.Computer.FileSystem.SpecialDirectories.Temp & "\Midll.dll")
Y = GetProcAddress(X, "MyDLLFunc1")
Catch ex As Exception
My.Computer.FileSystem.CopyFile(Application.StartupPath & "\Midll.dll", _
My.Computer.FileSystem.SpecialDirectories.Temp & "\Midll.dll")
X = LoadLibrary(My.Computer.FileSystem.SpecialDirectories.Temp & "\Midll.dll")
Y = GetProcAddress(X, "MyDLLFunc1")
End Try
Pero no tengo idea de como hacer lo mismo en delphi , y lo necesito funcionando en delphi no aparece nada Content not foundPink escribió:Pero a lo que me refiero que entonces la escribas si o si en temporales y usas
[Enlace externo eliminado para invitados]
y listo.
SI el problema es que no se como inicializar el codigo para que la mueva a temp y haga el copyfile a temp y desde startuppath que es donde esta la dll con el proyecto la mueva e inyecte..
Sería algo como esto, puede tener algunos errores en las llamadas a las APIs lo hice de memoria.
En sTemp esta la ruta Temp terminada en '\', obtienes un handle de la libreria cargada. Tienes una variable tipo funcion donde debe de estar tu declaración de la funcion en la DLL. Un ejemplo:
Declaracion en la DLL.
En sTemp esta la ruta Temp terminada en '\', obtienes un handle de la libreria cargada. Tienes una variable tipo funcion donde debe de estar tu declaración de la funcion en la DLL. Un ejemplo:
Declaracion en la DLL.
function MyDLLFunc1 (Param1: PChar): Integer; stdcall;
Tu variable se declara así
var fpMyFunc: function (Param1: PChar): Integer; stdcall;
Obtienes el puntero a esa funcion y la guardas en la variable. Todo completo queda así.
var hMod: HMODULE;
fpMiFunc: function (): Integer;
begin
hMod := LoadLibrary(PChar(sTemp + 'Mi Dll.dll'));
@fpMiFunc := GetProcAddress(hMod, 'MyDLLfunc1');
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
Yo creo que te refieres a esto:
CopyFile(PChar('midll.dll'), PChar(GetTempDir + 'midll.dll'), true);
SetCurrentDirectory (Pchar(GetTempDir));
//ya aqui puedes hacer el loadlibrary y cargara la que esta en temp
//funcion para el tempdir
function GetTempDir: string;
var
Buffer: array[0..MAX_PATH] of Char;
begin
GetTempPath(SizeOf(Buffer) - 1, Buffer);
Result := StrPas(Buffer);
end;
saludosVoy a probar todo esto y te digo como funciona yo estaba utilizando algo como esto .. pero no lograba hacer que funcione veremos si funciona lo que me dejaste!!orlando9427 escribió:Sería algo como esto, puede tener algunos errores en las llamadas a las APIs lo hice de memoria.
En sTemp esta la ruta Temp terminada en '\', obtienes un handle de la libreria cargada. Tienes una variable tipo funcion donde debe de estar tu declaración de la funcion en la DLL. Un ejemplo:
Declaracion en la DLL.Tu variable se declara asífunction MyDLLFunc1 (Param1: PChar): Integer; stdcall;
Obtienes el puntero a esa funcion y la guardas en la variable. Todo completo queda así.var fpMyFunc: function (Param1: PChar): Integer; stdcall;
var hMod: HMODULE; fpMiFunc: function (): Integer; begin hMod := LoadLibrary(PChar(sTemp + 'Mi Dll.dll')); @fpMiFunc := GetProcAddress(hMod, 'MyDLLfunc1');
procedure TForm2.FormCreate(Sender: TObject);
var
dir: string;
TempPath: array[0..MAX_PATH - 1] of Char;
begin
GetTempPath(MAX_PATH, TempPath);
dir := GetCurrentDir;
CopyFile(PChar('GetCurrentDir\Midll.dll'),PChar('TempPath\Midll.dll'),TRUE);
end;
Pink escribió:Yo creo que te refieres a esto:
saludosCopyFile(PChar('midll.dll'), PChar(GetTempDir + 'midll.dll'), true); SetCurrentDirectory (Pchar(GetTempDir)); //ya aqui puedes hacer el loadlibrary y cargara la que esta en temp //funcion para el tempdir function GetTempDir: string; var Buffer: array[0..MAX_PATH] of Char; begin GetTempPath(SizeOf(Buffer) - 1, Buffer); Result := StrPas(Buffer); end;
Pink sabes que tengo un problema al declarar estas variables ..
Result := StrPas(Buffer);
CopyFile(PChar('Midll.dll'), PChar(GetTempDir + 'Midll.dll'), true);
No no , yo también tengo Delphi 7 , y también XE2 , XE3 pero el problema son esas 2 lineas nada mas!!Pink escribió:Usa cualquier otra con tal y obtengas el tempdir. es que uso el delphi 7 quizas tienes otro.
Hola Pink gracias por la ayuda prestada mira en estos momentos no me da ningún error hice un nuevo proyecto pero sabes que tengo un problema .. al momento de verificar donde se encuentran las dlls como podría hacer en un ..
StartPath o sea donde tengo la dll y necesito verificar la ruta de %temp% gettempdir
Edit1.Text := SetCurrentDirectory (Pchar(GetTempDir2));
Edit2.Text := PChar(GetTempDir2 + 'midll.dll'), true);
Necesito saber la manera correcta con la sintaxys bien escrita de como chequear la ruta de StartPath o sea donde tengo la dll y necesito verificar la ruta de %temp% gettempdir
Si deseas revisar si un archivo existe usa la función FileExists.
function FileExists ( const FileName : string ) : Boolean;
Devuelve True si existe, False si noWe do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit