Hiding code in ELF binary

Since I'm contributing to the radare2, I'm learning on how a disassembler works, and especially how ELF files are handled by disassemblers. I saw that almost (even every ?) disassemblers rely on ELF section headers (generally located at the end of the file), which has never used in reality (by Linux kernel or glibc) because ELF's mapping in memory is given by program header (another ELF structure, which I described in my article about ELF packer

So, we can easily hide code from disassemblers by manipulating virtual address fields of the ".text" section structure. I'll use an hexadecimal editor and the latest git revision of radare2 (which fixes a bug related to virtual address calculation in ELF binary), so I recommend you to have those tools installed of your computer to continue the reading of this article.

Category: Hacking - Tags: radare2 C ELF

Making ELF packer for fun and chocapicz (part 2)

As promised, here is the second article about my ELF packer.
Here, I'll talk about dynamically-linked ELF (i.e. which has dependencies to ".so" modules), which is more tricky than the "basic" packer I showed before. The code is still NASM, and still under 32bit (feel free to rewrite the code to support 64-bit architecture ;))

Category: Hacking - Tags: Packer ELF C assembler

Making ELF packer for fun and chocapicz

I recently decided to make an ELF packer, in order to learn some cool stuff about Linux kernel and ELF format, so I'll write 2 or 3 articles in this blog to explain some stuff I discovered. To write this article, I use NASM and a x86 linux kernel (yeah guys, I'm still on a x86 archlinux). But before, let's listen to some music

Category: Hacking - Tags: Packer ELF C assembler

First steps in ring0

Ceux qui me croisent sur IRC savent que je commence à me mettre (timidement) à la programmation ring0 sous Windows (the real life, je jouerai avec le kernel linux un peu plus tard peut-être, quand je serai réapprovisionné en chocapicz).
Cet article se veut être une initiation au monde merveilleux qu'est le noyau Windows et ses drivers, monde merveilleux où un BSOD arrive très vite cependant.

Devant l'enthousiasme général, je vous propose donc de me suivre dans cette longue quête du Graal.

Category: Hacking - Tags: C IRP kernel Windows ring0

Javascript: Evaluer du code sans eval()

Des connaissances du langage Javascript peuvent être nécessaires pour la compréhension de cet article

Traditionnellement, on utilise la fonction eval() pour évaluer un morceau de code javascript. Or cette fonction est bien souvent bloquée par la plupart des filtres anti-XSS rudimentaires. Il existe cependant beaucoup de techniques permettant de passer au travers de ces filtres, et de parvenir malgré tout à exécuter le code de notre choix.
Nous allons donc survoler ici quelques méthodes permettant de contourner les filtres anti-XSS.

Category: Hacking - Tags: Javascript XSS Obfusquer WYSIWYG