diff --git a/bazaar/Protect/Protect.h b/bazaar/Protect/Protect.h index 7a7f9669f..c12996493 100644 --- a/bazaar/Protect/Protect.h +++ b/bazaar/Protect/Protect.h @@ -36,15 +36,18 @@ using namespace Upp; "\t.ascii \""PROTECT_START_MARKER"\"\n" \ "1:\n" \ ); \ - __start: + __start: \ + { \ #define PROTECT_END_FUNC \ - return; \ + } \ __end: \ asm volatile ( \ + "\tjmp 2f\n" \ "\t.ascii \""PROTECT_END_MARKER"\"\n" \ - ) - + "2:\n" \ + ); + #else #define _PROTECT_START_MARKER __asm _emit 0xba __asm _emit 0xad __asm _emit 0xde __asm _emit 0xad __asm _emit 0xfa __asm _emit 0xce diff --git a/bazaar/ProtectTest/main.cpp b/bazaar/ProtectTest/main.cpp index a7c681d64..2791a818d 100644 --- a/bazaar/ProtectTest/main.cpp +++ b/bazaar/ProtectTest/main.cpp @@ -1,43 +1,46 @@ -#include - -#include - -using namespace Upp; - -String GetKey(void) -{ - return "\xAA\xBB\xCC\xDD\xEE\xFF"; - -} - -bool Decrypt(byte *start, size_t len) -{ - return PROTECT_DECRYPT ( start, len, GetKey() ); -} - -void testfn1(void) -{ - PROTECT_START_FUNC(Decrypt); - - PromptOK("testfn1 DECRYPTED SUCCESFULLY!!!"); - return; - - PROTECT_END_FUNC; -} - -void testfn2(void) -{ - PROTECT_START_FUNC(Decrypt); - - PromptOK("testfn2 DECRYPTED SUCCESFULLY!!!"); - return; - - PROTECT_END_FUNC; -} - -GUI_APP_MAIN -{ - testfn1(); - testfn2(); -} - +#include + +#include + +using namespace Upp; + +String GetKey(void) +{ + return "\xAA\xBB\xCC\xDD\xEE\xFF"; + +} + +bool Decrypt(byte *start, size_t len) +{ + return PROTECT_DECRYPT ( start, len, GetKey() ); +} + +double testfn1(double d, double e) +{ + PROTECT_START_FUNC(Decrypt); + + double f; + f = d * e; + + PromptOK("testfn1 DECRYPTED SUCCESFULLY!!!"); + return 2 * f + e; + + PROTECT_END_FUNC; +} + +void testfn2(void) +{ + PROTECT_START_FUNC(Decrypt); + + PromptOK("testfn2 DECRYPTED SUCCESFULLY!!!"); + return; + + PROTECT_END_FUNC; +} + +GUI_APP_MAIN +{ + double d = testfn1(3, 4); + testfn2(); +} +