Cray
Cray

Reputation: 2454

Do inline functions make it harder to reverse-engineer the compiled binary?

So basically, besides possible performance effects, does inlining functions have any considerable effect on how difficult it is to reverse-engineer the program from its compiled and linked binary?

I mean, it should be, since 1) the cracker just sees more machine instructions, instead of nice understandable "call XXXXX", which he may already have discovered to do a certain thing. and 2) inlining provides more possibilities for the compiler to optimize code, and that is even more obfuscation, right?

Also, considering the inline keyword is just a suggestion to the compiler, how much effect can this really have? Should we bother? I mean, of course they will crack it eventually, but if by such simple measures we can make the cracker's life harder, why not?

Upvotes: 5

Views: 1218

Answers (2)

Jeffrey Faust
Jeffrey Faust

Reputation: 634

The choice to inline methods or not should not be based on how easy it is to reverse engineer. The difference between inlining and not will be negligible.

The exception is if you have any anti-piracy code, inlining that, or even using macros to ensure it's "inlined" can help remove a single point of failure.

If you're concerned about this, I suggest looking into obfuscation tools that operate on the binary.

Upvotes: 2

Jerry Coffin
Jerry Coffin

Reputation: 490768

It will decrease the similarity between your input and his output. It generally won't have much effect on his efforts in general though.

Upvotes: 1

Related Questions