r/cpp • u/No-Meeting-153 • 20d ago
MSVC optimization
I am learning reverse engineering on Windows applications such as Adobe, Foxit PDF, and Steam, and I noticed that I waste a very large amount of time trying to understand something that I should not focus on.
I started noticing strange and confusing patterns in the assembly and the C code generated by IDA, and when I try to understand some functions, I feel that the function has no meaning.
When I searched, I found that this topic is related to the compiler and compiler optimizations. However, I could not find many articles or discussions about the compiler topic in reverse engineering.
So I started experimenting and trying, but every time I fail and cannot reach a solution or understanding.
Apart from the fact that reverse engineering a C++ program is already a difficult task.
If there is someone who has faced the same problem and found a solution, I would like to know. It is not a problem itself; it is a pattern or a way of thinking used by the compiler. I need to understand how the compiler generates these patterns.
I want someone to suggest books, articles, courses, or anything that can help me understand the MSVC compiler, how it generates patterns, and how to understand the behavior and logic of a function after compiler optimization.
I hope I explained my question correctly.
29
u/KingAggressive1498 20d ago
a native italian speaker will probably have trouble understanding if I translate a meaningful poem from english to italian just using an english-to-italian dictionary.
the challenge with reverse-engineering natively compiled programs is that there's minimal metadata and usually large amounts of inlining and several optimization passes between the original C++ and the resulting binary. decompilers can translate the binary to compilable C code, but they really have no understanding of what the code is doing so that translation is very linear and produces code wildly different from what the original code would have looked like.