NOTA: Em 11/03/2020, o Avast anunciou que havia decidido desativar esse intérprete globalmente!
O principal processo do Avast Antivirus é chamado Avastsvc.exe, que funciona como sistema.

Esse serviço carrega o mecanismo antivírus de baixo nível e analisa dados não confiáveis recebidos de fontes como o minifilter do sistema de arquivos ou o tráfego de rede interceptado.
Apesar de ser altamente privilegiado e de processamento de contribuições não confiáveis pelo design, ela não tem caixa não dinada e possui baixa cobertura de mitigação. Quaisquer vulnerabilidades nesse processo são críticas e facilmente acessíveis a atacantes remotos.
Então .. talvez não seja ótimo que inclua um intérprete de JavaScript personalizado .... ???? ?

Este repositório contém um shell interativo que permite testar o intérprete no Linux para pesquisas de vulnerabilidade.
Veja como experimentá -lo, primeiro instale as dependências.
$ sudo apt install libreadline-dev:i386 libc6-dev-i386 gcc-multilib
$ sudo yum install readline-devel.i686 glibc-devel.i686 libgcc.i686
Agora você pode clonar este repositório.
$ git clone https://github.com/taviso/avscript.git
$ cd avscript
$ git submodule update --init --recursive
Se tudo parecer bom, construa -o e avscript deve estar pronto.
$ make
Por razões de desempenho, o AVAST não interpreta todos os arquivos JavaScript que encontram, eles usam uma heurística para determinar se é necessário. Descobri que anexar o arquivo javascript.txt incluído neste repositório é suficiente para sempre acionar a heurística.
Por exemplo, se você encontrou uma vulnerabilidade e deseja reproduzi -lo no Windows, primeiro fará isso:
$ cat yourtestcase.js javascript.txt > ReproForWindows.js
Agora verifique se ainda faz o que você espera, por exemplo
$ ./avscript ReproForWindows.js
main(): File ReproForWindows.js` loaded, about to initialize interpreter...
Segmentation fault (core dumped)
Em seguida, verifique a falha reproduzida no Windows.
O Serviço Avast é um processo protegido, o que significa que a depuração do UsersPace é complicado. Se você configurou o KD, você pode simplesmente desfazer isso e depois depurar o espaço do usuário funciona bem.
Uma solução rápida e fácil que funciona em 32 bits é fazer isso (observe que o patchguard não permitirá isso no x64, mas você pode fazer algo semelhante com os comandos do ponto de interrupção).

Há também uma configuração em "Solução de problemas" chamada "Ativar autodefesa" que deve ser desativada. Acredito que essa configuração desativa a conexão OpenProcess() no SSDT, onde normalmente a lista negra de seu próprio processo.
Pode ser necessário desativar temporariamente os "escudos" na interface do usuário do Avast enquanto você anexa, para que as operações do sistema de arquivos não estivessem encaixe enquanto o serviço é suspenso.
O Avast não publica nenhum símbolo para o motor, mas a depuração com IDA ou GDB ainda é possível. Existem algumas anotações sobre a depuração do código do Windows do Linux na documentação do LoadLibrary.
Se você quiser usar o IDA, eu recomendaria usar o back -end gdbserver .
Basta usar algo assim, pode ser necessário instalar o pacote GDBSERVER primeiro:
$ gdbserver 0.0.0.0:23946 ./avscript
Isso funciona surpreendentemente bem, até os pontos de interrupção dos pseudocódios funcionam.

Se você encontrar uma vulnerabilidade, é provável que seja crítico e wormable .
Por favor, denuncie com urgência.