PDA

Ver la Versión Completa : Sospecho que está hecho en Delphi, ¿cómo saberlo?


Galbi
04-04-2006, 23:29:50
Hola amigos, resulta que he visto aplicaciones que sospecho que están hechas en Delphi, entonces ¿cómo se puede saberlo a ciencia cierta?

Saludos.

Galbi.

esocrates
05-04-2006, 00:05:19
En este sitio podés descargar una aplicación Free que creo te será útil.
http://www.geocities.com/charisoft/saleng.htm
Un saludo

delphi.com.ar
05-04-2006, 00:10:02
Si no me equivoco, aplicaciones tipo en WinDASM te informan qué compiladores fueron utilizados para generar, los PE Files. El programa DeDe (Delphi Decompiler) no recuerdo si hace diferencia entre C++ Builder o Delphi.
Otra opción, que puedes escribir en delphi, supongo sin demasiadas complicaciones, es buscar en los recursos del tipo DATA, algo que puedas leer como DFM, con algunas de las funciones de la VCL como ReadComponentRes. (Te recomiendo ver el ejemplo ResXplor)

Saludos!

seoane
05-04-2006, 00:22:13
Se me ocurre que podemos utilizar el echo de que delphi coloca en sus ejecutables donde deberia de ir el timestamp siempre el mismo numero (sus razones tendran). Ignoro si este metodo que propongo es muy de fiar, puede que otros compiladores coloquen el mismo numero en el timestamp pero ya seria mucha casualidad :)

Bueno aqui te dejo esta funcion, le pasas como parametro la ruta del ejecutable y si esta echo en delphi devuelve TRUE

function isDelphi(Filename: string): Boolean;
const
BorlandMagicTimeStamp = $2A425E19;
var
hFile: THandle;
BytesRead: DWORD;
ImageDosHeader: TImageDosHeader;
ImageNtHeaders: TImageNtHeaders;
begin
Result := FALSE;
hFile := CreateFile(PChar(Filename), GENERIC_READ, FILE_SHARE_READ, nil,
OPEN_EXISTING, 0, 0);
if (hFile <> INVALID_HANDLE_VALUE) then
begin
if ReadFile(hFile, ImageDosHeader, SizeOf(TImageDosHeader),BytesRead, nil) then
if BytesRead = SizeOf(TImageDosHeader) then
if ImageDosHeader.e_magic = IMAGE_DOS_SIGNATURE then
if SetFilePointer(hFile, ImageDosHeader._lfanew, nil, FILE_BEGIN) <> $FFFFFFFF then
if ReadFile(hFile, ImageNtHeaders, SizeOf(TImageNtHeaders), BytesRead, nil) then
if BytesRead = SizeOf(TImageNtHeaders) then
if ImageNtHeaders.Signature = IMAGE_NT_SIGNATURE then
Result:= ImageNtHeaders.FileHeader.TimeDateStamp = BorlandMagicTimeStamp;
CloseHandle(hFile);
end;
end;

JXJ
05-04-2006, 01:53:10
Con este programa es más fácil y no necesitas de tener que
instalar nada de ocx,

Hecho con delphi.

http://farrokhi.net/language/

seoane
05-04-2006, 02:26:28
Aqui os dejo un juguete para los curiosos, usando la funcion que describo arriba, este programa busca en una carpeta (y subcarpetas) que programas estan echos en delphi y los muestra en una lista.

Lo dicho, es solo un juguete :)

Robert01
05-04-2006, 03:16:29
usá un descompilador para delphi: form extractor o exe2dpr, la descompilación es sólo para los formularios, de ninguna manera se recupera el código fuente completo

Galbi
06-04-2006, 01:06:50
Me han abrumado tantas respuetas, gracias por su tiempo.

Galbi.