Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Información de un ejecutable [Solucionado]

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Información de un ejecutable [Solucionado] Responder citando

Buenas, tiempo que no pasaba por estos lados... bueno pero como todo el que vuelve tengo una duda que no he podido resolver...

Estoy trabajando en una aplicación que necesita obtener información de un archivo exe... es decir especificamente lo que corresponde a la información de su fabricante.

Ej. "Microsoft Corp." , "InstallShield", etc, etc.

Esto de un ejecutable cualquiera que seleccione por medio de mi app.. he buscado información pero no doy con nada que me pude servir... Agradeceria cualquier guia que pueda utilizar.. de ahi trabajo solo ... Wink

Saludos! y espero que todos esten bien.
_________________
"Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez

Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!!


Ultima edición por _Viktor el Dom 13 Nov, 2005 10:20 pm, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

Hey viktor!

bueno esto probablemente solo te de una pequeña guia, es parte de un programa que estaba haciendo para ese proposito y nunca termine.

en el saco valores del ejecutable, ya habria que ver como sacas lo que necesitas.

disculpa si te deja igual.

Código:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE hand1,hand2;
IMAGE_DOS_HEADER valor1;
IMAGE_NT_HEADERS valor2;
IMAGE_FILE_HEADER valor3;
IMAGE_OPTIONAL_HEADER valor4;
DWORD bytes;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{

 OpenDialog1->Execute();
 hand1 = CreateFile((OpenDialog1->FileName).c_str() /*szFileName*/,
                        GENERIC_READ,FILE_SHARE_READ,
                        NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,
                        NULL);

    if (INVALID_HANDLE_VALUE == hand1)
    {
     MessageBox(Application,"NO","se puede abrir",MB_OK);
    }

    ReadFile(hand1,&valor1,sizeof(IMAGE_DOS_HEADER),&bytes,0);

    if (IMAGE_DOS_SIGNATURE != valor1.e_magic)

    {
       MessageBox(Application,"NO","No valido",MB_OK);
    }

    RichEdit1->Lines->Clear();
    RichEdit1->Lines->Add("Informacion de " + OpenDialog1->FileName);
    RichEdit1->Lines->Add("1.- IMAGE DOS HEADER...");
    RichEdit1->Lines->Add("Signature: " + IntToHex(valor1.e_magic,4));
    RichEdit1->Lines->Add("Bytes of last page of file: " + IntToHex(valor1.e_cblp,8));
    RichEdit1->Lines->Add("Number of pages of file: " + IntToHex(valor1.e_cp,8));
    RichEdit1->Lines->Add("Relocations: " + IntToHex(valor1.e_crlc ,8));
    RichEdit1->Lines->Add("Size of header in Paragraphs: " + IntToHex(valor1.e_cparhdr,8));
    RichEdit1->Lines->Add("Minimun Extra Paragraphs: " + IntToHex(valor1.e_minalloc,8));
    RichEdit1->Lines->Add("Maximum extra paragraphs needed: " + IntToHex(valor1.e_maxalloc ,8));
    RichEdit1->Lines->Add("Initial (relative) SS value: " + IntToHex(valor1.e_ss,8));
    RichEdit1->Lines->Add("Initial SP value: " + IntToHex(valor1.e_sp,8));
    RichEdit1->Lines->Add("Checksum: " + IntToHex(valor1.e_csum ,8));
    RichEdit1->Lines->Add("Initial IP value: " + IntToHex(valor1.e_ip,8));
    RichEdit1->Lines->Add("Initial (relative) CS value: " + IntToHex(valor1.e_cs,8));
    RichEdit1->Lines->Add("File address of relocation table: " + IntToHex(valor1.e_lfarlc,8));
    RichEdit1->Lines->Add("Overlay number: " + IntToHex(valor1.e_ovno,8));
    RichEdit1->Lines->Add("Reservado: " + IntToHex((int)valor1.e_res,8));
    RichEdit1->Lines->Add("OEM identifier (for e_oeminfo): " + IntToHex(valor1.e_oemid,8));
    RichEdit1->Lines->Add("OEM information; e_oemid specific: " + IntToHex(valor1.e_oeminfo,8));
    RichEdit1->Lines->Add("Reservado: " + IntToHex((int)valor1.e_res2,8));
    RichEdit1->Lines->Add("Offset To New Exec Handler: " + IntToHex((int)valor1.e_lfanew,8));
    RichEdit1->Lines->Add("Size of header in Paragraphs: " + IntToHex(valor1.e_cparhdr,8));
    RichEdit1->Lines->Add("");
    RichEdit1->Lines->Add("2.- IMAGE NT HEADER...");
    RichEdit1->Lines->Add("Signature: " + IntToHex((int)valor2.Signature,8));
    RichEdit1->Lines->Add("Machine: " + IntToHex(valor2.FileHeader.Machine ,8));
    RichEdit1->Lines->Add("Number of Sections: " + IntToHex(valor2.FileHeader.NumberOfSections ,8));

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Form2=new TForm2(Application);
Form2->ShowModal();
delete Form2;
}
//---------------------------------------------------------------------------



_________________
"Quid quid agis prudenter agas et respice finem"
(Hagas lo que hagas, actúa inteligentemente y considerando el fin)
MyNeoReport - the "FREE" Report Generator for .NET
http://myneoreport.sourceforge.net/
(funciona en Delphi for .NET Wink )
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

Gracias por la respuesta, veré que puedo hacer con ese codigo... aunque a simple vista no veo que sea lo que necesito.

Gracias de todas maneras. Wink
_________________
"Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez

Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

_viktor:

Cita:
sourceforge -> jcl
for having nice info on borland header, and PE classes.


Cita:
There is a WinHelp help file in Jcl

If you really cannot find it, here is an hint:

TJclPeImage


Cita:
IMAGE_DOS_HEADER -- beginning of exe file

MZ_lfanew points to IMAGE_NT_HEADERS

IMAGE_NT_HEADERS is just name for struct:
image_nt_headers struct
Signature (PE)
IMAGE_FILE_HEADER
IMAGE_OPTIONAL_HEADER
image_nt_headers ends

I hope this helps =)



more information:

http://www.codebreakers-journal.com/viewarticle.php?id=74&layout=abstract


saludos,
_________________
"Quid quid agis prudenter agas et respice finem"
(Hagas lo que hagas, actúa inteligentemente y considerando el fin)
MyNeoReport - the "FREE" Report Generator for .NET
http://myneoreport.sourceforge.net/
(funciona en Delphi for .NET Wink )
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

Hola, gracias nuevamente por tu respuesta, he estado leyendo el pdf del link que me diste ( no deja de estar muy bueno) pero no encuentro lo que me sirve... a ver si con esto me explico un poco mas... lo que quiero obtener el la informacion que se presenta acá:



Especificamente:

Nombre del Producto
Version de Producto
Organización

He buscado en todos lados alguna API o lo que sea que me pueda orientar, pero no doy con nada... me parece mucho haber leido algo aca hace algun tiempo pero no he logrado encontrar el post...

Bueno si alguien tiene alguna pista se lo agradeceré.

Saludos y gracias de antemano.
_________________
"Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez

Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

Ya está, gracias por el tip _Leo.

https://cppbuilder.es/viewtopic.php?t=6719

Saludos!!!
_________________
"Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez

Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Yahoo Messenger MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.