Como descobrir opções de linha de comando (se houver) para um executável não documentado de origem desconhecida?
-
22-09-2019 - |
Pergunta
Pegue um executável não documentado de origem desconhecida.Tentar /?, -h, --help na linha de comando não produz nada. É possível descobrir se o executável suporta alguma opção de linha de comando olhando dentro do executável? Possivelmente engenharia reversa?Qual seria a melhor maneira de fazer isso?
Estou falando de um executável do Windows, mas gostaria de saber quais abordagens diferentes seriam necessárias com outro sistema operacional.
Solução
Você pode encontrar muitos exemplos neste blog
e há um toolkit aqui.
Outras dicas
No Linux, a etapa um seria executada strings your_file
que despeja todas as cordas dos caracteres imprimíveis no arquivo. Qualquer constante que os chars serão mostrados, incluindo quaisquer instruções de "uso".
O próximo passo pode ser correr ltrace
no arquivo. Isso mostra toda a função chama o programa. Se incluir getopt
(ou familiar), é um sinal claro de que está processando parâmetros de entrada. De fato, você deve poder ver exatamente qual argumento o programa está esperando, pois esse é o terceiro parâmetro para o getopt
função.
Se for um executável .NET, tente usar Refletor.Isso converterá o código MSIL no código C# equivalente, o que pode torná-lo mais fácil de entender.Infelizmente, os nomes das variáveis privadas e locais serão perdidos, pois não são armazenados no MSIL, mas ainda deve ser possível acompanhar o que está acontecendo.