Skip to content

Conversation

@mkaring
Copy link
Owner

@mkaring mkaring commented Jan 3, 2021

The strong mode of the reference proxy encountered an error, that caused the normal and the expression mode to fail at runtime. The reason for this issue was that the key decode multiplication was added randomly before or after the instructions that were used to generate the placeholder parameters. The traceservice correctly identified the "add" instruction as source for the parameter of the method, how ever adding the konstant directly before the add instruction modified the stack and caused a wrong addition to take place.

The issue is fixed, by extending the tracing to resolve all the instructions that take part in constructing the value that parameter. This way the new constant may be randomly placed before or after the entire stack that produces the parameter. This resolves the issue. The x86 was uneffected, because it always creates the call after the instructions that create the parameter and never before.

A unit test was added to verify the correct function of the reference proxy protection.

fixes #229

@mkaring mkaring added the bug Something isn't working label Jan 3, 2021
@mkaring mkaring added this to the 1.5 milestone Jan 3, 2021
@mkaring mkaring self-assigned this Jan 3, 2021
@AppVeyorBot
Copy link

Build ConfuserEx 637 completed (commit 4a0c244b41 by @mkaring)

The strong mode of the reference proxy encountered an error, that caused the normal and the expression mode to fail at runtime. The reason for this issue was that the key decode multiplication was added randomly before or after the instructions that were used to generate the placeholder parameters. The traceservice correctly identified the "add" instruction as source for the parameter of the method, how ever adding the konstant directly before the add instruction modified the stack and caused a wrong addition to take place.

The issue is fixed, by extending the tracing to resolve all the instructions that take part in constructing the value that parameter. This way the new constant may be randomly placed before or after the entire stack that produces the parameter. This resolves the issue. The x86 was uneffected, because it always creates the call after the instructions that create the parameter and never before.

A unit test was added to verify the correct function of the reference proxy protection.
@mkaring mkaring force-pushed the feature/229_ref_proxy branch from 5e485e5 to a7d0821 Compare January 8, 2021 16:01
@AppVeyorBot
Copy link

Build ConfuserEx 648 completed (commit 80dadb2944 by @mkaring)

@mkaring mkaring merged commit a60be60 into master Jan 8, 2021
@mkaring mkaring deleted the feature/229_ref_proxy branch January 8, 2021 21:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Strong mode on reference proxy protection breaks module

3 participants