Giter Site home page Giter Site logo

obfy's Introduction

Hi there

Some older, but still fun projects:

Some articles I wrote over the time

When time permits I publish in ACCU's Overload magazine. Here are some of my articles:

Help with development

Keeping all the servers above online has its recurring monthly cost, all help is much appreciated.

obfy's People

Contributors

alexst07 avatar brunomorishita avatar clord avatar fritzone avatar ghost avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

obfy's Issues

do while

how to obfuscate code with do while?


	do {
		...
		}
	} while (dwStatus == ERROR_BUFFER_OVERFLOW && i-- > 0);

for example

does this really work?

Just curious about the concept in general.

If a solution to the problem is open source (like this). Can't a cracker just check if this method is being used and detect it by observing the binary patterns created by this solution?

I'm not sophisticated enough at RE to know if this is feasible. but conceptually it seems like their is no real solution to the problem still.

you know, obscurity is not security camp kind of thing. Especially if your solution is open source i feel like look else where for the solution or copy the ideas here but implement it yourself so that its signatures are unique.

unused variable '__crv'

Compiling with Xcode 11 results in this error (7 times):

/obfy/main.cpp:27:5: error: unused variable '__crv' [-Werror,-Wunused-variable]
    OBF_BEGIN
    ^
In file included from /obfy/main.cpp:9:
/obfy/instr.h:816:40: note: expanded from macro 'OBF_BEGIN'
#define OBF_BEGIN try { obf::next_step __crv = obf::next_step::ns_done; std::shared_ptr<obf::base_rvholder> __rvlocal;
                                       ^
/obfy/main.cpp:36:2: error: unused variable '__crv' [-Werror,-Wunused-variable]
        OBF_BEGIN
        ^

cmake automatically created the -Werror when creating the Xcode project with cmake -GXcode ..

Should be easy to fix: insert an 'unused expression' for __crv:
#define OBF_BEGIN try { obf::next_step __crv = obf::next_step::ns_done; std::shared_ptr<obf::base_rvholder> __rvlocal; (void)__crv;
or
#define OBF_END (void)__crv; } catch(std::shared_ptr<...
wherever it makes more sense.

Virtual destructors and memory leaks

Hello. I am seeing memory leaks reported by GCC's LeakSanitizer.
The issue is missing virtual destructors in next_step_functor_base, bool_functor_base, any_functor_base and case_wrapper_base, causing a new-delete-mismatch error to be reported by the sanitizer. I'm happy to open a PR to fix the issue - or you could do it if you prefer. Please let me know how you would like me to go about it. I can either:

  • Fork the repository, make the change in my fork, and make a PR.
  • If you added me as a contributor to this repo, I can make a PR here directly.

RETURN and void function

Hello,

how to correctly call OBF RETURN in case of void returning function?

RETURN(void) and RETURN() generating compilation errors.

Regards

V macro doesn't work correctly

I faced a problem that whenever I try to use macro V to obfuscate variables it shows me an error in the macro definition :
image

So it compiles correctly only if you make this field public. On the other hand comment there contains this:
image

Are there any options to fix it without editing the class with that comment?

enum int

how to obfuscate enum int?

Example

typedef enum {
	LICENSE_OK = 0, 						//OK
	LICENSE_FILE_NOT_FOUND = 1, 		//license file not found
	LICENSE_SERVER_NOT_FOUND = 2, 		//license server can't be contacted
	ENVIRONMENT_VARIABLE_NOT_DEFINED = 3, //environment variable not defined
	FILE_FORMAT_NOT_RECOGNIZED = 4,	//license file has invalid format (not .ini file)
	LICENSE_MALFORMED = 5, //some mandatory field are missing, or data can't be fully read.
	PRODUCT_NOT_LICENSED = 6,		//this product was not licensed
	PRODUCT_EXPIRED = 7,
	LICENSE_CORRUPTED = 8,//License signature didn't match with current license
	IDENTIFIERS_MISMATCH = 9, //Calculated identifier and the one provided in license didn't match

	LICENSE_FILE_FOUND = 100,
	LICENSE_VERIFIED = 101

} EVENT_TYPE;

Cases: not work

Before

After

and it does not work

Error

'add_default': identifier not found

add FOREACH

maybe add?

for example I have code
for (auto it = licenses.begin(); it != licenses.end(); it++) {

how to add obfy to this?

Error with int64 num obfuscation

When I obfuscate an int64 I get a weird number, I'm compiling in Xcode with Clang.

int64 bigNumber;
V(bigNumber) = N(1537232811123);

The assigned number to the variable is -365480845.

check_license() and check_license1() from the README do not behave identical

The README introduces a non-obfuscated example check_license() code and an obfuscated check_license1() code. Logically, generating a key based on the user name and then checking the license should always return 1:

const auto user_name = "obfy";
const auto generated_license = generate_license(user_name);
const auto is_license_valid = check_license1(user_name, generated_license.c_str());
std::cout << "License valid: " << is_license_valid << std::endl;

If I run this code it actually prints 0 using check_license1() but 1 using check_license() regardless of debug or release build. Shouldn't both functions behave idental? Why don't they?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.