2012-01-15 20 views
34

Supongamos que tiene un .exe y desea comprobar si tiene opciones de línea de comandos. ¿Cómo se puede saber si el .exe tiene esta habilidad? En mi caso, ahora que Nir Sofers WebBrowserPassView.exe tiene la capacidad de iniciarlo a través de cmd.exe y WebBrowserPassView.exe/stext output.txt. ¿Pero cómo puedo saber si no lo sé?¿Cómo puedo averiguar si un .EXE tiene opciones de línea de comandos?

+1

leer el manual o Google. No hay una manera genérica de recuperar esta información – yas4891

+3

Aunque esta no es una pregunta muy centrada en la programación, no creo que necesariamente merezca un voto negativo. ¿Quién rechazó esto: cuidado de explicar? – yas4891

Respuesta

48

La forma más fácil sería usar el uso de ProcessExplorer pero aún así requeriría algunas búsquedas.

Asegúrate de que tu ejecutable esté ejecutándose y abre ProcessExplorer. En ProcessExplorer busque el nombre de su archivo binario y haga doble clic para mostrar las propiedades. Haga clic en la pestaña Cuerdas. Busque en la lista de cadenas que se encuentran en el archivo binario. La mayoría de las cadenas serán basura para que puedan ser ignoradas. Busque cualquier cosa que pueda parecerse a un cambio de línea de comando. Pruebe este interruptor desde la línea de comando y vea si hace algo.

Tenga en cuenta que podría ser que su binario simplemente no tenga interruptores de línea de comandos.

Como referencia, se muestran los pasos anteriores aplicados al ejecutable de Chrome. La línea de comandos aceptado por Chrome se puede ver en la lista: enter image description here

+5

Esto fue extremadamente útil para descubrir los switches para MalwareBytes. Para acelerar su búsqueda, la mayoría de los interruptores de programa comienzan con un "/" o "-", por lo que puede usar el cuadro de diálogo de búsqueda (abajo a la derecha de la imagen) con estos caracteres para encontrar lo que está buscando más rápido. –

+0

¿Qué tipo de características admite el "Buscar" en este panel de propiedades de Process Explorer? RegEx? Comodines? Parece que no puedo entenderlo a primera vista. –

+0

@JohnSuit, solo me temo que es una búsqueda básica, pero es posible que notes el botón "Guardar" que te permite exportar la lista a un archivo .txt. Puede abrir este documento con cualquier editor de texto que admita RegEx, Wildcards, etc. y busque de esa manera. – Adam

15

Invocarlo desde el shell, con un argumento como /? o --help. Esos son los cambios de ayuda habituales.

+0

No ayudan, ya que el .exe solo se inicia, sin más resultados. – JohnnyFromBF

+0

Sí bien, pero debe haber una posibilidad de depurar esto a través de RE o algunas otras técnicas. – JohnnyFromBF

+2

@Ian, por supuesto, puede depurar su camino a través de la aplicación y buscar interruptores. – yas4891

3

A menos que el autor del archivo ejecutable haya proporcionado específicamente una forma de mostrar una lista de todos los conmutadores de línea de comandos que ofrece, no hay forma de hacerlo.

Como sugiere Marcin, los interruptores típicos para mostrar todas las opciones son /? o /help (algunas aplicaciones podrían preferir la sintaxis de estilo Unix, -? y -help, respectivamente). Pero esas son solo una convención común.

Si no funcionan, no tiene suerte. Deberá verificar la documentación de la aplicación, o quizás intente descompilar el ejecutable (si sabe lo que está buscando).

1

sólo tiene que utilizar IDA PRO (https://www.hex-rays.com/products/ida/index.shtml) para desmontar el archivo y búsqueda de alguna opción de línea de comandos conocidos (utilizando Buscar ... Texto) - en esa sección normalmente verá todas las opciones de línea de comando para el programa (LIB2NIST.exe) en la siguiente captura de pantalla, por ejemplo, muestra una opción de línea de comando documentada (/ COM2TAG) pero también algunas indocumentadas, como/L. ¿Espero que esto ayude?

enter image description here

1

Realmente esto es una extensión de la respuesta de Marcin.

Pero también podría intentar pasar argumentos de "basura" para ver si le devuelven algún error. Obtener cualquier respuesta del ejecutable directamente en el intérprete de comandos significa que probablemente esté mirando los argumentos que está pasando, con una respuesta de error cercana a la garantía de que sí lo está.

En caso de que no tenga que preguntar directamente a los editores/creadores/propietarios ... olfatear los binarios usted mismo parece demasiado trabajo para un usuario final.

0

Sysinternals tiene otra herramienta que podría utilizar, Strings.exe

Ejemplo:

strings.exe c:\windows\system32\wuauclt.exe > %temp%\wuauclt_strings.txt && %temp%\wuauclt_strings.txt

+0

Gracias @ user8027324. He agregado un poco de formato a tu respuesta. ** Strings.exe ** no es exactamente una forma infalible de hacer esto, pero ciertamente lo he usado con ese fin antes. –

Cuestiones relacionadas