shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Desobfuscar script


From: Rodrigo Tenorio
Subject: Re: [shell-script] Desobfuscar script
Date: Sat, 16 Aug 2014 10:15:12 -0300

Show. Ficou melhor que eu esperava!
Boa solução. :)

Em 16/08/2014 03:59, "Fernando Mercês address@hidden [shell-script]" <address@hidden> escreveu:
 

Gostei da ideia de criar o mapa para o sed. Foi bem rápido! Primeiro gerei as substituições:

for i in {32..126}; do
   echo "s/LKXM_T\\(\\-279\\+$i\\) ?\\&? ?/$(echo -e $(printf "\\\x%x" $i))/g"
done > a.sed

Depois de escapar as barras em duas linhas do arquivo a.sed, rodei:

sed -rf a.sed < entrada.vbs

A saída foi como esperada! Obrigado! :)


Att,

Fernando Mercês
Linux Registered User #432779
www.mentebinaria.com.br
------------------------------------
"Ninguém pode ser escravo de sua identidade; quando surge uma possibilidade de mudança é preciso mudar". (Elliot Gould)


2014-08-16 3:30 GMT-03:00 Rodrigo Tenorio address@hidden [shell-script] <address@hidden>:
 

Bom.

Para cada linha você deve separar tudo que não for o número que você precisa pra converter em letra. Pode ser até em outro arquivo temp qualquer.
Eu usaria o + e o ) para separar os números.

Depois para cada número fazer a conversão adequada.
Por fim, antes de passar para a linha seguinte substituir os códigos especiais pelas letras em questão.
Sed e awk podem te ajudar facilmente  com isso.

Algo como:
While read linhaOriginal; do
While read numLetra; do
Echo $linhaOriginal | sed s/LKXM_T(-279+$numLetra) & / $letraConvertida/
Done <<< $(comando para separar os números ou o txt com os números.)
Done <<< $(arquivo txt original.)

É só para te dar uma luz do que fazer. Não vai funcionar. E não abordei conversão dos números para letras porque eu não sei como se faz.

Uma dica, já penei com coisas de windows que não estavam na codificação normal, iso ou utf-8. É interessante verificar esse detalhe. Na lista tem uma discução sobre comparações entre registros de windows que aborda a coisa. Fui eu mesmo criei. Dá uma olhada.
Chama "comparando registros".

Outra maneira mais trabalhosa, mas também funcional é você escrever um mapa de códigos um a um e fazer um sed, ou vários deles, substituindo o código de letra de maneira direta.

Este é o caminho das pedras que eu trilharia.
Sinceramente eu iria pelo menos trabalhoso.
Além de ser mais fácil, é mais elegante. :)

Em 16/08/2014 02:16, "Fernando Mercês address@hidden [shell-script]" <address@hidden> escreveu:

 

Olá, amigos.

Tenho um código obfuscado em _vbscript_ que quero desobfuscar com bash. Um trecho do arquivo de entrada do script é:

---
Set Px = CreateObject(LKXM_T(-279+87) & LKXM_T(-279+83) & LKXM_T(-279+99) & LKXM_T(-279+114) & LKXM_T(-279+105) & LKXM_T(-279+112) & LKXM_T(-279+116))
set SHL = CreateObject(LKXM_T(-279+83) & LKXM_T(-279+104) & LKXM_T(-279+101) & LKXM_T(-279+108) & LKXM_T(-279+108) & LKXM_T(-279+46) & LKXM_T(-279+65) & LKXM_T(-279+112) & LKXM_T(-279+112) & LKXM_T(-279+108))
---

A saída deve substituir "LKXM_T(-279+65) &" por "A", poruqe é 65 é o decimal correspondente de A na tabela ASCII. Ou seja, para toda a entrada acima, a saída seria:

---
Set Px = CreateObject(WScript)
Set SHL = CreateObject(Shell.Appl)
---

Eu consegui capturar o número após o sinal de + com o sed:

sed 's/LKXM_T(-279+\(.*\))/\1/'

Mas eu tenho que processá-lo (converter em ASCII) antes de imprimir. Um jeito que achei é:

$ echo -e $(printf "\\\x%x" 65)
A

Ainda assim não conseguir conectar as coisas. Além disso, as outras partes do arquivo de entrada como "Set PX = CreateObject(" etc não devem ser mexidas. Alguma ideia?

Abraços.


Att,

Fernando Mercês
Linux Registered User #432779
www.mentebinaria.com.br
------------------------------------
"Ninguém pode ser escravo de sua identidade; quando surge uma possibilidade de mudança é preciso mudar". (Elliot Gould)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]