![]() |
|
[.NET] Spaghetti - Arithmetic Obfuscation - Printable Version +- Hack Forums (https://hackforums.net) +-- Forum: Tech (https://hackforums.net/forumdisplay.php?fid=444) +--- Forum: Coding (https://hackforums.net/forumdisplay.php?fid=151) +---- Forum: Software Development (https://hackforums.net/forumdisplay.php?fid=118) +---- Thread: [.NET] Spaghetti - Arithmetic Obfuscation (/showthread.php?tid=5741563) |
Spaghetti - Arithmetic Obfuscation - Barret - Oct 22, 2017 ![]() A small release of my latest work that has only one purpose, masking constant numbers into fully customizable equations inside .net assemblies. This might be not something for beginners as i deem this fairly advanced and might 'confuse' the hell out of ya 😅 So basically this is just one small feature that can be implemented into a larger obfuscation or confuser projects, that was the whole idea of it. But i simply suck at programming obfuscators but i do know how to make these little things from time to time, just for the heck of it. Approach and execution The equation solver requires 3 types of input, pool of random numbers, functions and an input number, from there on it will build the expression from the solver and generate true ILcode from this. Once that is done it will replace all numbers within your assembly with new method calls inside a new type. Before: ![]() After: ![]() Variations The pool is used within the equations and the size of this pool impacts the size of the equation also the functions are dynamically implemented that are semi hard coded. You have to encounter float and integers so we add a random serie from 1 to 10, 100, and perhaps a 1000 depending what numbers we are aiming for, if we deal with floats we also add a few decimal numbers but they are not required if the functions pool contain certain mathematical formula's that will return decimals as well (cos, sin, tan, etc) Available Functions
Remarks Sometimes certain parameters take longer, there is a setting that determines the tolerance for decimal neglecting, meaning that a tolerance of 0.0004 will accept 10.00009 as 10. You have to play with the settings to find a sweet spot. Example of solved constants within an assembly: ![]() I was planning on not releasing this but i changed my mind 🙂 let me know what you think about it and i would appreciate if you write a comment when your using it. Github: https://github.com/TheBarret/Spaghetti RE: Spaghetti Confuser - Constant Numbers Masking - gigajew - Oct 23, 2017 Check out Noisette-Obfuscator that sam made, it has some basic examples of obfuscation (it's on GitHub) Also ConfuserEx has a ton of examples too Very nice job on this, looks nice RE: Spaghetti Confuser - Constant Numbers Masking - Barret - Oct 23, 2017 (Oct 23, 2017 07:38 AM)gigajew Wrote: Check out Noisette-Obfuscator that sam made, it has some basic examples of obfuscation (it's on GitHub) Yeah seen those, but they don't incorporate dynamic math functions that are compiled. So thats why its not exactly same in my view i assume you have not seen the source code. RE: Spaghetti Confuser - Constant Numbers Masking - gigajew - Oct 23, 2017 (Oct 23, 2017 08:17 AM)Barret Wrote: Yeah seen those, but they don't incorporate dynamic math functions that are compiled. So thats why its not exactly same in my view i assume you have not seen the source code. No, but they do show examples of different types of obfuscation, I thought that's what you wanted. There's also one method that I've only come across one time reverse engineering, and that's a method that keeps increasing an integer throughout the flow, and if you remove or change a method that increases or decreases that integer, the program will no longer function, because it uses that integer for some methods to function |