How to prevent so file hacking in so file










1














In my app(unity5, il2cpp build), There is a function like



"GetScore()"



Unfortunately, i found the hacked version of my app in the black market. that hacked version's "GetScore()" function always returns 100. The original return value has to be under 10.



I guess this hacked App is repackaged by using like 'il2cppDumper' and changing my return value to 100;



Is there any way to prevent this problem?










share|improve this question


























    1














    In my app(unity5, il2cpp build), There is a function like



    "GetScore()"



    Unfortunately, i found the hacked version of my app in the black market. that hacked version's "GetScore()" function always returns 100. The original return value has to be under 10.



    I guess this hacked App is repackaged by using like 'il2cppDumper' and changing my return value to 100;



    Is there any way to prevent this problem?










    share|improve this question
























      1












      1








      1







      In my app(unity5, il2cpp build), There is a function like



      "GetScore()"



      Unfortunately, i found the hacked version of my app in the black market. that hacked version's "GetScore()" function always returns 100. The original return value has to be under 10.



      I guess this hacked App is repackaged by using like 'il2cppDumper' and changing my return value to 100;



      Is there any way to prevent this problem?










      share|improve this question













      In my app(unity5, il2cpp build), There is a function like



      "GetScore()"



      Unfortunately, i found the hacked version of my app in the black market. that hacked version's "GetScore()" function always returns 100. The original return value has to be under 10.



      I guess this hacked App is repackaged by using like 'il2cppDumper' and changing my return value to 100;



      Is there any way to prevent this problem?







      unity3d dump il2cpp






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 12 at 8:53









      Cloud Lee

      814




      814






















          2 Answers
          2






          active

          oldest

          votes


















          0














          Security is always a matter of making it harder for hackers - you can never make it impossible for them to tamper.



          So here are some thoughts:



          • Obfuscation: GetScore() gets BananaJungle() - hackers cannot find the correct function without stepping through the source code for hours (hopefully)

          • Validate the score on multiple spots: the function calling GetScore() should do a sanity check: "is it below 10?"

          • In Addition to this: You may want to ignore scores above 10 to fool the hacker he succeeded. You may lock the app after 2 hours or so.

          • Add a ScoreLogger somewhere that logs the history of the score, so getScore() may return values <10 but someone might just overwrite the score in code to 999999. ScoreLogger will check the score history for jumps etc.

          • Validate Score with total playtime (approximately)





          share|improve this answer
















          • 1




            Server-side validation helps too.
            – Draco18s
            Nov 12 at 16:32










          • I hesitated to list online-validation. It might be a serverless offline app. But sure, that would help too!
            – KYL3R
            Nov 12 at 17:04










          • Serverless offline apps: who cares if someone cheats? They're only ruining their own local high score table. The only time cheating matters is when the game isn't single-player, at which point: the client is always a lying, cheating, bastard. Never trust the client for anything because no matter what you do, it can be hacked (even if its just fake packets!)
            – Draco18s
            Nov 12 at 17:12










          • You may have serverless apps that allow buying cosmetics or levels, that could be unlocked by playing or paying. If the score allows the player to unlock the paid levels you still want to make sure he doesn't cheat.
            – KYL3R
            Nov 12 at 18:09






          • 1




            Correct, I was just trying to say "if your app doesn't communicate to your own server (so except google) you may not be able to do server-side validation" but "serverless" is of course the wrong word for that.
            – KYL3R
            Nov 12 at 20:19


















          0














          You won't ever keep hackers from hacking your games, even if it does indeed have a backing server. Just look at all the unofficial world of warcraft servers. You can keep things relatively safe if you have a server, you keep its source code secure, and your game is meaningless without its server (think Dota 2 with no multiplayer capabilities...). Even then, you can't actually validate the player's every move, unless it's a turn based game and you actually send every move the server to be processed (this works in Hearthstone, for example, but not in WoW, hence all the anti-cheating tools). EA couldn't do it, Rockstar couldn't do it, Activision couldn't do it, even the mighty Denuvo couldn't do it, you certainly can't do it.



          However, you should stop and ask yourself why you want your game to be that secure. Out of every 1000 cheaters you stop, maybe one or two would actually pay. You should put in a moderate amount of effort on security (take KYL3R's advice), simply to keep honest people honest. Dishonest people will always find a way, so don't worry about them so much that you end up wasting time on (useless) security; time you could spend on making your game better.



          Oh and by the way, that's also one way to keep hackers out: frequent updates to the game. They have no life, but they don't have enough time to keep making a hacked version of every game on the market every week.






          share|improve this answer




















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53258648%2fhow-to-prevent-so-file-hacking-in-so-file%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            Security is always a matter of making it harder for hackers - you can never make it impossible for them to tamper.



            So here are some thoughts:



            • Obfuscation: GetScore() gets BananaJungle() - hackers cannot find the correct function without stepping through the source code for hours (hopefully)

            • Validate the score on multiple spots: the function calling GetScore() should do a sanity check: "is it below 10?"

            • In Addition to this: You may want to ignore scores above 10 to fool the hacker he succeeded. You may lock the app after 2 hours or so.

            • Add a ScoreLogger somewhere that logs the history of the score, so getScore() may return values <10 but someone might just overwrite the score in code to 999999. ScoreLogger will check the score history for jumps etc.

            • Validate Score with total playtime (approximately)





            share|improve this answer
















            • 1




              Server-side validation helps too.
              – Draco18s
              Nov 12 at 16:32










            • I hesitated to list online-validation. It might be a serverless offline app. But sure, that would help too!
              – KYL3R
              Nov 12 at 17:04










            • Serverless offline apps: who cares if someone cheats? They're only ruining their own local high score table. The only time cheating matters is when the game isn't single-player, at which point: the client is always a lying, cheating, bastard. Never trust the client for anything because no matter what you do, it can be hacked (even if its just fake packets!)
              – Draco18s
              Nov 12 at 17:12










            • You may have serverless apps that allow buying cosmetics or levels, that could be unlocked by playing or paying. If the score allows the player to unlock the paid levels you still want to make sure he doesn't cheat.
              – KYL3R
              Nov 12 at 18:09






            • 1




              Correct, I was just trying to say "if your app doesn't communicate to your own server (so except google) you may not be able to do server-side validation" but "serverless" is of course the wrong word for that.
              – KYL3R
              Nov 12 at 20:19















            0














            Security is always a matter of making it harder for hackers - you can never make it impossible for them to tamper.



            So here are some thoughts:



            • Obfuscation: GetScore() gets BananaJungle() - hackers cannot find the correct function without stepping through the source code for hours (hopefully)

            • Validate the score on multiple spots: the function calling GetScore() should do a sanity check: "is it below 10?"

            • In Addition to this: You may want to ignore scores above 10 to fool the hacker he succeeded. You may lock the app after 2 hours or so.

            • Add a ScoreLogger somewhere that logs the history of the score, so getScore() may return values <10 but someone might just overwrite the score in code to 999999. ScoreLogger will check the score history for jumps etc.

            • Validate Score with total playtime (approximately)





            share|improve this answer
















            • 1




              Server-side validation helps too.
              – Draco18s
              Nov 12 at 16:32










            • I hesitated to list online-validation. It might be a serverless offline app. But sure, that would help too!
              – KYL3R
              Nov 12 at 17:04










            • Serverless offline apps: who cares if someone cheats? They're only ruining their own local high score table. The only time cheating matters is when the game isn't single-player, at which point: the client is always a lying, cheating, bastard. Never trust the client for anything because no matter what you do, it can be hacked (even if its just fake packets!)
              – Draco18s
              Nov 12 at 17:12










            • You may have serverless apps that allow buying cosmetics or levels, that could be unlocked by playing or paying. If the score allows the player to unlock the paid levels you still want to make sure he doesn't cheat.
              – KYL3R
              Nov 12 at 18:09






            • 1




              Correct, I was just trying to say "if your app doesn't communicate to your own server (so except google) you may not be able to do server-side validation" but "serverless" is of course the wrong word for that.
              – KYL3R
              Nov 12 at 20:19













            0












            0








            0






            Security is always a matter of making it harder for hackers - you can never make it impossible for them to tamper.



            So here are some thoughts:



            • Obfuscation: GetScore() gets BananaJungle() - hackers cannot find the correct function without stepping through the source code for hours (hopefully)

            • Validate the score on multiple spots: the function calling GetScore() should do a sanity check: "is it below 10?"

            • In Addition to this: You may want to ignore scores above 10 to fool the hacker he succeeded. You may lock the app after 2 hours or so.

            • Add a ScoreLogger somewhere that logs the history of the score, so getScore() may return values <10 but someone might just overwrite the score in code to 999999. ScoreLogger will check the score history for jumps etc.

            • Validate Score with total playtime (approximately)





            share|improve this answer












            Security is always a matter of making it harder for hackers - you can never make it impossible for them to tamper.



            So here are some thoughts:



            • Obfuscation: GetScore() gets BananaJungle() - hackers cannot find the correct function without stepping through the source code for hours (hopefully)

            • Validate the score on multiple spots: the function calling GetScore() should do a sanity check: "is it below 10?"

            • In Addition to this: You may want to ignore scores above 10 to fool the hacker he succeeded. You may lock the app after 2 hours or so.

            • Add a ScoreLogger somewhere that logs the history of the score, so getScore() may return values <10 but someone might just overwrite the score in code to 999999. ScoreLogger will check the score history for jumps etc.

            • Validate Score with total playtime (approximately)






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 12 at 9:03









            KYL3R

            1,101214




            1,101214







            • 1




              Server-side validation helps too.
              – Draco18s
              Nov 12 at 16:32










            • I hesitated to list online-validation. It might be a serverless offline app. But sure, that would help too!
              – KYL3R
              Nov 12 at 17:04










            • Serverless offline apps: who cares if someone cheats? They're only ruining their own local high score table. The only time cheating matters is when the game isn't single-player, at which point: the client is always a lying, cheating, bastard. Never trust the client for anything because no matter what you do, it can be hacked (even if its just fake packets!)
              – Draco18s
              Nov 12 at 17:12










            • You may have serverless apps that allow buying cosmetics or levels, that could be unlocked by playing or paying. If the score allows the player to unlock the paid levels you still want to make sure he doesn't cheat.
              – KYL3R
              Nov 12 at 18:09






            • 1




              Correct, I was just trying to say "if your app doesn't communicate to your own server (so except google) you may not be able to do server-side validation" but "serverless" is of course the wrong word for that.
              – KYL3R
              Nov 12 at 20:19












            • 1




              Server-side validation helps too.
              – Draco18s
              Nov 12 at 16:32










            • I hesitated to list online-validation. It might be a serverless offline app. But sure, that would help too!
              – KYL3R
              Nov 12 at 17:04










            • Serverless offline apps: who cares if someone cheats? They're only ruining their own local high score table. The only time cheating matters is when the game isn't single-player, at which point: the client is always a lying, cheating, bastard. Never trust the client for anything because no matter what you do, it can be hacked (even if its just fake packets!)
              – Draco18s
              Nov 12 at 17:12










            • You may have serverless apps that allow buying cosmetics or levels, that could be unlocked by playing or paying. If the score allows the player to unlock the paid levels you still want to make sure he doesn't cheat.
              – KYL3R
              Nov 12 at 18:09






            • 1




              Correct, I was just trying to say "if your app doesn't communicate to your own server (so except google) you may not be able to do server-side validation" but "serverless" is of course the wrong word for that.
              – KYL3R
              Nov 12 at 20:19







            1




            1




            Server-side validation helps too.
            – Draco18s
            Nov 12 at 16:32




            Server-side validation helps too.
            – Draco18s
            Nov 12 at 16:32












            I hesitated to list online-validation. It might be a serverless offline app. But sure, that would help too!
            – KYL3R
            Nov 12 at 17:04




            I hesitated to list online-validation. It might be a serverless offline app. But sure, that would help too!
            – KYL3R
            Nov 12 at 17:04












            Serverless offline apps: who cares if someone cheats? They're only ruining their own local high score table. The only time cheating matters is when the game isn't single-player, at which point: the client is always a lying, cheating, bastard. Never trust the client for anything because no matter what you do, it can be hacked (even if its just fake packets!)
            – Draco18s
            Nov 12 at 17:12




            Serverless offline apps: who cares if someone cheats? They're only ruining their own local high score table. The only time cheating matters is when the game isn't single-player, at which point: the client is always a lying, cheating, bastard. Never trust the client for anything because no matter what you do, it can be hacked (even if its just fake packets!)
            – Draco18s
            Nov 12 at 17:12












            You may have serverless apps that allow buying cosmetics or levels, that could be unlocked by playing or paying. If the score allows the player to unlock the paid levels you still want to make sure he doesn't cheat.
            – KYL3R
            Nov 12 at 18:09




            You may have serverless apps that allow buying cosmetics or levels, that could be unlocked by playing or paying. If the score allows the player to unlock the paid levels you still want to make sure he doesn't cheat.
            – KYL3R
            Nov 12 at 18:09




            1




            1




            Correct, I was just trying to say "if your app doesn't communicate to your own server (so except google) you may not be able to do server-side validation" but "serverless" is of course the wrong word for that.
            – KYL3R
            Nov 12 at 20:19




            Correct, I was just trying to say "if your app doesn't communicate to your own server (so except google) you may not be able to do server-side validation" but "serverless" is of course the wrong word for that.
            – KYL3R
            Nov 12 at 20:19













            0














            You won't ever keep hackers from hacking your games, even if it does indeed have a backing server. Just look at all the unofficial world of warcraft servers. You can keep things relatively safe if you have a server, you keep its source code secure, and your game is meaningless without its server (think Dota 2 with no multiplayer capabilities...). Even then, you can't actually validate the player's every move, unless it's a turn based game and you actually send every move the server to be processed (this works in Hearthstone, for example, but not in WoW, hence all the anti-cheating tools). EA couldn't do it, Rockstar couldn't do it, Activision couldn't do it, even the mighty Denuvo couldn't do it, you certainly can't do it.



            However, you should stop and ask yourself why you want your game to be that secure. Out of every 1000 cheaters you stop, maybe one or two would actually pay. You should put in a moderate amount of effort on security (take KYL3R's advice), simply to keep honest people honest. Dishonest people will always find a way, so don't worry about them so much that you end up wasting time on (useless) security; time you could spend on making your game better.



            Oh and by the way, that's also one way to keep hackers out: frequent updates to the game. They have no life, but they don't have enough time to keep making a hacked version of every game on the market every week.






            share|improve this answer

























              0














              You won't ever keep hackers from hacking your games, even if it does indeed have a backing server. Just look at all the unofficial world of warcraft servers. You can keep things relatively safe if you have a server, you keep its source code secure, and your game is meaningless without its server (think Dota 2 with no multiplayer capabilities...). Even then, you can't actually validate the player's every move, unless it's a turn based game and you actually send every move the server to be processed (this works in Hearthstone, for example, but not in WoW, hence all the anti-cheating tools). EA couldn't do it, Rockstar couldn't do it, Activision couldn't do it, even the mighty Denuvo couldn't do it, you certainly can't do it.



              However, you should stop and ask yourself why you want your game to be that secure. Out of every 1000 cheaters you stop, maybe one or two would actually pay. You should put in a moderate amount of effort on security (take KYL3R's advice), simply to keep honest people honest. Dishonest people will always find a way, so don't worry about them so much that you end up wasting time on (useless) security; time you could spend on making your game better.



              Oh and by the way, that's also one way to keep hackers out: frequent updates to the game. They have no life, but they don't have enough time to keep making a hacked version of every game on the market every week.






              share|improve this answer























                0












                0








                0






                You won't ever keep hackers from hacking your games, even if it does indeed have a backing server. Just look at all the unofficial world of warcraft servers. You can keep things relatively safe if you have a server, you keep its source code secure, and your game is meaningless without its server (think Dota 2 with no multiplayer capabilities...). Even then, you can't actually validate the player's every move, unless it's a turn based game and you actually send every move the server to be processed (this works in Hearthstone, for example, but not in WoW, hence all the anti-cheating tools). EA couldn't do it, Rockstar couldn't do it, Activision couldn't do it, even the mighty Denuvo couldn't do it, you certainly can't do it.



                However, you should stop and ask yourself why you want your game to be that secure. Out of every 1000 cheaters you stop, maybe one or two would actually pay. You should put in a moderate amount of effort on security (take KYL3R's advice), simply to keep honest people honest. Dishonest people will always find a way, so don't worry about them so much that you end up wasting time on (useless) security; time you could spend on making your game better.



                Oh and by the way, that's also one way to keep hackers out: frequent updates to the game. They have no life, but they don't have enough time to keep making a hacked version of every game on the market every week.






                share|improve this answer












                You won't ever keep hackers from hacking your games, even if it does indeed have a backing server. Just look at all the unofficial world of warcraft servers. You can keep things relatively safe if you have a server, you keep its source code secure, and your game is meaningless without its server (think Dota 2 with no multiplayer capabilities...). Even then, you can't actually validate the player's every move, unless it's a turn based game and you actually send every move the server to be processed (this works in Hearthstone, for example, but not in WoW, hence all the anti-cheating tools). EA couldn't do it, Rockstar couldn't do it, Activision couldn't do it, even the mighty Denuvo couldn't do it, you certainly can't do it.



                However, you should stop and ask yourself why you want your game to be that secure. Out of every 1000 cheaters you stop, maybe one or two would actually pay. You should put in a moderate amount of effort on security (take KYL3R's advice), simply to keep honest people honest. Dishonest people will always find a way, so don't worry about them so much that you end up wasting time on (useless) security; time you could spend on making your game better.



                Oh and by the way, that's also one way to keep hackers out: frequent updates to the game. They have no life, but they don't have enough time to keep making a hacked version of every game on the market every week.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 13 at 4:04









                Arshia001

                700510




                700510



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53258648%2fhow-to-prevent-so-file-hacking-in-so-file%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    這個網誌中的熱門文章

                    What does pagestruct do in Eviews?

                    Dutch intervention in Lombok and Karangasem

                    Channel Islands