![]() ![]() * Code ideally should be obfuscated, but C++ compiler doesn't do that. ![]() * Variables still exist but they don't have names "though it does remove the names of the variables and functions replacing them with addresses" Such thing does not happen in (normal) C++.Ĭlick to expand.The response you've given earlier has implications, which can give many incorrect ideas. However, in mono executable it is possible to modify game logic itself, and it can be done very easily. NET/Mono executable where you can pretty much rebuild the source code from it with a click and easily move game logic.īasically the big difference between C++ executable (non-il2cpp) and mono executable is that in C++ executable realistcally the only things that can somewhat be easily done is monitoring memory for values and intercepting system calls and optionally modifying data sent/received through them. However, in case of pure C++ this is nowhere close to what you can do with. You can also track and hijack api calls and scan memory for values. And those would allow decompilation of IL2CPP executables only. Additionally IL2CPP executable is not normal C++ code, but transpiled from IL2, meaning you'll get leftover helper structures specific to IL2CPP. That won't get you much, but you'll get function names. For example, if whoever compiled the game made a blunder and included symbols. ![]() Now, there are situations where reverse engineering is easier. So if you got a normal C++ game, modifying logic is something that isn't going to happen easily and rarely ever done. The result is going to be inusable for anything serious. McSema that you mentioned does not reverse compilation either, it trasnpiles into IR code used by LLVM. What you get is assembly without a single human-readable identifier anywhere. I know that because I attempted reverse engineering of C++ projects several times. You cannot rebuild source from a compiled exe in any way other than manually by hand, and doing that is incredibly difficult, especially with object oriented code. There's nothing to obfuscate aside from dll calls, because compiled executable does not have much of information in it. There are no names, no variables, only memory and registers. In normal C++ compilation, ALL information is destroyed upon compile. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |