---
# System prepended metadata

title: Obfuscation techniques
tags: [decompiler]

---

---
tags: decompiler
title: Obfuscation techniques
---

# Overview

We need to show that PyFET handles obfuscation techniques we listed in our rebuttal. The key obfuscation techniques listed in rebuttal are as follows:
1. [pjorion](https://koreanrandom.com/forum/topic/15280-pjorion-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%BE%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-%D0%BC%D0%BE%D0%B4%D0%BE%D0%B2-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F-135-%D0%B4%D0%B0%D1%82%D0%B0-11082019/) - Make an account to download the obfuscator
2. Adding NOP instructions as [here](https://www.mandiant.com/resources/deobfuscating-python)
3. Dynamically loaded and executed obfuscation technique [here](https://isc.sans.edu/forums/diary/Nicely+Obfuscated+Python+RAT/26680/)

**Ovarall task:** The task is to reproduce the obfuscation techniques to get the obfuscated `pyc` files while at the same time write a script to deobfuscate the obfuscated files. 

## Task 1 (PJORION):

**Part 1:** The first key task is Obfuscating using pjorion. Follow the [blog](https://koreanrandom.com/forum/topic/15280-pjorion-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B4%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%BE%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-%D0%BC%D0%BE%D0%B4%D0%BE%D0%B2-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F-135-%D0%B4%D0%B0%D1%82%D0%B0-11082019/) to obfuscate `pyc` files.

**Part 2:** Use approach similar to [this](https://github.com/extremecoders-re/PjOrion-Deobfuscator) to deobfuscate the obfuscated file. 

**Part 3:** List down the fundamental rules that are used to transform the pyc file to end up with deobfuscation.

## Task 2 (Adding NOP): 

This one is fairly simple. 

**Part 1:** Obfuscate similar to shown [here](https://www.mandiant.com/resources/deobfuscating-python).

**Part 2:** List down the rules that would be used to deobfuscate the preceding obfuscation. (Essentially will be removing instructions as `[ROT_TWO][ROT_TWO]` -> `[]`).

## Task 3 (Dynamically loaded exec):

Obfuscation can be done on dynamically loaded bytecode that does not decompile by decompiler.

The technique is shown [here](https://isc.sans.edu/forums/diary/Nicely+Obfuscated+Python+RAT/26680/).

**Part 1:** Find a sample (on github perhaps) that uses this technique.

**Part 2:** Change payload to one that does not decompile. 

**Part 3:** Provide me the script with obfuscation/deobfuscation technique.

This part is very vague so just provide me code that very close to reproduction. 