Página 1 de 1

OFF TOPIC - CRIPTOGRAFAR EXECUTÁVEL 32 BITS

Enviado: 05 Nov 2006 11:12
por carlos_dornelas
Olá pessoal, desculpe o OFF, mas pode ser que interesse também a outros colegas deste fórum. Estou precisando de um programa que criptografe executáveis, de preferência free, tipo o Cryexe para programas Clipper, só que para executáveis gerados pelo harbour. Alguém tem uma dica?

{}s

Antonio Carlos

Enviado: 05 Nov 2006 13:52
por rochinha
Amiguinho

Estive recentemente fazendo alguns testes com OCX para integra-las ao meu sistema em Fivewin e consegui exito usando NSLOCK15.OCX.

Usei a versão 2.7 que possui uma classe tActivex que permite acesso direto a estas caracteristicas.

Não sei qual biblioteca voce usa com o Harbour mas poderia adaptar o codigo a seguir usando o TAutoOLE do Harbour anexando a sua linkagem a HBOLE.LIB.

Código: Selecionar todos

// FiveWin ActiveX support demo - Using Adobe Acrobat Reader

#include "FiveWin.ch"

function Main()

   local oWnd, oActiveX, cLiberationKey := space(16)

   DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"

   oActiveX = TActiveX():New( oWnd, "nslock15vb5.ActiveLock" )

   oActiveX:Do( "Password"           , "minhasenha" )
   oActiveX:Do( "SoftwareName"       , "NomeDoSistema" )
   oActiveX:Do( "LiberationKeyLength", 16 )
   oActiveX:Do( "SoftwareCodeLength" , 16 )

   //? oActiveX:GetProp( "SoftwareCode" )

   if ! oActiveX:GetProp( "RegisteredUser" )
      MsgGet( "Entre a chave de liberacao",; // Title
              "Chave:",;                     // Label
              @cLiberationKey )              // A variable by reference
      oActiveX:Do( "LiberationKey", cLiberationKey )
   endif

   if ! oActiveX:GetProp( "RegisteredUser" )
      if oActiveX:GetProp( "LastRunDate" ) > date()
         ? 'Data foi retrocedida. Programa sera encerrado'
      else
         ? 'Faltam ' + Str( 30 - oActiveX:GetProp( "UsedDays" ) ) + ' dias.'
      endif
      ? 'DEMONSTRACAO'
      oWnd:cCaption := 'DEMONSTRACAO'
      SysRefresh()
   else
      ? 'REGISTRADO'
      oWnd:cCaption := 'REGISTRADO'
      SysRefresh()
   endif

   //oWnd:oClient = oActiveX // To fill the entire window surface

   ACTIVATE WINDOW oWnd 
return nil
Troque as linhas para uso com o TAutoOLE

Para manuseio do Activex através de TActiveX:

Código: Selecionar todos

   oActiveX = TActiveX():New( oWnd, "nslock15vb5.ActiveLock" )
   // Métodos
   oActiveX:Do( "Metodo"           , "string" )
   // Propriedades
   oActiveX:GetProp( "RegisteredUser" )
   oActiveX:SetProp( "Propriedade", 123 )
   oActiveX:SetProp( "Propriedade", "String" )
Para manuseio do Activex através de TAutoOLE:

Código: Selecionar todos

   oAutoOLE := TOleAuto():New( "nslock15vb5.ActiveLock" )

   // Propriedades
   oAutoOLE:Get( "propriedade" )
   oAutoOLE:Set( "propriedade"  , 123 )
   oAutoOLE:Set( "propriedade"  , "string" )

   // Métodos
   oActiveX:Do( "Metodo"           , "string" )

   // Termina objeto OLE
   oAutoOLE:End()

   ou

   cVariavel := oAutoOLE:propriedade // Usado para GET da propriedade
   oAutoOLE:propriedade := 123         // Usado para SET a propriedade
   oAutoOLE:propriedade := "string"
Para manuseio do Activex através de CreateOleObject:

Código: Selecionar todos

   hWordOle := CreateOleObject( "nslock15vb5.ActiveLock" )

   // Propriedades
   OleGetProperty( hWordOle, "propriedade" )
   OleSetProperty( hMainWnd, "propriedade", 123 )
   OleSetProperty( hMainWnd, "propriedade", "string" )

   // Métodos
   OleInvoke( hWordOle, "Metodo", "parametro" )
   OleInvoke( hWordOle, "Metodo" )

   // Termina objeto OLE
   OleUninitialize()
O que foi colocado aqui o que tirei de cabeça pode não estar tão correto mais basta dar uma pesquisada em exemplos de uso destes recursos e voce verá que é este o caminho.

A NSLOCK pode ser baixada de:

VB - Protegendo sua aplicação com o nslock em 7 etapas. José Carlos Marcoratti

@braços :?)

Enviado: 05 Nov 2006 22:03
por carlos_dornelas
Olá Rochinha, obrigado pela resposta. Se eu entendi certo o NSLOCK seria mais para proteção contra cópias ilegais ou controlar versão demo. O que eu quero mesmo é criptografar o EXE para evitar/dificultar por exemplo a edição direta do executável, pois, sem criptografia, muitas informações podem facilmente ser reconhecidas ao visualizar o EXE. Seria como o blinker compres ou como o Cryexe faz. Mesmo assim, achei interessante o NSLOCK e vou tentar estudá-lo melhor

{}

Antonio Carlos

Enviado: 05 Nov 2006 22:44
por rochinha
Amiguinho

Em relação ao Harbour sua descompilação ainda pode ser impossivel, mas se voce quiser dificultar ainda mais as informações autorais em seus programas crie funções que apresentem os dados autorais mas grave as mensagens já embaralhadas e a sua funções de desembaralhamento apresenta as mesmas.

Exemplo voce terá uma string assim:

cDireitoAutoral := "98A7S8U@#YUI4#3UKHG2#$#@2@(*GLKK&"

Mas sua função faria isto:

@ 24,0 say DireitoAutoral( cDireitoAutoral )

Apresentando isto:

"*** SISTEMA DESENVOLVIDO POR MIM ***"

Veja também na sessão código fonte algo sobre "modulo de registro...", onde abordei este questão e coloquei um código que armazena informações dentro do próprio executável evitando arquivos externos e pode ser um bom ponto de partida para voce.

@braços :?)

Enviado: 05 Nov 2006 23:58
por vagucs
O PECOMPACT é o melhor programa para isto, não achei na net nada relativo a reverção do processo de criptografia que ele faz.

Enviado: 06 Nov 2006 15:28
por carlos_dornelas
Rochinha e Wagner!

Obrigado pela atenção. Vou testar vossas dicas. Qualquer coisa grito novamente.

[]s

Antonio Carlos