Thread: С++ obfuscator

  1. #31
    Programming Wraith GReaper's Avatar
    Join Date
    Apr 2009
    Location
    Greece
    Posts
    2,541
    Quote Originally Posted by Nwb View Post
    Can somebody see the basic structure of the program like if there was a class declared or something like that? Is that possible? Or can they just see the cout statements? If they can only see the cout statements then how will they know how the cat was skinned?
    With a lot of work and dedication, any machine code program can be decoded into source code that, more or less, makes sense. It's almost impossible to recreate the original source though, especially if it was optimized and striped of symbols. For example, you find in the code multiple calls to a single subroutine, which after a bit of head-scratching start to resemble strcpy(). You go back and look through the arguments that are passed to said subroutine, and as it turns out they are all strings. That is a strong indication it really is strcpy(). You name that subroutine "strcpy" and move on... That, in a tiny nutshell, is how reverse engineering works (don't quote me on that). Many times, simply looking at the code isn't enough. You need to observe the program while it is running, and see how changing some variable influences its execution.
    Devoted my life to programming...

  2. #32
    Registered User
    Join Date
    Sep 2018
    Posts
    150
    Quote Originally Posted by GReaper View Post
    With a lot of work and dedication, any machine code program can be decoded into source code that, more or less, makes sense. It's almost impossible to recreate the original source though, especially if it was optimized and striped of symbols. For example, you find in the code multiple calls to a single subroutine, which after a bit of head-scratching start to resemble strcpy(). You go back and look through the arguments that are passed to said subroutine, and as it turns out they are all strings. That is a strong indication it really is strcpy(). You name that subroutine "strcpy" and move on... That, in a tiny nutshell, is how reverse engineering works (don't quote me on that). Many times, simply looking at the code isn't enough. You need to observe the program while it is running, and see how changing some variable influences its execution.
    Ah so you can identify things like subroutines being called by the program (still don't know how but okay that's all I need to know for now), because if it were a normal person he wouldn't be able to look at that he would only be able to look at the output. And I thought the output was the ONLY thing that could be deciphered from the program. Makes more sense then.

  3. #33
    Registered User
    Join Date
    Oct 2006
    Posts
    3,443
    Quote Originally Posted by Nwb View Post
    Ah so you can identify things like subroutines being called by the program
    Yes, but you won't know their names, such as printf(), etc.

    In a lot of C++ code, standard library implementations are heavily dependent upon templates, and a good optimizing compiler will do away with traditional function calls where it can, opting to inline things instead. As a result, the boundary between "subroutines" being called gets extremely blurry, to the point of being nearly undetectable, unless you have a great deal of experience with reverse engineering machine code.
    What can this strange device be?
    When I touch it, it gives forth a sound
    It's got wires that vibrate and give music
    What can this thing be that I found?

  4. #34
    Registered User
    Join Date
    Oct 2018
    Posts
    9
    I did not expect that my question would cause so many questions and disputes. Thanks to everyone who was not indifferent and expressed his opinion)

  5. #35
    Registered User
    Join Date
    Oct 2018
    Posts
    4
    Quote Originally Posted by MasterYoda View Post
    I did not expect that my question would cause so many questions and disputes. Thanks to everyone who was not indifferent and expressed his opinion)
    Do not think that your question is stupid or ridiculous. Not. Obfuscation is used quite often to prevent code theft from competitors. Even if it happens not often. For anti-cheat protection in video games. Obfuscators are also used in the development of commercial applications and DRM code.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Developing free .NET obfuscator. Need feedback.
    By ianderf in forum C# Programming
    Replies: 1
    Last Post: 09-10-2014, 04:22 PM
  2. work with files in С99
    By sanda in forum C Programming
    Replies: 4
    Last Post: 05-06-2010, 03:17 AM

Tags for this Thread