Skip to content

Commit

Permalink
Merge pull request #164 from sunnamed434/dev
Browse files Browse the repository at this point in the history
Bump new version 0.20.1
  • Loading branch information
sunnamed434 committed Jan 21, 2024
2 parents 3cd079b + df95326 commit c78f80c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
23 changes: 22 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
</p>

## BitMono

[![Build status][image_appveyor_main]][appveyor_main_build]
[![Test status][image_test]][test]
[![Codefactor][image_codefactor]][codefactor]
Expand Down Expand Up @@ -35,6 +36,7 @@ BitMono is a free open-source C# obfuscator that in most cases works **only** wi
</p>

## Usability

BitMono breaks the most popular tools using just one packer, such as:
- dnSpy;
- dnlib;
Expand All @@ -50,6 +52,7 @@ BitMono breaks the most popular tools using just one packer, such as:
So, if you will add more protection to the file, I think it would seem like total magic. :D

## Documentation

Read the **[docs][bitmono_docs]** to read protection, functionality, and more.

## How your app will look since BitMono obfuscation - just in a few words
Expand All @@ -61,6 +64,7 @@ Read the **[docs][bitmono_docs]** to read protection, functionality, and more.
* No code

## Features

* StringsEncryption
* **[UnmanagedString][unmanagedstring_source]** (based on existing protection)
* **[BitDotNet][bitdotnet_source]** (based and improved on existing protection)
Expand All @@ -78,7 +82,12 @@ Read the **[docs][bitmono_docs]** to read protection, functionality, and more.

## Usage

### Pre-Require

Set one of setting from `protections.json` to `true`

### Using CLI

`BitMono.CLI <path to file>/drag-and-drop`

Always drop dependencies in `libs` directory in the same path where `file` for obfuscation is located
Expand All @@ -96,6 +105,7 @@ specially_created_folder_for_obfuscation/
Copy all libraries (.dll) from the building application folder and paste them into the `libs` directory (if it doesn't exist yet create it), or even create the libs directory yourself with a custom name for example - `myLibs`, and then specify it in BitMono, however, if you will use `libs` then by default BitMono looking for a `libs` directory, so it will save your time.

### Using CLI Commands

```console
-f, --file Required. Set file path.

Expand Down Expand Up @@ -130,7 +140,13 @@ $ BitMono.CLI -f C:\specially_created_folder_for_obfuscation/your_app.exe -l C:\

Want more? Simply read the **[docs][bitmono_docs]**.

### Troubleshooting
Access Denied:

Try to set `OpenFileDestinationInFileExplorer` to `false` in `obfuscation.json`

### Detailed build status

If you want to build the BitMono by your own - [click here for detailed info][build_info]

| Branch | AppVeyor |
Expand All @@ -139,6 +155,7 @@ If you want to build the BitMono by your own - [click here for detailed info][bu
| dev | [![Build status][image_appveyor_dev]][appveyor_dev_build] |

### Supported Frameworks

Mono is supported obviously (some protections don't support Mono), however if you use BitMono for .NET (Core) or higher versions be careful because some protections won't work - you will be notified about that by BitMono when using not supported protections for yours running target framework.

| Framework | Version |
Expand All @@ -150,6 +167,9 @@ Mono is supported obviously (some protections don't support Mono), however if yo

Credits
-------

**[JetBrains][jetbrains_rider]** has kindly provided licenses for their JetBrains Rider IDE to the contributors of BitMono. This top-tier tool greatly facilitates and enhances the process of software development.

**[0x59R11][author_0x59r11]** for his acquaintance in big part of **[BitDotNet][bitdotnet_source]** that breaks files for mono executables!

**[Gazzi][author_gazzi]** for his help that [me][author_sunnamed434] asked a lot!
Expand Down Expand Up @@ -185,6 +205,7 @@ Credits
[confuserex_source]: https://github.com/yck1509/ConfuserEx
[simple_costura_decompressor_source]: https://github.com/dr4k0nia/Simple-Costura-Decompressor
[unmanagedstring_source]: https://github.com/MrakDev/UnmanagedString
[jetbrains_rider]: https://www.jetbrains.com/rider/
[author_0x59r11]: https://github.com/0x59R11
[author_gazzi]: https://github.com/GazziFX
[author_ellisaur]: https://github.com/Elliesaur
Expand All @@ -206,4 +227,4 @@ Credits
[image_license]: https://img.shields.io/github/license/sunnamed434/bitmono
[image_appveyor_main]: https://ci.appveyor.com/api/projects/status/8jh35hfno6riq25j/branch/main?svg=true
[image_appveyor_dev]: https://ci.appveyor.com/api/projects/status/b9rm3l7kduryjgcj/branch/dev?svg=true
[image_bitmono_discord]: https://img.shields.io/discord/1086240163321106523?label=discord&logo=discord
[image_bitmono_discord]: https://img.shields.io/discord/1086240163321106523?label=discord&logo=discord
7 changes: 3 additions & 4 deletions src/BitMono.Utilities/Runtime/RuntimeUtilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,10 @@ public static EnvironmentRuntimeInformation GetFrameworkInformation()
string? monoDisplayName = null;
if (hasMono)
{
var displayName = monoType.GetMethod(KnownMonoRuntimes.GetDisplayName, BindingFlags.NonPublic | BindingFlags.Static);
if (displayName != null)
var displayNameMethod = monoType.GetMethod(KnownMonoRuntimes.GetDisplayName, BindingFlags.NonPublic | BindingFlags.Static);

Check warning on line 21 in src/BitMono.Utilities/Runtime/RuntimeUtilities.cs

View workflow job for this annotation

GitHub Actions / Build

Dereference of a possibly null reference.

Check warning on line 21 in src/BitMono.Utilities/Runtime/RuntimeUtilities.cs

View workflow job for this annotation

GitHub Actions / Build

Dereference of a possibly null reference.

Check warning on line 21 in src/BitMono.Utilities/Runtime/RuntimeUtilities.cs

View workflow job for this annotation

GitHub Actions / Build

Dereference of a possibly null reference.
if (displayNameMethod != null)
{
var displayNameDelegate = (Func<string>)displayName.CreateDelegate(typeof(Func<string>), monoType);
monoDisplayName = displayNameDelegate.Invoke();
monoDisplayName = displayNameMethod.Invoke(null, null) as string;
}
}
return _lastRuntimeInformation = new EnvironmentRuntimeInformation
Expand Down

0 comments on commit c78f80c

Please sign in to comment.