2009-09-14 17 views
10

Trabajo para un contratista del gobierno que es muy exigente con el software que se instala en sus máquinas (leyes del gobierno de EE. UU.). Como parte de un esfuerzo de ingeniería inversa, necesito averiguar qué es lo que hace un determinado conjunto de archivos .class. Un descompilador sería realmente útil, pero parece que no puedo encontrar uno que cumpla con los estándares establecidos aquí. Básicamente, necesito encontrar un descompilador desarrollado en los Estados Unidos. Alguien sabe de alguno? Gratis es preferido, pero comercial hará.Descompilador de Java escrito en los Estados Unidos

FYI, JAD y JD están fuera ya que no están desarrollados en los EE. UU.

+1

Si solo se trata de descubrir lo que hace y no de producir código compilable, entonces el buen viejo 'javap' podría ser suficiente. Es más un desensamblador de código byte que un descompilador, pero podría ser suficiente. –

+0

Lo he intentado, pero me gustaría un poco más que nombres de métodos y 'invokevirtual' por todos lados. – geowa4

+11

El requisito de los EE. UU. Parece un poco extraño dado que parte del desarrollo de JRE se realiza en Rusia y China. –

Respuesta

2

Pensé que debería responder esto ya que nada me funcionó. Terminé resolviendo los requisitos usando javap, adivinando mucho y golpeando mi cabeza contra el escritorio hasta que funcionó. javap no me dio mucho de lo que necesitaba, ya que llamaba a un montón de código nativo. Eventualmente, obtuve lo que necesitaba usando el método probado y verdadero de adivinar y verificar.

Realmente tiene que haber un descompilador. Tal vez Sun (Oracle) puede hacer uno ...

+9

Quiere decir, * "realmente necesita haber un decompilador ** totalmente estadounidense ** para las agencias y burócratas gubernamentales xenófobos". * –

+0

Sí, eso parece bastante preciso. ya no trabajo allí.las herramientas siempre fueron un problema, ya que muchas cosas buenas se desarrollan en otros lugares. – geowa4

0

Supongo que es legal para usted descompilarlos en primer lugar, ¿verdad? La mayoría de los acuerdos de usuario que he leído indican que no se te permite realizar ingeniería inversa en nada ... Suponiendo que sea legal, ¿cómo es que JAD y JD están fuera?

He tenido éxito con DJ Java Decompiler, aunque no es tan bonito como JD. También hay SoThink Java Decompiler, pero nunca lo he usado personalmente.

Existen muchas otras, pero la mayoría de ellas parecen estar basadas en JAD, así que supongo que también están fuera.

+3

JAD y JD no se producen en los Estados Unidos. JAD es ruso, y parece que JD es francés. –

+0

se ha abordado la legalidad y está bien. – geowa4

1

Supongo que no puede mover los archivos .class de la máquina a una máquina de laboratorio donde puede instalar JAD?

Trabajo también con el gobierno y si una pieza de software en particular es fundamental para el éxito de su proyecto, debe comunicárselo a su PM, quien luego lo comunicará a su contraparte gubernamental. Después de eso, debe haber una lista de verificación para que sigan los evaluadores de IA para aprobar esa pieza de software.

+0

Sí, espero poder evitar la burocracia y la burocracia. – geowa4

+0

Qué proceso tan ridículo IMO. –

0

Una vez usé cavaj (freeware), pero no sé si está hecho en los EE. UU.

+0

cavaj es una interfaz para jad. – geowa4

0

mmmh bastante irónico, no se puede usar un descompilador porque el descompilador no se fabricó en los EE. UU. Pero puede descompilar el código sin embargo?

Si lo que necesita saber qué clase hace entonces preguntar a la gente que lo crearon para la fuente

Si se niegan a dar a la fuente entonces yo no creo que es legal para descompilarlo todos modos

+0

La ingeniería inversa es legal, y esto probablemente incluye la descompilación (no soy abogado). A menudo está prohibido en los acuerdos de licencia. –

-1

He aquí un idea, ¿puede enviar los archivos a otra persona para descompilar y luego simplemente enviarle la fuente decompilada?

+3

obviamente no es tan simple. – geowa4

2

¿Qué ocurre con la instalación de software "no aprobado" en una máquina virtual?

+0

idea interesante, voy a ver esto mañana. – geowa4

5

Informaré a su empleador que poner precondiciones sobre el origen del software no va a protegerlos, y no va a conseguir lo que quieren. Los EE. UU. Compiten en una economía global y en internet global. Suena un poco infantil pensar que obtienen alguna ventaja o seguridad de no instalar un software que funcione. Parte de ser un buen empleado, diseñador o programador es ayudar a su cliente a darse cuenta de sus limitaciones y superarlas. Deberías ayudarlos a un mayor éxito.

+8

es una regla establecida por el gobierno. ya que escriben los cheques, escriben las reglas. – geowa4

+3

Independientemente de cómo "suene" la limitación, no creo que sea tan infantil como podría pensar. El software creado por el gobierno protege los secretos de ese gobierno. No puede garantizar la seguridad al 100%, pero al menos puede intentar asegurarse de que cualquier persona que intente piratear su software se encuentre dentro de la jurisdicción legal del gobierno. El código abierto no es garantía de seguridad, como descubrieron los desarrolladores del kernel de Linux: http://linux.slashdot.org/article.pl?sid=03/11/06/058249. Es difícil trabajar, pero también hay muchos problemas de seguridad. – rtperson

+3

Dicho esto, incluso con esa justificación, la regla sigue siendo completamente tonta, más o menos similar a los intentos del gobierno de clasificar los esquemas de cifrado de 128 bits como "municiones" en los años 90. Ver al gobierno tratar de descubrir la tecnología es algo así como ver a un niño en la playa construir una pared de arena para proteger su castillo de arena de la marea entrante. – rtperson

2

Me asusta cuando escucho este tipo de tonterías emanadas de mi propio gobierno.

Ejecute jad -p, recompile la fuente y compare la clase compilada con el archivo de clase original.

Puede ejecutar jad en una instancia de computadora/máquina virtual desechables. Si hay un acuerdo razonable sobre la clase compilada, usted sabe que el software funcionaba correctamente.

+0

"Ejecutar jad -p ..." Ahora, ¿cómo se supone que voy a hacer eso si no puedo poner los dos en la misma máquina? – geowa4

Cuestiones relacionadas