Skip to content

Commit 40f5f60

Browse files
authored
Merge pull request #131 from sunnamed434/dev
Bump new version 0.16.1
2 parents 784938f + 53e6bb4 commit 40f5f60

64 files changed

Lines changed: 478 additions & 241 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

BitMono.sln

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
1212
LICENSE = LICENSE
1313
README.md = README.md
1414
props\SharedProjectProps.props = props\SharedProjectProps.props
15+
props\SharedPackages.props = props\SharedPackages.props
1516
EndProjectSection
1617
EndProject
1718
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D87066C4-1144-4BD8-96E9-9F4676001397}"

BitMono.sln.DotSettings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
22
<s:Boolean x:Key="/Default/CodeEditing/SuppressUninitializedWarningFix/Enabled/@EntryValue">False</s:Boolean>
3+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ASCII/@EntryIndexedValue">ASCII</s:String>
34
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CLI/@EntryIndexedValue">CLI</s:String>
45
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=JS/@EntryIndexedValue">JS</s:String>
56
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NET/@EntryIndexedValue">NET</s:String>
7+
<s:Boolean x:Key="/Default/UserDictionary/Words/=Decryptor/@EntryIndexedValue">True</s:Boolean>
68
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ldasm/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
| Versions: |
99
|-------------------------------|
10+
| [0.16.1-alpha](#0161-alpha30) |
1011
| [0.16.0-alpha](#0160-alpha29) |
1112
| [0.15.1-alpha](#0151-alpha28) |
1213
| [0.15.0-alpha](#0150-alpha27) |
@@ -27,6 +28,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2728

2829
---
2930

31+
## 0.16.1-alpha.30
32+
2023-07-17
33+
34+
### Added
35+
36+
- New docs.
37+
38+
### Fixed
39+
40+
- (UnmanagedString) Add unicode support, fix strings with null characters [#130](https://github.com/sunnamed434/BitMono/pull/130), thanks [GazziFX](https://github.com/GazziFX)
41+
- Other minor bug fixes.
42+
43+
### Changed
44+
45+
- Bumped to the latest AsmResolver 5.4.0 version.
46+
- Code refactoring and possible bug fixes.
47+
3048
## 0.16.0-alpha.29
3149
2023-05-14
3250

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ So, if you will add more protection to the file, I think it would seem like tota
5858
Read the **[docs][bitmono_docs]** to read protection, functionality, and more.
5959

6060
## How your app will look since BitMono obfuscation - just in a few words
61-
* Looks like C++ application but is an actual C# application
62-
* Crash of decompilers when analyzing types
63-
* Broken decompilers
64-
* Broken IL Code
65-
* Invisible types
61+
* Looks like C++ application but is an actual C# application;
62+
* Crash of decompilers when analyzing types;
63+
* Broken decompilers;
64+
* Broken IL Code;
65+
* Invisible types;
6666
* No code
6767

6868
## Features
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
Zero Risk of Obfuscation
2+
========================
3+
4+
You may have a project which is really heavy and you don't want to loose any perfomance of it, so, well, you can't really have zero losses of perfomance but you can minimize it, due to BitMono is not really stable with all runtimes and this is very complex obfuscation, would really recommend to use this, as we call it `BitMono Starter Pack for Mono` - like in Fortnite :D
5+
6+
1. AntiDecompiler
7+
2. BitMethodDotnet
8+
3. BitTimeDateStamp
9+
4. BitDotNet
10+
5. BitMono
11+
6. (Not optional) StringsEncryption, if you really-really need to encrypt strings, this may very-very-very harmful to the application's performance
12+
13+
14+
`protections.json` will look like this:
15+
16+
.. code-block:: json
17+
18+
{
19+
"Protections": [
20+
{
21+
"Name": "AntiILdasm",
22+
"Enabled": false
23+
},
24+
{
25+
"Name": "AntiDe4dot",
26+
"Enabled": false
27+
},
28+
{
29+
"Name": "ObjectReturnType",
30+
"Enabled": false
31+
},
32+
{
33+
"Name": "NoNamespaces",
34+
"Enabled": false
35+
},
36+
{
37+
"Name": "FullRenamer",
38+
"Enabled": false
39+
},
40+
{
41+
"Name": "AntiDebugBreakpoints",
42+
"Enabled": false
43+
},
44+
{
45+
"Name": "StringsEncryption",
46+
"Enabled": false
47+
},
48+
{
49+
"Name": "UnmanagedString",
50+
"Enabled": false
51+
},
52+
{
53+
"Name": "DotNetHook",
54+
"Enabled": false
55+
},
56+
{
57+
"Name": "CallToCalli",
58+
"Enabled": false
59+
},
60+
{
61+
"Name": "AntiDecompiler",
62+
"Enabled": true
63+
},
64+
{
65+
"Name": "BitMethodDotnet",
66+
"Enabled": true
67+
},
68+
{
69+
"Name": "BitTimeDateStamp",
70+
"Enabled": true
71+
},
72+
{
73+
"Name": "BitDotNet",
74+
"Enabled": true
75+
},
76+
{
77+
"Name": "BitMono",
78+
"Enabled": true
79+
}
80+
]
81+
}

docs/developers/protection-runtime-moniker.rst

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,14 @@ Specify Rust Runtime Moniker Attribute.
7171
7272
[UsedImplicitly]
7373
[RuntimeMonikerRust] // Add this Attribute which says this protections works only with Rust Runtime
74-
public class RustPacker : Packer // or instead use Protection or PipelineProtection
74+
public class RustPacker : Packer // or instead use Protection or PipelineProtection
75+
76+
77+
78+
After that user need to use the ``RustPacker`` and they will receive an message that the ``RustPacker`` "is intended for Rust runtime".
79+
80+
81+
82+
.. note::
83+
84+
You don't need to make any services registration or instance creation for the ``RuntimeMonikerRust`` due to it will get the attribute automatically behind the hood using Reflection, and Protections Info Output in the Console/GUI (whatever is used, user will get a message notification about that). So, you don't need to care about ``RuntimeMonikerRust`` anymore, simply add it on top of the feature and have fun!

docs/index.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,21 @@ Table of Contents:
4343
developers/configuration
4444

4545

46+
.. toctree::
47+
:maxdepth: 1
48+
:caption: Obfuscation Issues
49+
:name: sec-obfuscationissues
50+
51+
obfuscationissues/corlib-not-found
52+
53+
4654
.. toctree::
4755
:maxdepth: 1
4856
:caption: Best Practices
4957
:name: sec-bestpractices
5058

5159
bestpractices/bitmono-combo
60+
bestpractices/zero-risk-obfuscation
5261

5362

5463
.. toctree::
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CorLib not found
2+
================
3+
4+
The problem
5+
-----------
6+
You're getting an error it says: `Could not load file or assembly CorLib Version=x.x.x.x, etc`
7+
8+
9+
Solution
10+
--------
11+
The thing that may cause this issue is that you're running on .NET Framework (the obfuscator project) and the actual obfuscator project is running on .NET Core (let's say - 6.0), and you're trying to run the obfuscated file on Mono, you might already catch the problem, you need to change the obfuscator project TargetFramework (i.e in this case to .NET Framework) to approximately the same version as target file for obfuscation.

docs/protections/antide4dot.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,9 @@ AntiDe4dot
33

44
How it works?
55
-------------
6-
Protection adds multiple attributes of known obfuscators/protectors and as a result fools de4dot.
6+
Protection adds multiple attributes of known obfuscators/protectors and as a result fools de4dot.
7+
8+
9+
.. warning::
10+
11+
Due to protection is not really powerful and widely known by most reversers and skids, on GitHub you may see a lot of solutions to destroy this protection.

docs/protections/antidecompiler.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ That means if someone will try to analyze the protected nested type, dnSpy will
1010

1111
.. warning::
1212

13-
This protection is only compatible with Mono.
13+
This protection compatible only with Mono.

0 commit comments

Comments
 (0)