c vs c ++ para ingeniería inversa o crackeo

Iniciado por retr02332, 19 Enero 2020, 06:03 AM

0 Miembros y 1 Visitante están viendo este tema.

retr02332

He buscado mucho en Internet y veo que se recomienda encarecidamente c para esta tarea, pensé que era mejor c ++ por el hecho de incluir el POO.

También he leído que estos dos son ciertamente compatibles, pero no sé en qué ni hasta que medida. Ojalá puedan guiarme un poco con esto, estoy algo confundido.

@XSStringManolo

Cita de: clay2332xd en 19 Enero 2020, 06:03 AM
He buscado mucho en Internet y veo que se recomienda encarecidamente c para esta tarea, pensé que era mejor c ++ por el hecho de incluir el POO.

También he leído que estos dos son ciertamente compatibles, pero no sé en qué ni hasta que medida. Ojalá puedan guiarme un poco con esto, estoy algo confundido.
Ambos son necesarios. A parte hay mucho código open source escrito en C++.
Son compatibles en el sentido que un compilador C++ también compila C. Esto significa que un programador tranquilamente puede escribir 1000 instrucciones en C y 2 en C++ y viceversa.

ThunderCls

#2
Respondiendo tu pregunta a nivel basico, si lo que deseas es aprender a analizar binarios (OJO...codigo fuente compilado para una plataforma especifica), la respuesta es que no necesitas conocimientos previos de C o C++. La ingenieria inversa es un tema sumamente amplio y debes saber en lo que te quieres enfocar. Puedes dedicarte a analizar firmwares, ejecutables, etc. En cada una de esas categorias tienes otras subcategorias (tipo de arquitectura de binario, lenguaje utilizado, compilado/interpretado, etc) y asi continua. Luego siguiendo con mi afirmacion inicial, para iniciarte en el analisis de ejecutables solo necesitas de un basico a medio entendimiento de lenguaje ensamblador y un conocimiento elemental de las APIs de windows, su uso y funcionamiento (si es que usaras este sistema operativo) o lo mismo para Unix, Android, OSX o cualquier otra plataforma donde trabajaras. Luego dependiendo de la arquitectura que desees analizar deberas enfocarte en ella (ARM, x86, x64, etc), el set de instrucciones de cada uno mas su sintaxis para cada caso (Intel, AT&T, etc). Con esto tendrias lo necesario para empezar un nivel 0 facilmente, aunque como dije al principio, todo depende de tu enfoque y lo que desees abordar.

Luego modificando tu pregunta un poco, seria bueno conocer C/C++ para realizar ingenieria inversa? Hombre, todo lo que puedas aprender nunca esta de mas en algun momento seguro lo necesitaras y aun mas, si deseas pasar de nivel 0 a niveles mas intermedios o avanzados tarde o temprano es un conocimiento muy valioso. Te ayudara a entender muchos conceptos y abrira tu mente en temas que quizas ahora consideres demasiado obscuros como para pensar en ellos.

Suerte

PD: Mis recomendaciones para iniciarte (elimina el espacio)
1- http://ricardonarvaja. info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/
2- http://ricardonarvaja. info/WEB/INTRODUCCION%20AL%20REVERSING%20CON%20IDA%20PRO%20DESDE%20CERO/
3- http://ricardonarvaja. info/WEB/C%20Y%20REVERSING/
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/


papelito

#4
hola, yo también estoy empezando en la ingeniería inversa y también tuve la misma duda, cuando abría un crackme en x32dbg no entendía muy bien como funcionaba una función y como funcionaba los manejadores, etc, ahora yo estoy aprendiendo c++  y también estoy creando ventanas con apis de Windows y ya entiendo mucho mejor como funcionan y se aclaran muchas dudas.
Yo busco crackear software y el curso de ida pro creo que es mas exploit que crackear software pero yo igual voy a leerlo.
Es mi pequeña experiencia en el cracking, ojalá podamos ayudarnos con dudas en el cracking.
saludos  ;D