Página 3 de 4
Versão no EXE faz diferença pra antivírus?
Enviado: 14 Jul 2024 01:43
por rochinha
Amiguinhos
Deixando algumas dicas aqui.
A compilação de meu sistema é automatizada e cada revisão/compilação recebe um numero de versão sequencial. O automatizaro gera os arquivos necessários para a segurança como .MANIFEST e .RC que são mesclados ao .EXE no processo.
UAC.MANIFEST
Código: Selecionar todos
//
cRC := [<?xml version="1.0" encoding="UTF-8" standalone="yes"?>]+ CRLF
cRC := cRC + [<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">]+ CRLF
cRC := cRC + [ <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">]+ CRLF
cRC := cRC + [ <v3:security>]+ CRLF
cRC := cRC + [ <v3:requestedPrivileges>]+ CRLF
cRC := cRC + [ <v3:requestedExecutionLevel level="highestAvailable" />]+ CRLF
cRC := cRC + [ </v3:requestedPrivileges>]+ CRLF
cRC := cRC + [ </v3:security>]+ CRLF
cRC := cRC + [ </v3:trustInfo>]+ CRLF
cRC := cRC + [</assembly>]+ CRLF
//
ret_line := "chr(13)+chr(10)"
errhandle = fcreate( "uac.manifest" )
fwrite( errhandle, cRC )
fclose( errhandle )
.RC
Código: Selecionar todos
cRC := [LANGUAGE LANG_PORTUGUESE,SUBLANG_PORTUGUESE_BRAZILIAN] + CRLF
cRC := cRC + [APPLICATION_ICO ICON "nfwh.ico" ] + CRLF
cRC := cRC + [VS_VERSION_INFO VERSIONINFO ] + CRLF
cRC := cRC + [FILEVERSION 1,0,0,0 ] + CRLF
cRC := cRC + [PRODUCTVERSION 1,0,0,0 ] + CRLF
cRC := cRC + [FILEFLAGSMASK 0x0 ] + CRLF
cRC := cRC + [FILEFLAGS 0x0 ] + CRLF
cRC := cRC + [FILEOS VOS__WINDOWS32 ] + CRLF
cRC := cRC + [FILETYPE VFT_APP ] + CRLF
cRC := cRC + [FILESUBTYPE VFT2_UNKNOWN ] + CRLF
cRC := cRC + [{ ] + CRLF
cRC := cRC + [ BLOCK "StringFileInfo" ] + CRLF
cRC := cRC + [ { ] + CRLF
cRC := cRC + [ BLOCK "040904E4" ] + CRLF
cRC := cRC + [ { ] + CRLF
cRC := cRC + [ VALUE "Comments", "Sistema Administrativo Total\0" ] + CRLF
cRC := cRC + [ VALUE "CompanyName", "5Volution.COM - www.5volution.com.br \0"] + CRLF
cRC := cRC + [ VALUE "FileDescription", "Fenix Legacy\0" ] + CRLF
cRC := cRC + [ VALUE "FileVersion", "] + strzero(nRevisao,4) + [\0" ] + CRLF
cRC := cRC + [ VALUE "InternalName", "Fenix Legacy\0" ] + CRLF
cRC := cRC + [ VALUE "LegalCopyright", "5Volution.COM\0" ] + CRLF
cRC := cRC + [ VALUE "LegalTrademarks", "Fenix Legacy / 5VOLUTION\0" ] + CRLF
cRC := cRC + [ VALUE "OriginalFilename", "NFWH29.EXE\0" ] + CRLF
cRC := cRC + [ VALUE "ProductName", "5Volution Fenix Legacy\0" ] + CRLF
cRC := cRC + [ VALUE "ProductVersion", "10\0" ] + CRLF
cRC := cRC + [ } ] + CRLF
cRC := cRC + [ } ] + CRLF
cRC := cRC + [ BLOCK "VarFileInfo" ] + CRLF
cRC := cRC + [ { ] + CRLF
cRC := cRC + [ VALUE "Translation", 0x416, 0x4B0 ] + CRLF
cRC := cRC + [ } ] + CRLF
cRC := cRC + [} ] + CRLF
cRC := cRC + [] + CRLF
//
ret_line := "chr(13)+chr(10)"
errhandle = fcreate( "revisao.rc" )
fwrite( errhandle, cRC )
fclose( errhandle )
Além disto o executável é assinado com um certificado também gerado localmente. Você pode assinar com seu certificado digital.
Os arquivos não precisam ser criados a cada compilação mas são usados sempre.
Tem um tópico aqui que ensina como criar seu certificado de assinaturas local. Não serve para assinar documentos SEFAZ.
Assinatura Digital de aplicativos sem OpenSSL
Versão no EXE faz diferença pra antivírus?
Enviado: 14 Jul 2024 11:23
por Abel
ola Rochinha, obrigado pela contribuicao
onde vc coloca essas linhas abaixo que vi em varios posts aqui no forum ?
Código: Selecionar todos
#define HB_CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#define HB_RT_MANIFEST 24
outra coisa,
o arquivo.rc eu coloca para compilar junto na lista de PRGs
e o arquivo xxxx.manifest como devo fazer ?
como nao sabia como gerar um certificado, eu comprei um de uma empresa,
estou aqui na busca de novas informacoes porque o defender disse que meu programa tinha um trojan
mesmo depois de assinado (:
Obrigado
Versão no EXE faz diferença pra antivírus?
Enviado: 14 Jul 2024 13:14
por JoséQuintas
Tenho um arquivo SJPA.EXE, esse não muda nunca, uso desde os tempos do Windows8 que avisou sobre arquivos BAT.
Ele carrega o JPA*.EXE com data mais nova que existir na pasta.
Por muito tempo ia alterando pra JPA1, JPA2, JPA3, etc.
Eventualmente o antivírus apagava a atualização, quando o nome se repetia, ou o servidor bloqueava nomes não sei porque.
Por fim, passei a usar data/hora no nome, JPA_20240714_132100.exe, afinal, nome de 8 letras é coisa de DOS.
Simples e prático:
Não preciso inventar nomes, uso data/hora.
Não preciso mexer em configuração, SJPA funciona sempre.
Anti-vírus não reclama, porque é outro nome.
Só sobra mesmo a reputação, que fica por conta do usuário.
Nota: na atualização também apago EXEs mais antigos, deixando só os mais recentes por precaução.
Versão no EXE faz diferença pra antivírus?
Enviado: 14 Jul 2024 13:22
por JoséQuintas
Sobre o manifest: quanto mais poderes liberar, mais a segurança vai pegar pesado.
exe.manifest, pra qualquer aplicativo, limitado ao nível do usuário
Código: Selecionar todos
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="JoseQuintas" processorArchitecture="x86" version="0.0.0.0" type="win32" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows Vista and Windows Server 2008 R2 -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!-- Windows XP ignores this section -->
</application>
</compatibility>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
</assembly>
no rc:
Código: Selecionar todos
#include "build.ch"
#define RT_MANIFEST 24
#define APP_MANIFEST 1
APP_MANIFEST RT_MANIFEST "resource\\exe.manifest"
Uso o build.ch pra definir número de versão.
Tenho um build.exe intermediário que cria esse arquivo a cada compilação.
Código: Selecionar todos
#define JOSEQUINTAS_VERSAO "2024.07.13.2227"
#define JOSEQUINTAS_VERSAO_RC 2407,13,22,27
Apesar do 2407 dar overflow, nunca mudei.
Versão no EXE faz diferença pra antivírus?
Enviado: 14 Jul 2024 19:41
por rochinha
Amiguinhos,
Abel
As linhas #DEFINE... precisam(de praxe) estar no inicio do .PRG antes do PROCEDURE ... ou FUNCTION MAIN ...
Os .RC são transformados através do compilador de códigos específico como BRC, PORC, etc e o resultado será a criação de arquivos .RES que seriam parecidos com os .OBJ obtidos das compilações de .PRG, .C ou .CPP.
O .RES pode ser incluso junto aos .LIB pois é uma biblioteca de recursos assim como as .LIB são bibliotecas de funções.
Versão no EXE faz diferença pra antivírus?
Enviado: 14 Jul 2024 20:24
por JoséQuintas
A Microsoft adicionou mais opções no manifest.
Não sei se precisaremos definir mais coisas.
https://learn.microsoft.com/pt-br/windo ... -manifests
Versão no EXE faz diferença pra antivírus?
Enviado: 15 Jul 2024 20:50
por Abel
JoseQuintas,
o arquivo exe.manifest eu coloco para compilar juntos com a lista de prg´s ?
outra duvida, porque as propriedades do meu EXE nao aparece a aba seguranca ?
saberiam informar ?
Obrigado,
ABEL
Versão no EXE faz diferença pra antivírus?
Enviado: 16 Jul 2024 05:13
por JoséQuintas
Abel escreveu:o arquivo exe.manifest eu coloco para compilar juntos com a lista de prg´s ?
outra duvida, porque as propriedades do meu EXE nao aparece a aba seguranca ?
saberiam informar ?
Se acompanhar o post, vai ver que o manifest é indicado no arquivo RC.
É o RC que vai na lista de compilação.
As propriedades são definidas no RC.
Versão no EXE faz diferença pra antivírus?
Enviado: 16 Jul 2024 10:52
por Abel
JoseQuintas, obrigado !
no arquivo manifest do post acima esta assim no final
isso é algo particular que voce criou ou tem algo a ver com o certificado que voce assina ?
do resto ja consegui configurar a aba DETALHES nas propriedades do meu EXE,
minha outra duvida é como criar nas propriedades do EXE a aba segurança ?
Obrigado Pessoal !
Versão no EXE faz diferença pra antivírus?
Enviado: 16 Jul 2024 11:34
por Kapiaba
Código: Selecionar todos
// C:\FWH\SAMPLES\ROCHAVER.PRG - By Rocinhasssss.... 16/07/2024
// MODIFICADO EM: 16/07/2024 - Por: Joao Santos - Da p/Modernizar isso.
#include "FiveWin.ch"
STATIC oWnd, nRevisao := 10.0 // Versao?.
MEMVAR CRC, RET_LINE, ERRHANDLE
FUNCTION Main()
LOCAL oBar
DEFINE WINDOW oWnd TITLE "ROCHAVER 3D objects"
DEFINE BUTTONBAR oBar _3D OF oWnd
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\open.bmp" FLAT GROUP ;
ACTION( Build_Manifest() ) ;
TOOLTIP "Creates a document Manifest File"
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\new.bmp" FLAT GROUP ;
ACTION ( Build_RC_File() ) ;
TOOLTIP "Creates a new RC File document"
DEFINE BUTTON OF oBar FILENAME "..\bitmaps\16x16\Exit.bmp" FLAT GROUP ;
ACTION( oWnd:End() ) TOOLTIP "Exit this app"
SET MESSAGE OF oWnd TO "ROCHAVER 3D objects" NOINSET CLOCK DATE KEYBOARD
ACTIVATE WINDOW oWnd CENTERED // MAXIMIZED
RETURN NIL
FUNCTION Build_Manifest()
// TEM PARA WINDOWS 10/11
cRC := [<?xml version="1.0" encoding="UTF-8" standalone="yes"?>] + CRLF
cRC := cRC + [<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">] + CRLF
cRC := cRC + [ <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">] + CRLF
cRC := cRC + [ <v3:security>] + CRLF
cRC := cRC + [ <v3:requestedPrivileges>] + CRLF
cRC := cRC + [ <v3:requestedExecutionLevel level="highestAvailable" />] + CRLF
cRC := cRC + [ </v3:requestedPrivileges>] + CRLF
cRC := cRC + [ </v3:security>] + CRLF
cRC := cRC + [ </v3:trustInfo>] + CRLF
cRC := cRC + [</assembly>] + CRLF
ret_line := "chr(13)+chr(10)"
// errhandle := FCreate( "uac.manifest" )
errhandle := FCreate( "uac.man" )
FWrite( errhandle, cRC )
FClose( errhandle )
MsgInfo( "Manifest Pronto!", "Manifest Pronto!" )
RETURN NIL
FUNCTION Build_RC_File()
// Desnecessarios:
// cRC := [LANGUAGE LANG_PORTUGUESE,SUBLANG_PORTUGUESE_BRAZILIAN] + CRLF
// AQUI, EU ESCOLHO A GOSTO DO MEU ARQUIVO.RES NA AREA DE ICONES
// cRC := cRC + [APPLICATION_ICO ICON "nfwh.ico" ] + CRLF
// ERRADO:
// cRC := cRC + [VS_VERSION_INFO VERSIONINFO ] + CRLF
// VERSAO PARA BORLAND RESOURCE WORKSHOP.exe:
cRC := [1 VERSIONINFO LOADONCALL MOVEABLE DISCARDABLE IMPURE] + CRLF
cRC := cRC + [FILEVERSION 1, 0, 2, 0 ] + CRLF
cRC := cRC + [PRODUCTVERSION 1, 0, 2, 0 ] + CRLF
cRC := cRC + [FILEFLAGSMASK VS_FFI_FILEFLAGSMASK] + CRLF
cRC := cRC + [FILEFLAGS 0x0 ] + CRLF
cRC := cRC + [FILEOS VOS__WINDOWS32 ] + CRLF
cRC := cRC + [FILETYPE VFT_APP ] + CRLF
cRC := cRC + [FILESUBTYPE VFT2_UNKNOWN ] + CRLF
cRC := cRC + [{ ] + CRLF
cRC := cRC + [ BLOCK "StringFileInfo" ] + CRLF
cRC := cRC + [ { ] + CRLF
cRC := cRC + [ BLOCK "080904E4" ] + CRLF
cRC := cRC + [ { ] + CRLF
cRC := cRC + [ VALUE "Comments", "Sistema Administrativo Total\0" ] + CRLF
cRC := cRC + [ VALUE "CompanyName", "5Volution.COM - www.5volution.com.br \0"] + CRLF
cRC := cRC + [ VALUE "FileDescription", "Fenix Legacy\0" ] + CRLF
cRC := cRC + [ VALUE "FileVersion", "] + StrZero( nRevisao, 4 ) + [\0" ] + CRLF
cRC := cRC + [ VALUE "InternalName", "Fenix Legacy\0" ] + CRLF
cRC := cRC + [ VALUE "LegalCopyright", "5Volution.COM\0" ] + CRLF
cRC := cRC + [ VALUE "LegalTrademarks", "Fenix Legacy / 5VOLUTION\0" ] + CRLF
cRC := cRC + [ VALUE "OriginalFilename", "ROCHAVER.EXE\0" ] + CRLF
cRC := cRC + [ VALUE "ProductName", "5Volution Fenix Legacy\0" ] + CRLF
cRC := cRC + [ VALUE "ProductVersion", "10\0" ] + CRLF
cRC := cRC + [ } ] + CRLF
cRC := cRC + [ } ] + CRLF
cRC := cRC + [ BLOCK "VarFileInfo" ] + CRLF
cRC := cRC + [ { ] + CRLF
cRC := cRC + [ VALUE "Translation", 2057, 1252] + CRLF
cRC := cRC + [ } ] + CRLF
cRC := cRC + [} ] + CRLF
cRC := cRC + [] + CRLF
ret_line := "chr(13)+chr(10)"
errhandle := FCreate( "revisao.rc" )
FWrite( errhandle, cRC )
FClose( errhandle )
MsgInfo( "Arquivo RC Pronto!", "Arquivo RC Manifest Pronto!" )
RETURN NIL
// FIN / END - kapiabafwh@gmail.com
Melhores informações aqui:
https://fivewin.com.br/index.php?/topic ... es-do-exe/
https://forums.fivetechsupport.com/view ... 0&start=15
Regards, saludos.
Versão no EXE faz diferença pra antivírus?
Enviado: 16 Jul 2024 11:55
por Kapiaba
WINDOWS10.MANIFEST:
Código: Selecionar todos
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency optional="yes">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" publicKeyToken="6595b64144ccf1df"
type="win32" processorArchitecture="*" language="*" />
</dependentAssembly>
</dependency>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware> </windowsSettings>
<windowsSettings> <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2,PerMonitor</dpiAwareness> </windowsSettings>
<windowsSettings> <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware> </windowsSettings>
<windowsSettings> <heapType xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">SegmentHeap</heapType> </windowsSettings>
</application>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
</application>
</compatibility>
</assembly>
Regards, saludos.
Versão no EXE faz diferença pra antivírus?
Enviado: 16 Jul 2024 12:04
por JoséQuintas
Abel escreveu:isso é algo particular que voce criou ou tem algo a ver com o certificado que voce assina ?
Se olhar o link da Microsoft, é exatamente isso.
Está liberando os controles Microsoft, com o token definido pela Microsoft.
Isso interfere no visual de componentes GUI, liberando visual criado após W98.
Versão no EXE faz diferença pra antivírus?
Enviado: 16 Jul 2024 13:04
por JoséQuintas
O pessoal do xharbour mistura um pouco as coisas, porque faz tudo por BAT.
manifest:
Pode deixar numa pasta específica, aqui deixo em RESOURCES
Pode usar o mesmo arquivo pra tudo
RC
Do mesmo jeito que num email você anexa arquivos, esse RC indica o que vai anexar no EXE.
Aí que vai indicar se entra manifest, informações do EXE, ícones, bitmaps, etc.
Vai ser compilado pra RES, mas nem importa, o hbmk2 do harbour faz isso automático.
Pode ter vários RC, ou compilados RES, sem problema
Se existirem RC e RES, eles vão ser indicados na lista pra compilar.
Código: Selecionar todos
#include "build.ch"
1 VERSIONINFO
FILEVERSION JOSEQUINTAS_VERSAO_RC
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "CompanyName" , "JPA TECNOLOGIA LTDA"
VALUE "FileDescription" , "JPA Integrado"
VALUE "LegalCopyright" , "José M C Quintas"
VALUE "OriginalFilename" , "JPA.EXE"
VALUE "ProductName" , "JPA Integrado"
VALUE "ProductVersion" , "JPA SQL"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0416, 1252
END
END
#define RT_MANIFEST 24
#define APP_MANIFEST 1
APP_MANIFEST RT_MANIFEST "resource\\exe.manifest"
AppIcon ICON "ico\\icoJPA.ico"
icoAddList ICON "ico\\icoAddList.ico"
icoBalloon ICON "ico\\icoBalloon.ico"
icoBarCode ICON "ico\\icoBarCode.ico"
icoBuild ICON "ico\\icoBuild.ico"
...
Não precisa ficar gerando RC por fonte, igual mostraram aí.
Aqui eu uso arquivo separado e #include no RC pra ele.
\fontes\build\build.ch
Código: Selecionar todos
#define JOSEQUINTAS_VERSAO "2024.07.15.1601"
#define JOSEQUINTAS_VERSAO_RC 2407,15,16,01
Toda vez que compilo, esse CH de duas linhas é criado/atualizado.
Entra automático em qualquer compilação que eu faça.
Nem precisa inventar número de versão, é data/hora e pronto, inconfundível.
Versão no EXE faz diferença pra antivírus?
Enviado: 16 Jul 2024 13:07
por Abel
Obrigado JoseQuintas,
como tudo isso é novo, nunca configurei nada com arquivos manifest
acabo tendo duvidas basicas, e acredito que pode ajudar muitos outros aqui no grupo tambem.
voce sabe dizer o que eu preciso ajustar para liberar a aba segurança nas propriedades do EXE ?
Obrigado por enquanto,
ABEL
Versão no EXE faz diferença pra antivírus?
Enviado: 16 Jul 2024 13:14
por JoséQuintas
Abel escreveu:voce sabe dizer o que eu preciso ajustar para liberar a aba segurança nas propriedades do EXE ?
Tá falando aba de segurança, ou aba de detalhes ?
Se é essa de detalhes, acabei de postar tudo.
Inclusive do ícone do aplicativo, pra aparecer na consulta e/ou atalho.