Comment découvrir les options de ligne de commande (le cas échéant) pour un exécutable sans papier d'origine inconnue?

StackOverflow https://stackoverflow.com/questions/2341095

Question

Prendre un exécutable sans papier d'origine inconnue. Essayer / ?, -h, --help à partir de la ligne de commande donne rien. Est-il possible de découvrir si l'exécutable prend en charge toutes les options de ligne de commande en regardant à l'intérieur de l'exécutable? inverse Peut-être l'ingénierie? Quelle serait la meilleure façon de le faire?

Je parle d'un exécutable Windows, mais serais intéressé d'entendre ce que les différentes approches seraient nécessaires avec un autre système d'exploitation.

Était-ce utile?

La solution

Pour Windows, vous pouvez voir cette question sur décompilation executables Windows. Il devrait être relativement facile à au moins découvrir les options (ce qu'ils font est une autre histoire).

Autres conseils

Dans linux, la première étape serait exécuté strings your_file qui décharge toutes les chaînes de caractères imprimables dans le fichier. CARactère constantes seront ainsi représentées, y compris les instructions « d'utilisation ».

L'étape suivante pourrait consister à exécuter ltrace sur le fichier. Cela montre tous les appels de fonction fait le programme. Si elle comprend getopt (ou familier), il est un signe certain qu'il est en train de traiter les paramètres d'entrée. En fait, vous devriez être en mesure de voir exactement quel argument le programme attend puisque c'est le troisième paramètre à la fonction getopt.

Si c'est essayer un exécutable .NET en utilisant réflecteur . Cela va convertir le code MSIL dans le code équivalent C # qui peut le rendre plus facile à comprendre. Malheureusement, les noms de variables et privés locaux seront perdus, car ceux-ci ne sont pas stockés dans le MSIL mais il devrait être encore possible de suivre ce qui se passe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top