Ingeniería inversa - Contramedidas [cerrado]

1

Soy nuevo en seguridad de la información pero estoy aprendiendo sobre ingeniería inversa.

Leí aquí sobre contramedidas para hacer ingeniería inversa difícil. ¿La firma de código protege el código de la ingeniería inversa?

EDIT : acerca de la ofuscación, creo que alguien ha respondido. Gracias!

    
pregunta eightShirt 27.02.2016 - 00:01
fuente

2 respuestas

4

Estás confundiendo muchos términos aquí. Quizás pueda ayudar.

  • La firma de código es el proceso de firmar criptográficamente un archivo para que un usuario del archivo pueda saber quién firmó el archivo y si se ha modificado desde la firma. Por lo general, no hace que el archivo sea ilegible, sin embargo, dependiendo de cómo se adjunta la firma al archivo, es posible que necesite una herramienta especial para examinarlo. No tiene ningún efecto sobre el código fuente o la ingeniería inversa. Windows tiene un proceso de firma de código llamado Authenticode que está bien documentado . Es posible que desee leer sobre él para obtener información general de antecedentes.
  • La ocultación intenta hacer que el código ejecutable sea más difícil de leer. Por lo general, esto se reserva para los idiomas traducidos como JavaScript y los lenguajes compilados de byte-code como Java y C # / .NET porque es mucho más fácil ver la fuente de estos programas. La ofuscación no está relacionada con la firma de código. Debe buscar sistemas de ofuscación para su plataforma específica (por ejemplo: .NET).
  • Nada hará que tu código de ensamblaje sea ilegible. Después de todo, la CPU necesita leerlo para ejecutar su programa, por lo que debe ser legible. Dicho esto, las técnicas de ofuscación pueden hacer que sea más difícil de leer, aunque el código de ensamblador optimizado ya es bastante difícil de aplicar ingeniería inversa.

Creo que necesitas hacer más investigación en este punto y volver cuando tengas una mejor comprensión de los conceptos básicos.

    
respondido por el Neil Smithline 27.02.2016 - 04:02
fuente
0

No estoy seguro de cómo la firma de código podría proteger a su código de una ingeniería inversa.

Sin embargo, podría proteger su derecho como autor de código (esa es una de las formas en que los proveedores de software lo utilizan para asegurarse de que la aplicación que usted no ha sido manipulada).

La ofuscación es simplemente escribir el código de manera que sea difícil de entender. Aplicas esta técnica mientras escribes tu código fuente. No hará que su montaje sea "ilegible". El cracker aún podría ver las instrucciones de ensamblaje una vez que conecte su archivo ejecutable (que recibió después de compilar su código confuso) a un disemador. Sin embargo, le será difícil entender qué hace y traducirlo al código original. Aquí hay un ejemplo de un código C ofuscado:

#include <stdio.h>
main(t,_,a)
char
*
a;
{
    return!

0<t?
t<3?

main(-79,-13,a+
main(-87,1-_,
main(-86, 0, a+1 )

+a)):

1,
t<_?
main(t+1, _, a )
:3,

main ( -94, -27+t, a )
&&t == 2 ?_
<13 ?

main ( 2, _+1, "%s %d %d\n" )

:9:16:
t<0?
t<-72?
main( _, t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#;\
#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;\
q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; \
r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;\
{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:
t<-50?
_==*a ?
putchar(31[a]):

main(-65,_,a+1)
:
main((*a == '/') + t, _, a + 1 )
:

0<t?

main ( 2, 2 , "%s")
:*a=='/'||

main(0,

main(-61,*a, "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry")

,a+1);}  
    
respondido por el HSN 27.02.2016 - 00:35
fuente

Lea otras preguntas en las etiquetas