Eu tenho experimentado com a criação de um programa instalador de arquivos em lote. incorporando o arquivo no arquivo em lotes e usando uma more +...
linha para extraí-lo.
Aqui está o meu código:
@echo off
set self=%~df0
>%userprofile%\desktop\file.exe more +8 "%self%"
echo done!
pause
exit
REM beginning of exe file...
c
sd
€ ~ * 0 ~ * € *’s6 (e
t
€ s.
(/
€ * (f
*^( og
,
(9 oh
*0 K ~ ->~ (i
(j
~ -( þ7 sk
ol
€ Þ(m
Ü~ *
etc...
O problema:
Eu estou tentando extrair um exe GUI, no entanto, uma vez que é extraído, quando tento executá-lo, o Windows trata como se fosse um programa de 16 bits ... Por que isso acontece? E como posso consertar isso?
Respostas:
Como apontado nos comentários, o preenchimento de um programa executável dentro de um arquivo de texto irá abocanhar o arquivo binário. Em vez disso, você pode armazenar uma versão codificada e decodificá-la. Para conseguir isso facilmente, você pode usar o PowerShell. Comece com este arquivo em lotes:
Adicione uma linha extra em branco no final.
A parte interessante é a invocação do PowerShell. Esse comando lê o conteúdo do arquivo de lote, pega a última linha, decodifica-a de Base64 e grava esses bytes em um arquivo chamado
extracted.exe
. Em seguida, o arquivo em lotes apenas executa esse EXE e, depois de feito isso, limpa excluindo o executável temporário.Para fazer com que a última linha tenha as informações necessárias, abra o PowerShell,
cd
no diretório com o arquivo de lote e execute-o (com os nomes e caminhos de arquivos reais colocados):Uma vez feito isso, seu arquivo de lote poderá extrair o programa e executá-lo.
fonte