feed

C/C++

¿Cómo funciona el memory breakpoint en un depurador de C/C++? (breakpoints part III)

0 comentarios

IDA Debugger Desensamblador y Depurador IDA corriendo en Windows

En el último artículo de la serie vimos lo útiles que pueden llegar a ser los hardware breakpoints para depurar aplicaciones que por ejemplo hacen comprobaciones de CRC y no pueden ser depuradas modificando sus datos en memoria.

Hoy vamos a ver como podemos utilizar memory breakpoints para sobrepasar los límites impuestos por los hardware breakpoints y poder entre otras cosas controlar el acceso a grandes partes de la memoria.

Leer más

Anunciate aquí
Anunciate aquí

¿Cómo funciona el hardware breakpoint en un depurador de C/C++? (breakpoints part II)

0 comentarios

Hardware Breakpoint

Ayer vimos como el depurador reemplaza el primer byte de un opcode en una dirección de memoria específica donde, previamente, hemos fijado un breakpoint y donde colocamos el opcode 0xcc o lo que es lo mismo la instrucción int 3 que le indica al procesador que se detenga y lance un evento de depurado que es capturado por el depurador.

También vimos que en este proceso, al sobreescribir parte de la memoria del proceso en depuración se modifica el CRC del mismo y algunas aplicaciones (como la mayoría del malware) comparan el CRC contra un checksum válido y si han habido modificaciones el proceso se mata a sí mismo para no permitir la depuración. En esos casos es necesario echar mano de los hardware breakpoints.

Leer más

Anunciate aquí

¿Cómo funciona el breakpoint en un depurador de C/C++?

1 comentario

Depurador con Breakpoints

Y llegamos al punto caliente de nuestra serie sobre el funcionamiento de los depuradores de C y C++. Ya sabemos como funciona la CPU y la pila de la memoria. También sabemos que son los eventos de depurado y que el sistema operativo ofrece una interfaz para atraparlos.

Hoy vamos a hablar en profundidad sobre los puntos de interrupción o “breakpoints“ que son sin duda la parte fundamental de cualquier depurador. Hoy vamos a aprender como fijarlos y como son utilizados por el depurador de forma interna para ayudarnos a depurar nuestros procesos.

Leer más

Dev-C++ resurge de sus cenizas: ya disponible la versión no oficial 5.2.0.0

9 comentarios

Dev-C++ 5.2.0.0 liberado
Los viejos rockeros recordarán con nostalgia Dev-C++, uno de los entornos más populares para el desarrollo en C++ bajo Windows. Este IDE, que curiosamente estaba programado en Delphi, acaparó a buena parte de los desarrolladores y era el producto estrella de Bloodshed Software, que sin embargo dejó de actualizarlo en febrero de 2005.

Pero cuando todo apuntaba a que el proyecto había muerto en su versión 4.9.9.2 por la imposibilidad del desarrollador principal, Colin Laplace, de compaginar su vida personal con el desarrollo de Dev-C++, un neerlandés apodado Orwell lo desempolvó y aprovechó la licencia GNU del programa para, 6 años después del abandono, sacar su propia versión 5.0.

Orwell intentó combinar su versión en la rama oficial de Dev-C++, pero ante el silencio de Laplace optó por crear una línea de proyecto independiente en SourceForge. Ahora, parece que la apuesta de Orwell se mantiene, y acaba de publicar la versión 5.2.0.0, con la que sigue adaptando Dev-C++ a los tiempos actuales (6 años no pasan en balde). Por cierto, busca traductores a todos los idiomas, por si alguien se anima a ayudar con las versiones en español.

Más información y descarga | Orwell’s Engine

¿Cómo funciona un depurador de C/C++? (Parte III)

0 comentarios

Debugger

En esta serie ya hemos hablado sobre los registros de carácter general del procesador en arquitectura x86 y de como funciona la pila o stack. Ambos conceptos son completamente necesarios para lograr entender en profundidad como funciona un depurador.

Hoy vamos a hablar sobre los eventos de depurado. De forma abstracta, un depurador no es más que un bucle sin fin que espera a que sucedan eventos de depurado. Cuando sucede un evento, el bucle se rompe, y se invoca a un manejador o handler de eventos cualificado para procesarlo.

Leer más

¿Cómo funciona un depurador de C/C++? (Parte II)

3 comentarios

GDB

