llsoftsec / llsoftsecbook

Low-Level Software Security for Compiler Developers
https://llsoftsec.github.io/llsoftsecbook/
Other
527 stars 50 forks source link

Chapter about Obfuscation #127

Open Fare9 opened 1 year ago

Fare9 commented 1 year ago

LLVM project allows managing code easily through LLVM IR, using an IR allows that some obfuscation techniques can be applied to different programming languages in an abstract way. The LLVM project implements techniques for code optimization but the code can be 'deoptimized' to hide code from analysts or malicious actors, while these protection mechanisms are not perfect, they make people taking longer for their analysis. There are currently various projects using LLVM IR for this: https://github.com/emc2314/YANSOllvm, https://github.com/obfuscator-llvm/obfuscator/wiki or https://github.com/open-obfuscator/o-mvll.

Also as part of a chapter like this, it would be possible saying that LLVM IR can be used for deobfuscation of code, binary code can be 'lifted' to LLVM IR, and PassManager can be used for optimizing obfuscated code, making it more readable.

kbeyls commented 1 year ago

Thank you for this suggestion @Fare9 !

It's clear that code obfuscation as done by compilers is on topic for the book. For the book, I wouldn't limit the text to what is being done using LLVM per se. We try to describe methods and techniques in general. Of course, we can point to specific implementations such as done using LLVM.

In short, yes, let's have a chapter on code obfuscation.

I don't know much myself about code obfuscation. It would be great if we could start with having a chapter with an introduction describing why code obfuscation is used, how it can help with security and -- at a high level -- what the different categories of techniques are that are used.

@all-contributors please add @Fare9 for ideas.

allcontributors[bot] commented 1 year ago

@kbeyls

I couldn't determine any contributions to add, did you specify any contributions? Please make sure to use valid contribution names.

Could not find the user topic on github.

kbeyls commented 1 year ago

Let me try again to let the all contributors bot add Fare9:

@all-contributors please add @Fare9 for ideas

allcontributors[bot] commented 1 year ago

@kbeyls

I've put up a pull request to add @Fare9! :tada:

Fare9 commented 1 year ago

Agree on having a more general chapter, I can go with it introducing the topic.