Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Take the compiler and run with it: a quick stor...

Take the compiler and run with it: a quick story of Swift obfuscator

Imagine a group of people with no background in the compilers nor C++.
Imagine them coming across a wonderful open source project, such as the Swift compiler.
What could happen if they started playing with it? Hacking, adding changes left and right, taking parts and making them work the way they were never intended?
Surely, the output would be some gibberish without meaning!
This story really happened. Come to listen how and why. Sometimes the gibberish is exactly what you need.

Krzysztof Siejkowski

June 06, 2018
Tweet

More Decks by Krzysztof Siejkowski

Other Decks in Programming

Transcript

  1. Take the compiler and run with it A quick story

    of Swift obfuscator Krzysztof Siejkowski, @_siejkowski
  2. In software development, obfuscation is the deliberate act of creating

    source or machine code that is difficult for humans to understand — Wikipedia
  3. Supports Not supports Renames in Storyboards and XIBs DSYM file

    generation Excluding configuration Multiple targets Simple integration (local & CI) Some exotic Swift constructs
  4. Pros Cons Anything compiler can do, 
 you can do

    too! No stable API, 
 breaking changes any time
  5. Pros Cons Anything compiler can do, 
 you can do

    too! No stable API, 
 breaking changes any time So many tools available!
  6. Pros Cons Anything compiler can do, 
 you can do

    too! No stable API, 
 breaking changes any time So many tools available! Compiler libs are designed for compilation, not for your needs
  7. Pros Cons Anything compiler can do, 
 you can do

    too! No stable API, 
 breaking changes any time So many tools available! Compiler libs are designed for compilation, not for your needs Support for both 
 Swift and Objective-C
  8. Pros Cons Anything compiler can do, 
 you can do

    too! No stable API, 
 breaking changes any time So many tools available! Compiler libs are designed for compilation, not for your needs Support for both 
 Swift and Objective-C Might be too much to support