How to prevent so file hacking in so file
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
add a comment |
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
add a comment |
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
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
unity3d dump il2cpp
asked Nov 12 at 8:53
Cloud Lee
814
814
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
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()getsBananaJungle()- 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)
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
|
show 4 more comments
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.
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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()getsBananaJungle()- 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)
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
|
show 4 more comments
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()getsBananaJungle()- 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)
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
|
show 4 more comments
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()getsBananaJungle()- 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)
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()getsBananaJungle()- 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)
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
|
show 4 more comments
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
|
show 4 more comments
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.
add a comment |
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.
add a comment |
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.
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.
answered Nov 13 at 4:04
Arshia001
700510
700510
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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