Irene Díez
Researcher de DT
Expertise: Operating systems, program analysis

Fatal optimizations

Compilers transform the code we write to make it more efficient, however, there are times when these optimizations made by the compiler can cause security problems. A clear example of this is the dead code elimination, an optimization that aims

How does a linker work? (III) – Types of symbols

After learning what information contains the symbol table in the previous post, we can now talk more about the attributes that a symbol can have and what role do they have in the resolution of symbols from the linker point

How does a linker work? (II) – The symbol table

In previous posts we talked about that the linkers are the ones in charge of combining different files of translatable object code in an executable. For this they had two fundamental tasks, the resolution of symbols and the transfer; in

How does a linker work? (I)

In the process of converting the code from a high level language to an executable that understands our system, the linkers have a role that often goes unnoticed, but that is important to know. When we want to convert a

Create an unreadable binary with these techniques

Whether for malicious purposes, such as the case of malware authors, for corporate purposes, or for other reasons, obfuscation techniques are used to protect a program by making compiled binary static analysis more costly. Obfuscation therefore consists of transforming a

How does a compiler work?

In the series Hardening  binaries posts you have seen that many defenses are implanted in the compilers themselves, but how are they implemented? Taking the case of GCC, the GNU compiler collection, let’s explain the general GCC infrastructure and roughly how