Skip to content

Commit 5168c09

Browse files
committed
README.md
1 parent 82fd13a commit 5168c09

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
PEunion encrypts executables, which are decrypted at runtime and executed in-memory.
66

7-
![](https://bytecode77.com/images/pages/pe-union/runpe.png)
7+
![](https://bytecode77.com/images/pages/pe-union/runpe.webp)
88

99
## Stub
1010

@@ -13,7 +13,7 @@ Two stubs are available to choose from, both of which work in a similar way.
1313
* **Native:** Written in assembly (FASM)
1414
* **.NET:** Written in C#
1515

16-
![](https://bytecode77.com/images/pages/pe-union/stub.png)
16+
![](https://bytecode77.com/images/pages/pe-union/stub.webp)
1717

1818
## Key feature overview
1919

@@ -37,16 +37,16 @@ Multiple files can be compiled into the stub. A file can either be embedded with
3737

3838
Typically, an executable is decrypted and executed in-memory by the stub. If the executable is a native PE file, `RunPE` (process hollowing) is used. For .NET executables, the .NET stub uses `Invoke`. Legitimate files with no known signatures can be written to the disk.
3939

40-
[![](https://bytecode77.com/images/pages/pe-union/drop.thumb.jpg)](https://bytecode77.com/images/pages/pe-union/drop.png)
41-
[![](https://bytecode77.com/images/pages/pe-union/items.thumb.jpg)](https://bytecode77.com/images/pages/pe-union/items.png)
40+
![](https://bytecode77.com/images/pages/pe-union/drop.webp)
41+
![](https://bytecode77.com/images/pages/pe-union/items.webp)
4242

4343
## Implementation & execution flow
4444

4545
Obfuscation and evasive features are fundamental to the design of PEunion and do not need further configuration. The exact implementation is fine tuned to decrease detection and is subject to change in future releases.
4646

4747
This graph illustrates the execution flow of the native stub decrypting and executing a PE file. The .NET stub works similarly.
4848

49-
![](https://bytecode77.com/images/pages/pe-union/execution-flow-light.png)
49+
![](https://bytecode77.com/images/pages/pe-union/execution-flow-light.webp)
5050

5151
The **fundamental concept** is that the stub **only** contains code to detect emulators and to decrypt and pass execution to the next layer. The second stage is position independent shellcode that retrieves function pointers from the PEB and handles the payload. To mitigate AV detections, only the stub requires adjustments. Stage 2 contains all the "suspicious" code that is not readable at scantime and not decrypted, if an emulator is detected.
5252

@@ -58,16 +58,16 @@ Assembly code is obfuscated by nop-like instructions intermingled with the actua
5858

5959
The C# obfuscator replaces symbol names with barely distinguishable Unicode characters. Both string and integer literals are decrypted at runtime.
6060

61-
[![](https://bytecode77.com/images/pages/pe-union/obfuscation.png)](https://bytecode77.com/images/pages/pe-union/obfuscation.png)
62-
[![](https://bytecode77.com/images/pages/pe-union/obfuscation-dotnet.thumb.jpg)](https://bytecode77.com/images/pages/pe-union/obfuscation-dotnet.png)
61+
![](https://bytecode77.com/images/pages/pe-union/obfuscation.webp)
62+
![](https://bytecode77.com/images/pages/pe-union/obfuscation-dotnet.webp)
6363

6464
## Right-To-Left Override Tool
6565

6666
The Unicode character `U+202e` allows to create a filename that masquerades the actual extension of a file.
6767

6868
It is a simple renaming technique, where all characters followed by `U+202e` are displayed in reversed order. This way, an executable can be crafted in such a way that it looks like a JPEG file.
6969

70-
![](https://bytecode77.com/images/pages/pe-union/rtlo.png)
70+
![](https://bytecode77.com/images/pages/pe-union/rtlo.webp)
7171

7272
## Audience
7373

0 commit comments

Comments
 (0)