Journal Aujourd'hui, je euggubed un programme dans GDB...

Posté par  . Licence CC By‑SA.
Étiquettes :
76
7
juil.
2019

Bonjour bonjour !

En ce moment, pour beaucoup de fun, je tente de bidouiller une grammaire générée avec flex et bison, en mode un peu "boite noire" (interdiction de modifier la grammaire d'origine, et à vrai dire je sais même pas quelle est la tronche exacte du fichier source, je joue avec libpg_query pour ceux que ça intéresse).
Mais quand on tombe sur une erreur, la backtrace est fort peu instructive :

#0  base_yyerror (base_yylloc=0x7fffffffc124, msg=0x5555555f5104 "syntax error", yyscanner=0x0) at
(…)

Outils utiles pour développeur

59
3
mar.
2017
C et C++

Le but de cette dépêche est de recenser quelques outils utiles pour les développeurs (pas uniquement C et C++) et de donner accès à des ressources intéressantes pour leur prise en main.

Tout d’abord comment définit‐on un « outil utile » ? Ce sont des logiciels (libres, c’est mieux) qu’il n’est pas obligatoire d’utiliser mais qui permettent de gagner en productivité (ou de moins se prendre la tête avec un bogue). Ces outils sont utilisables indépendamment, mais utilisés ensemble peuvent former un tout qui donne les fonctionnalités d’un environnement de développement intégré.

Il est fort probable que pour certains cette dépêche vienne enfoncer des portes ouvertes. Mais pensez aux nouveaux pour qui elle sera, peut‐être, profitable.

Nouvelles versions logicielles du projet GNU juin et juillet 2017

Posté par  (site web personnel) . Édité par Davy Defaud, Anonyme et palm123. Modéré par ZeroHeure. Licence CC By‑SA.
53
22
août
2017
GNU

Le projet GNU publie tous les mois une liste de versions logicielles publiées. Jetons‐y un coup d’œil pour découvrir de nouveaux logiciels inconnus (de moi), des infâmes bogues disparus ou les promesses de solutions à tous nos besoins : soit des dizaines de nouvelles versions annoncées allant de la corrective mineure à la version attendue depuis des années ; et l’on va donc parler de acct, auctex, automake, binutils, cgicc, dr-geo, freeipmi, gama, gcc, gdb, glpk, gnuastro, gnucash, gnuhealth, gnuhealth-control, gnupg, gnutls, grep, gsl, guile-cv, guile-gnome, libextractor, libffcall, libgcrypt, libidn2, libmicrohttpd, libtasn1, linux-libre, moe, motti, nano, parallel, screen, taler, texinfo, tramp et unifont.

Journal Disséquer du binaire sous linux

Posté par  (site web personnel) . Licence CC By‑SA.
47
27
nov.
2013

J'aime bien le reverse, j'aime bien linux, j'aime bien lire de l'hexa et j'aime bien les crackmes.

Pour reverser, on a tout ce qu'il faut sous linux.

readelf:
Toujours pratique au début pour connaître un peu mieux le binaire, il affiche pas mal d'infos intéressantes, comme l'entry point, les sections etc.. ex:
readelf -s /bin/ls

objdump:
Indispensable. objdump sait désassembler un binaire complet et afficher les offsets/mnémoniques et instructions. ex:
objdump -d /bin/ls

gdb:
Faut il encore le présenter. Tous (…)

Sortie de radare2 0.9.6

40
12
nov.
2013
Science

Si vous avez déjà utilisé GDB et objdump pour analyser des binaires dont vous n'aviez pas les sources, vous avez déjà dû pester. En effet, les outils GNU ne sont pas vraiment fait pour ça. Mais que faire d'autre ? Céder aux sirènes d'IDA Pro ? Que nenni, car voici la nouvelle version de radare2 !

Radare2, c'est un framework complet pour analyser des binaires :

  • Multi-architectures : GNU/Linux, Android, *BSD, OSX, iPhoneOS, Windows{32,64} et Solaris
  • Multi-platformes : 8051, x86{16,32,64}, dalvik, avr, arc{4,compact}, arm, aarch64, c55x+, java, powerpc, sparc, mips, bf, pe{32,64}, te, [fat]mach0{32,64}, elf{32,64}, bios/uefi, dex and java classes
  • Scriptable en : Vala, Go, Python, Guile, Ruby, Perl, Lua, Java, JavaScript, sh, ..
  • Un éditeur hexadécimal
  • Un (dés)assembleur (récursif !), avec une coloration syntaxique
  • Un débogueur natif, mais il est possible d'utiliser GDB en backend, ou un débogueur brainfuck !
  • La possibilité d'afficher des données sous de multiples formats: int, float, désassemblé, timestamps, …
  • La possibilité de faire des recherches par patterns, des checksums, …
  • Un support des disques, processus, fichiers et flux.
  • Du binary diffing (comparaison de binaires), que ce soit sous forme traditionnelle, ou sous forme de graphes
  • Analyse de code, que ce soit niveau opcodes, blocks, ou fonctions
  • Une machine virtuelle basique, permettant d'émuler du code
  • Une interface web !

Journal Disséquer du binaire - retour d'expérience

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
40
28
jan.
2014

Yeah, me revoilà!

La dernière fois, je vous parlais de dissection de binaire. Du temps a passé, et je reviens faire un petit tour sur linuxfr pour donner mes retours d'expérience. Sans plus attendre, les outils kidéchirent sont:

-gdb : bah oui, c'est vraiment incontournable. Mais gdb à poil, c'est chiant. Je conseille à tout le monde de prendre le plugin http://reverse.put.as/gdbinit/. C'est le genre de trucs que j'adore: la conf par défaut juste marche. Pas besoin de (…)

Journal Un fonds pour la GNU Toolchain

Posté par  . Licence CC By‑SA.
Étiquettes :
37
28
mar.
2017

Le Free Software Foundation accepte maintenant des donations spécifiquement pour la GNU Toolchain : GCC, GDB, la glibc, les Binutils, etc.

Toutes les informations ici.

En tant que programmeur C, j’utilise certains de ces outils tous les jours et, comme je n’achète jamais de programmes, je fais parfois une donation pour les projets qui me tiennent hacker. Mais la plupart des distributions GNU/Linux dépendent fortement de la GNU Toolchain, donc, en tant que simple utilisateur, ça vaut aussi la (…)

Journal ZeroMQ et les mangoustes

Posté par  (site web personnel) .
36
10
nov.
2012

Sommaire

On m'a récemment demandé d'expliquer pourquoi je trouve que ZeroMQ est un sujet de rigolade. En guise d'introduction, j'aimerais préciser qu'un panel d'experts concertés sur le sujet ont eu des réactions similaires lorsqu'ils ont été exposés à deux lignes de ZeroMQ :

< Krunch> 1149 event.data.connected.addr = (char *)addr_;
< Krunch> 1150 event.data.disconnected.fd = fd_;
< Krunch> avec event.data qui est un union
< s> ahah
< n> nice
< n> http://i.imgur.com/pejxB.gif

(…)

Journal Debug de code Python embarqué dans du code C++

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
35
30
sept.
2020

Demat' iNal,

On m'a posé tantôt une question assez intrigante au premier abord :

Dans une application native qui embarque un interpréteur Python, et que l'on est en train de déboguer avec gdb, comment faire pour débogguer le code Python associé ?

Pour donner un peu de contexte, on peut lire la doc Python et en extraire ce petit code C:

 #define PY_SSIZE_T_CLEAN
#include <Python.h>

int
main(int argc, char *argv[])
{
    wchar_t *program
(…)

Utiliser colout pour colorier tout ce qu'affiche GDB

Posté par  (site web personnel, Mastodon) . Édité par Benoît Sibaud. Modéré par ZeroHeure. Licence CC By‑SA.
34
17
oct.
2014
Ligne de commande

Je sais ce que vous pensez : vous avez beau essayer d'utiliser des interfaces graphiques avec le débogueur GDB (GNU Project Debugger), vous finissez toujours par revenir à la bonne vieille ligne de commande, qui seule vous permet de ressentir une flamboyante puissance et une incandescente rapidité d'action. Dans le même temps, vous aimeriez bien que certaines informations importantes soient agrémentées d'un rouge pétant qui saute aux yeux. Comme je vous comprends. Fort heureusement, GDB est un logiciel complètement hackable, ce qui va me permettre d'exaucer vos vœux les plus ardents.

Il est en effet possible d'attacher des hooks à chaque commande, et d'y appeler des commandes shell. Afin d'ajouter notre touche de carmin, il suffit donc de récupérer la sortie de la commande et de la faire passer dans un colorisateur écarlate. C'est possible, car GDB permet de logguer tout ce qui se passe et qu'Unix a eu la bonne idée d'inventer les pipes nommés.
Pour ajouter la touche de pourpre, un colorisateur capable de gérer facilement des expressions régulières est nécessaire, je vous suggère colout.

La suite de la dépêche vous donnera un exemple de fichier de configuration à utiliser pour ajouter votre touche d'andrinople à votre propre système.

Forum général.petites-annonces envie de faire du C++11 au sein d'une dream-team, dans cadre idyllique, tout en étant payé ?

Posté par  . Licence CC By‑SA.
18
26
nov.
2013

Hello world,

On recrute encore pour notre équipe R&D !
Ayant eu de bonnes candidatures depuis linuxfr mes précédentes fois, je ré-ré-itère :) (je dois en être à la 3° vague de recrutement depuis bientôt 3 ans). Cette annonce ressemble donc beaucoup aux précédentes, avec quelques updates. N'hésitez pas à faire suivre à vos amis non linuxiens !

En 3 lignes :

  • R&D C++11 sous linux
  • éditeur d'un logiciel d'analyse de binaires exécutables
  • 2 postes R&D C++11 ouverts (dont 1 particulièrement orienté (…)

Journal CGDB 0.7.0 est sorti... il y a plusieurs mois :S

Posté par  . Licence CC By‑SA.
Étiquettes :
16
31
oct.
2017

Salut.

J'utilise cgdb depuis plusieurs années maintenant, sans trop trop suivre son actualité.
En faisant une petite pause entre 2 casse-tête de démêlage de spaghetti multithreadé (hé oui, ils sont modernes, les italiens…) j'ai zieuté sur developpez.com et suis tombé sur un debugguer qui à l'air intéressant parce que moi, toute piste pour trouver enfin un debugguer qui tienne la route sous linux et qui n'embarque pas avec lui la moitié du bureau KDE ou gnome, et de préférence pas (…)

Forum général.petites-annonces envie de faire du C++14/python au sein d'une dream-team, dans cadre idyllique, tout en étant payé ?

Posté par  . Licence CC By‑SA.
15
25
nov.
2015

Hello world,

On recrute encore pour notre équipe R&D !
Ayant eu de bonnes candidatures depuis linuxfr mes précédentes fois, je ré-ré-ré-itère :) (je dois en être à la 4° vague de recrutement depuis bientôt 5 ans). Cette annonce ressemble donc beaucoup aux précédentes, avec quelques updates. N'hésitez pas à faire suivre à vos amis non linuxiens !

En 3 lignes (+3 bonus) :

  • R&D C++ sous linux, avec du python aussi
  • éditeur d'un logiciel d'analyse de binaires exécutables
  • plusieurs postes ouverts
  • (…)

Journal La NSA publie son outil de rétro-ingénierie

Posté par  . Licence CC By‑SA.
14
9
mar.
2019

Cher journal,

Un bouquemarque rapide pour dire que la National Security Agency a publié sous licence Apache son outil Ghidra de reverse engineering, un concurrent apparemment sérieux au très dispendieux IDA Pro.

Personnellement, je me rappelle avoir fait il y a quelques temps des choses relativement simples avec GNU Debugger et Radare2 ; radare2 avait l'air puissant mais m'avait plus l'air d'un framework que d'un produit clés en main. Des experts peuvent-ils m'éclairer ? Quelqu'un aurait un retour sur (…)