Sorry for bumping such an old thread but I have to add my two cents worth to this subject. Some of the stuff stated here is quite vague.
So first of all, all languages compile to the native machine code of the target processor and at that point, it’s all the same.
The main difference between languages is that some are interpreter-, compiler and Just-in-time-compiler languages which makes it quite difficult to reverse some of them while some are quite easy.
The most common approaches that you gotta know to answer the question are decompiling and disassembling.
Very basic explanation:
A decompiler transforms a binary to (theoretically) its high level language it was written in.
A disassembler transforms a binary to Assembly language.
The information kept with the binary is different for compiler or Just-in-time-compiler languages which leads to the fact not every binary could be decompiled while every binary could be disassembled as disassembling is very low level.
Just decompiling a C# executable with tools like dotPeek doesn't really require any knowledge other than knowing the language the application is written in.
C++ for example is way harder because you can't just decompile it as information is discarded in the compiling process. Disassembling however works just fine but it has the downside that you gotta understand assembler. Even if a decompiler could produce the logical equivalent code, which it probably can't, you wouldn't have any variable names or class names - just addresses which is quite confusing for humans.
That being said, you shouldn't choose what language you learn or use for a project based on how hard it is to reverse engineer...
Using a language that is almost impossible or very hard to decompile will just prevent script kiddies from fucking around with your stuff but just changing the language doesn't really make it harder for somebody with experience.
tl;dr
Fully Compiled languages like C++ are always harder to reverse than interpreted ones like PHP or some hybrid JIT ones like C#.
(03-18-2020, 12:14 AM)Drako Wrote: Before your post I couldn't find a single program capable of reverse engineering C++.
IDA Pro, OllyDbg, ReClass?
Literally any disassembler or debugger could be used to reverse C++ applications.
The only special thing about Ghidra is that it has a very good pseudo code decompiler thing (idk what it's exact name is).
Sincerely,
chunky