Ayer hablábamos sobre la CPU y los registros de propósito general para entender como procesa a bajo nivel el hardware de nuestro sistema el código compilado al interpretar los opcodes que generan los compiladores.

Hoy vamos a ver muy brevemente como funciona la memoria y más específicamente la pila en la arquitectura x86. De esta forma todos estos conceptos no nos serán arcanos cuando entremos en detalles de ¿cómo funciona un depurador de C/C++?.

La pila es una estructura que es necesario e importante comprender cuando se desarrolla un depurador. La pila almacena información acerca de como una función es invocada, los parámetros que recibe (aunque en la arquitectura x86_64 esto no es del todo cierto) y como y a donde debe volver cuando finaliza la ejecución de la misma.

Leer más

Los grandes proyectos informáticos se programan en C y C++

57 comentarios

C es el líder
En Genbeta Dev más de una vez os hemos dado datos actuales del índice TIOBE, como los de este mes de abril donde C adelantó a Java como lenguaje más usado. Se podría decir que este índice mide la popularidad de un lenguaje, ya que representa la cantidad de proyectos nuevos que se inician en dicho lenguaje, motivo por el cual Objective-C no para de crecer últimamente gracias al desarrollo para iOS, mientras que otros lenguajes suben rápidamente por modas pasajeras y desaparecen casi igual de rápido.

Sin embargo, si en lugar de medir el número de proyectos nuevos, nos ciñésemos a los gigantes de la informática y sus aplicaciones y sistemas implantados con mayor éxito, veríamos como C y C++ barren a su competencia de forma más que descarada, tal y como podemos ver en esta tabla. Por ejemplo, en el ámbito de los sistemas operativos, donde la velocidad es un parámetro crucial, todos los grandes usan mayoritariamente C estándar, junto con algo de C++ en el caso de Windows y de Objective-C en el de Mac OS X.

Leer más

¿Cómo funciona un depurador de C/C++? (Parte I)

22 comentarios

GDB

Todos aquellos programadores que hayan programado en C o C++ conocen los típicos depuradores de código disponibles para el código máquina generado por el compilador de dichos lenguajes.

Dependiendo del sistema operativo estaremos acostumbrados a gdb y sus amigos (ddd, kgdb, etc, etc), LLDB, WinDbg, OllyDbg, etc. No vamos a entrar en cual de estos depuradores es mejor sino que vamos a hacer un pequeño recorrido por su funcionamiento interno.

Para entender el funcionamiento de un depurador, primero debemos entender el funcionamiento del procesador y de la memoria.

Leer más

Y C culmina la remontada y supera a Java como lenguaje más utilizado

11 comentarios

rollins c¡Pero si el C este es de nuestra quinta casi! ¡Que crack!

Lo reconocemos: hablar del índice TIOBE de lenguajes de programación cada mes pues termina resultando un peñazo. Sin embargo, cuando hay sopresa pues no podemos dejar pasar por alto comentarla: después de mucho (muchísimo) tiempo liderando el ranking, Java cede la posición de cabeza a C, que demuestra que los viejos rockeros nunca mueren y con un porcentaje del 17.555% supera el 17.026% del emblemático lenguaje de Oracle.

Leer más

Más vale tarde que nunca, ¡felicidades GCC!

2 comentarios

gcc

Lo se, no tenemos perdón de Dios: el pasado jueves 22 de Marzo fue el 25 cumpleaños de GCC, el popular compilador software libre, y no le felicitamos. Pero nos acogemos al refranero español y a uno de sus coletillas más extendidas para hacerlo hoy domingo y, de paso, anunciar que el compilador creado por Richard Stallman y Len Tower en el ya lejano 1987 ha sacado su versión 4.7 coincidiendo con esta especial y redonda celebración.

Este compilador, que en un principio compilaba solamente C (GNU C Compiler era su acrónimo primigenio antes del actual GNU Compiler Collection) está en su 25 aniversario en mejor forma que nunca, con una nueva versión que está gustando mucho en la comunidad por sus mejoras en eficiencia, rendimiento, escalabilidad y diseño y por soportar depuración de código en plataformas novedosas como las Sandy e Ivy Bridge de Intel.

Pues nada, lo dicho, muchas felicidades a GCC y a toda su comunidad, que se lo merecen.

Vía | Leanuxeros
Más info | GCC

Anunciate aquí

WSL Weblogs SL