Programmers identifiable by compiled Code

Vor einem Jahr hatte ich über ein Paper gebloggt, laut dem Programmierer anhand ihres Coding-Styles identifiziert werden konnten. Überraschend war das nicht wirklich, man kann schon länger Menschen anhand ihres Sprachabdrucks online identifizieren. Jetzt haben sie ihre Studie erweitert und das geht wohl auch bei kompiliertem Code, was nochmal ’ne Spur abgefahrener ist. (Kompilierung ist, grob vereinfacht, die Übersetzung von Code in Maschinensprache.)

Executable binaries of compiled source code on their own are difficult to analyze because they lack human readable information. Nevertheless reverse engineering methods make it possible to disassemble and decompile executable binaries. After applying such reverse engineering methods to executable binaries, we can generate numeric representations of authorial style from features preserved in binaries. […]

- By comparing advanced and less advanced programmers’, we found that more advanced programmers are easier to de-anonymize and they have a more distinct coding style.
- We also de-anonymize GitHub users in the wild, which we explain in detail in the paper. These promising results are encouraging us to extend our method to large real world datasets of various natures for future work.
- Why does de-anonymization work so well? It’s not because the decompiled source code looks anything like the original. Rather, the feature vector obtained from disassembly and decompilation can be used to predict, using machine learning, the features in the original source code — with over 80% accuracy. This shows that executable binaries preserve transformed versions of the original source code features.

Freedom to Tinker: When coding style survives compilation: De-anonymizing programmers from executable binaries (via Schneier) De-anonymizing Programmers: Large Scale Authorship Attribution from Executable Binaries of Compiled Code and Source Code