Jump to content

Recommended Posts

Olá!

 

O assunto deste tópico é mostrar que existe vida após a compilação, e não é utilizando a tão famigerada "descompilação", pois mesmo que você consiga descompilar e obter o .au3 do executável, ele virá tão descaracterizado, tão bagunçado que a sua primeira reação será essa:

 

 

Isso porque o AutoIt junta tudo o que é usado, de todos os includes em um único arquivo!

 

Então se você tem fantasia na cabeça que vai um descompilar um .exe do AutoIt, e vai obter um código fofinho, bonitinho e formatadinho...

Senta e chora neném, porque não vai não!

 

Faça o teste com um simples ConsoleWrite("hello world").

 

Olharás para o código mil vezes de manhã, dez mil vezes durante a madrugada, e nada entenderás!

 

As vezes nem eu mesmo entendo o código formatado que acabei de criar à 10 minutos atrás, imagina o que fiz ontem... Com mais de um ano, vixi...

 

Mas e se você embutir em seu executável uma forma de extrair o código fonte limpinho! Do jeito que era! Formatadinho! Não seria legal?

Eu faço isso em alguns script e confesso, foi a melhor coisa, pois realmente me salvou.

 

Segue exemplo:

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include-once
#include <FileConstants.au3>

If $CmdLine[0] Then
    If $CmdLine[1] = "sourcecode" And $CmdLine[2] = "please" Then FileInstall("teste.au3", "teste" & @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & ".au3", $FC_OVERWRITE)
EndIf

ConsoleWrite("Hello world" & @LF)

Obs: FileInstall no primeiro parâmetro, que é a referência do arquivo não suporte variáveis, tem que ser literal, isto é: "C:\fakedir\fakescript.au3", se colocar @ScriptDir & "\fakescript.au3" vai dar erro.

 

No MS-DOS:

Pasta de C:\AutoIt\SourceCodePlease
07/09/2017 09:51 <DIR> .
07/09/2017 09:51 <DIR> ..
07/09/2017 09:50 465 teste.au3
07/09/2017 09:50 384.512 teste.exe
C:\AutoIt\SourceCodePlease>teste.exe sourcecode please
C:\AutoIt\SourceCodePlease>dir
O volume na unidade C é teste
O Número de Série do Volume é 72C2-FA67
Pasta de C:\AutoIt\SourceCodePlease
07/09/2017 09:51 <DIR> .
07/09/2017 09:51 <DIR> ..
07/09/2017 09:50 465 teste20170907095129.au3
07/09/2017 09:50 465 teste.au3
07/09/2017 09:50 384.512 teste.exe

 

 

Logicamente, você pode brincar bastante com o $CmdLine, colocar uma senha associada ao número do dia, exemplo:

 

Se hoje é dia 5, a senha tem que estar no $CmdLine[5+2].

Se hoje é dia 10, a senha tem que estar no $CmdLine[10+2].

 

Porque o +2?

$CmdLine[0] = número de elementos do array

$CmdLine[1] = sourcecode

$CmdLine[2] = a

$CmdLine[2] = u

$CmdLine[3] = t

$CmdLine[4] = o

$CmdLine[5] = i

$CmdLine[6] = t

$CmdLine[@mday+2] = please

 

Entendeu?

 

Quando você digita script.exe param1 param2 param3, tudo o que você digitar depois do nome do executável é parâmetro, e são separados por (ou pelos) espaço(s) entre eles.

Então o que tem efeito, é o $CmdLine[1] e o $CmdLine[@mday+2], o resto... coloca qualquer coisa, pois vai ser ignorado mesmo.

 

Assim não fica tão fácil de obter o seu sourcecode.

 

Algum tempo depois...

 

Depois da postagem, fiquei pensando em algo...

Os includes feitos pelo FileInstall, de que forma ficam?

Será que quando eu descompilo, eu não coloquei o código "limpinho" em outro lugar que fica mais fácil ainda de obter do quem com um decompiler?

 

Fiz essa pergunta no fórum americano, se tiver interesse, veja mais aqui.

 

 

Well...

 

Segundo o J :blink: s, "É seguro? Não".

 

Não tenho conhecimento técnico suficiente neste momento para poder falar mais sobre o assunto.

Já que o FileInstall não é uma UDF, é uma função nativa do AutoIt, portanto, de código fechado, o qual não tenho acesso.

Existe o código aberto do AutoIt da versão 1.x, mas acho que não serve mais nem pra referência.

 

Comercialmente não é uma boa prática[1].

 

Mas em desenvolvimento, eu considero uma boa ideia[2].

 

 

Então o final é cerveja!

[1]BRAHMA ou [2]SKOOL, você escolhe, mas use com moderação.

 

(isso é uma piada, ou tentativa)

 

Veja também:

https://www.autoitscript.com/autoit3/docs/intro/running.htm

  • Like 2

Share this post


Link to post
Share on other sites

Poxa esta eu gostei.. já tive problemas como isso, criei uma script e depois quando precisei modificar não achei o src, pior que tinha ofuscado o codigo e nem descompilando consegui obter o codigo.

 

mais uma dica valiosa :).. obg Luigi

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×