Alguien tiene algun ejemplo para editar la informacion de un .exe (la de PE)... Ejemplo editar la fecha de creacion... nombre del creador... version del programa etc.
Desde ResourceHacker se puede hacer modificando el recurso VersionInfo (creo que era así). Un ejemplo sería este:

Código: Seleccionar todo

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "Build Date", "11/03/2009"
            VALUE "CompanyName", "My Company "
            VALUE "FileDescription", "My DLL"
            VALUE "FileVersion", VERSTR
            VALUE "InternalName", "MyCode.dll"
            VALUE "LegalCopyright", "Copyright © Me"
            VALUE "ProductVersion", VERSTR
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END
Si no tienes manejo en VB.NET/C# puede ser un dolor de cabeza (lo digo por experiencia).
Esas api aparentemente ayudan... No encuentro ejemplo para vb6, vi algunos para c++
BeginUpdateResource
UpdateResource
EndUpdateResource

Toca leerme la estructura de PE y ver si puedo modificarlo de manera manual tocando los bytes del archivo
Es como ha dicho blau con el resource hacker, creo que fue SUDO quien hizo un generador de file info, esta en el foro
666699966999999996699966699999
666699966999999996699966969999
699999966999999996699966996999
666699966999999996699966999699
666699966999999996699966999699
699999996699999966999966996999
699999999669999669999966969999
699999999996666999999966699999
https://reversecodes.wordpress.com

http://indeseables.github.io/
Te dejo un módulo para clonar el VersionInfo:
Attribute VB_Name = "mCloneInfo"
'Made By: ZeR0/0cm4n for HackHound.org
'Thanks to: Noble (C++ Source Code), Cobein (mDelRes Module)
Option Explicit

Private Const RT_VERSION         As Long = 16
Private Const VS_VERSION_INFO    As Long = 1

Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal lUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal lUpdate As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function GetFileVersionInfo Lib "Version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long
Private Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
Private Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, Source As Any, ByVal Length As Long)
Public Sub CloneFileInformation(ByVal Source As String, ByVal Destination As String)
    
    Dim lLenSource        As Long
    Dim lLenDestination   As Long
    Dim lHandle           As Long
    Dim hRes              As Long
    Dim lVerPointer       As Long
    Dim lLangId           As Long
    Dim iVal              As Long
    Dim lSize             As Long
     
    Dim bFileInfo()       As Byte
    Dim bDestination()    As Byte
    
    lLenSource = GetFileVersionInfoSize(Source, lHandle)
    ReDim bFileInfo(lLenSource)
    Call GetFileVersionInfo(Source, 0&, lLenSource, bFileInfo(0))
    
    lLenDestination = GetFileVersionInfoSize(Destination, lHandle)
    ReDim bDestination(lLenDestination)
    Call GetFileVersionInfo(Destination, 0&, lLenDestination, bDestination(0))
   
    Call VerQueryValue(bDestination(0), "\\VarFileInfo\\Translation", lVerPointer, lSize)
    hRes = BeginUpdateResource(Destination, False)
    CopyMemory lLangId, ByVal lVerPointer, 2

    Call UpdateResource(hRes, RT_VERSION, VS_VERSION_INFO, lLangId, bFileInfo(0), lLenSource)
    Call EndUpdateResource(hRes, False)
End Sub
Blau escribió:Te dejo un módulo para clonar el VersionInfo:
Attribute VB_Name = "mCloneInfo"
'Made By: ZeR0/0cm4n for HackHound.org
'Thanks to: Noble (C++ Source Code), Cobein (mDelRes Module)
Option Explicit

Private Const RT_VERSION         As Long = 16
Private Const VS_VERSION_INFO    As Long = 1

Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal lUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal lUpdate As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function GetFileVersionInfo Lib "Version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long
Private Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
Private Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, Source As Any, ByVal Length As Long)
Public Sub CloneFileInformation(ByVal Source As String, ByVal Destination As String)
    
    Dim lLenSource        As Long
    Dim lLenDestination   As Long
    Dim lHandle           As Long
    Dim hRes              As Long
    Dim lVerPointer       As Long
    Dim lLangId           As Long
    Dim iVal              As Long
    Dim lSize             As Long
     
    Dim bFileInfo()       As Byte
    Dim bDestination()    As Byte
    
    lLenSource = GetFileVersionInfoSize(Source, lHandle)
    ReDim bFileInfo(lLenSource)
    Call GetFileVersionInfo(Source, 0&, lLenSource, bFileInfo(0))
    
    lLenDestination = GetFileVersionInfoSize(Destination, lHandle)
    ReDim bDestination(lLenDestination)
    Call GetFileVersionInfo(Destination, 0&, lLenDestination, bDestination(0))
   
    Call VerQueryValue(bDestination(0), "\\VarFileInfo\\Translation", lVerPointer, lSize)
    hRes = BeginUpdateResource(Destination, False)
    CopyMemory lLangId, ByVal lVerPointer, 2

    Call UpdateResource(hRes, RT_VERSION, VS_VERSION_INFO, lLangId, bFileInfo(0), lLenSource)
    Call EndUpdateResource(hRes, False)
End Sub
Es lo que buscaba, mejor imposible. Gracias!
Responder

Volver a “VB/.NET”