 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Mar 08 Nov, 2005 7:26 pm Asunto: Información de un ejecutable [Solucionado] |
|
|
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 ...
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 |
|
 |
Pablo A Castillo Lt


Registrado: 14 Jul 2004Mensajes: 75Ubicación: Caracas - Venezuela
|
Publicado: Mar 08 Nov, 2005 7:48 pm Asunto: |
|
|
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 ) |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
|
| Volver arriba |
|
 |
Pablo A Castillo Lt


Registrado: 14 Jul 2004Mensajes: 75Ubicación: Caracas - Venezuela
|
Publicado: Vie 11 Nov, 2005 5:18 pm Asunto: |
|
|
_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 ) |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Dom 13 Nov, 2005 9:25 pm Asunto: |
|
|
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 |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|