Olá, Khabrovites. No âmbito do curso "Engenharia Reversa. Básico" Alexander Kolesnikov (especialista em proteção complexa de objetos de informatização) elaborou um artigo.
Também convidamos a todos para um webinar aberto sobre o tópico "Exploração de vulnerabilidades no driver. Parte 1 " . Os participantes do webinar, junto com um especialista, analisarão as vulnerabilidades de estouro de driver e as especificidades do desenvolvimento de exploits no modo kernel.
Este artigo discutirá abordagens para analisar arquivos executáveis compactados usando ferramentas simples de engenharia reversa. Discutiremos alguns dos compactadores usados para compactar arquivos executáveis. Todos os exemplos serão conduzidos no sistema operacional Windows, entretanto, as abordagens estudadas podem ser facilmente portadas para qualquer sistema operacional.
Configuração de kit de ferramentas e sistema operacional
Para os testes, usaremos uma máquina virtual rodando Windows. O kit de ferramentas conterá os seguintes aplicativos:
depurador x64dbg;
Plug-in x64dbg Scylla instalado por padrão;
hiew Demo;
A maneira mais rápida e fácil de descompactar qualquer arquivo executável é usar um depurador. Mas, como também consideraremos a linguagem de programação Python, podemos precisar de um projeto:
projeto uncompile6 que permite analisar o bytecode de uma máquina virtual Python;
pyinstallerExtractor é uma ferramenta para extrair um arquivo pyInstaller.
Métodos gerais de desempacotamento
, . . , . — UPX. , .
, , . 1.5 .
-? , ? . , :
, UPX:
:
— , , ;
: , .
, , . :
— , ;
— ( , );
;
.
. . pushad/popad
push
. ESP/RSP, "Hardware Breakpoint" , . , . .
UPX
. UPX:
:
:
ESP — . :
:
, Scylla Hide .
, .
PyInstaller
, . , PyInstaller — , Python . , Python . .
- . Python PyInstaller. :
def main():
print("Hello World!")
if __name__ == '__main__':
main()
pyInstaller
exe
:
pip install pyinstaller
pyinstaller -F hello.py #-F
, , . , , , . .
, ./dist/test.exe
. pyinstallerextractor
uncompile3
:
, . exe
. test.pyc
. hiew
:
, Python. — uncompile6
.
.