>accurate
What is this supposed to mean? Decompilers preserve the semantics of the machine code, which is hard enough. They can't restore the original code.
> the decompiled code they spit out does the same thing as the binary/assembly
I would love to know what magic decompiler you are using, because I am not aware of such tool that is good enough to create correct working code.
They're accurate in the sense that the decompiled code they spit out does the same thing as the binary/assembly you feed into them. Whether it's comprehensible or useful to you is another matter.
No, not even close. You would probably need AGI to implement an accurate decompiler. Also, there is a major difficulty with decompiling, no good target language, C with all its undefined behavour and other issues makes it a terrible language to decompile into, and there really arn't any other good low-level systems languages.
I think that mostly depends on how much information you have about the binary you're decompiling, for example if you know what compiler was used then configure your decompiler to parse the binary based on that compiler.
In the process of building a binary the source code is also converted to assembly, which can heavily optimize the code to the point where information from the source code is lost. So the binary may be missing information from that step.
They're accurate in the sense that the decompiled code they spit out does the same thing as the binary/assembly you feed into them. Whether it's comprehensible or useful to you is another matter.
no women like yunyun. they are chad only. if you identify with yunyun you are either gay or incel.
4 weeks ago
Anonymous
Straight men are incels. No one in their right mind would ever mingle with a woman anymore, their days are over.
4 weeks ago
Anonymous
How does it feel like having a gf?
I bet its nice when u cuddle.
I wish I had a gf to cuddle with.
Instead I just bite the bullet and do the real hard work you never will. I am superior to normies like you.
4 weeks ago
Anonymous
Human beings are disgusting. The only good human is a dead human.
No, not even close. You would probably need AGI to implement an accurate decompiler. Also, there is a major difficulty with decompiling, no good target language, C with all its undefined behavour and other issues makes it a terrible language to decompile into, and there really arn't any other good low-level systems languages.
They're accurate in the sense that the decompiled code they spit out does the same thing as the binary/assembly you feed into them. Whether it's comprehensible or useful to you is another matter.
> the decompiled code they spit out does the same thing as the binary/assembly
I would love to know what magic decompiler you are using, because I am not aware of such tool that is good enough to create correct working code.
Decompilers cannot work in principle. There is no decompile to a a high level language that compiles back to the same bytecode. High level languages are simply too limited for this.
Actually languages which compile to bytecode are some of the easiest to decompile. Java and C# decompilers are so good you can often execute their output. This is because the format is standard, there is a single compiler, and there is extensive metadata.
Native decompilers cannot be so accurate, there is often no metadata at all. In a natively compiled binary the first problem is to separate the code from data and disassemble it. This is difficult and often inaccurate, the user is expected to correct it. You can forget about things like data "types", it's all bytes. You can forget about recovering structure accurately because the compiler does what's efficient; unrolls loops, inlining function calls, etc. There are many more challenges to decompiling that you can look into if you're interested.
So a native decompiler's job really isn't to be accurate or to produce source equivalent output. It's to make the job of the reverse engineer simper by taking what you give it, and doing its best to make it easier to understand.
There's a lot of manual intervention required to fix things that are mangled or misinterpreted in the process, but in general yes. And also, to gain any meaning or complete understanding of how logic flows within the program, a lot more work is needed.
You need to get the frick off IQfy and take a CS101 class. Any Turing complete system can be used to emulate another Turing complete system, which means you can use any given programming language to emulate any other programming language with enough effort. People have made full on RISC-V computers within Terraria and Scratch, which themselves are made up of extremely high level languages.
With full debugging symbols they can do a reasonable job. Not perfect, but recognizable.
Without debugging symbols... well, what you see is just awful (for C) or worse (for C++) in that you can get SOMETHING but it won't necessarily bear even a passing resemblance to the original. I've never tried reversing other languages that go direct to machine code.
I believe you can do better when going from JVM bytecode to Java or .NET CIL to C#; there's more information there.
>accurate
What is this supposed to mean? Decompilers preserve the semantics of the machine code, which is hard enough. They can't restore the original code.
#[naked]
unsafe extern "C" fn decompiled() {
asm! {
// code goes here
}
}
I think that mostly depends on how much information you have about the binary you're decompiling, for example if you know what compiler was used then configure your decompiler to parse the binary based on that compiler.
In the process of building a binary the source code is also converted to assembly, which can heavily optimize the code to the point where information from the source code is lost. So the binary may be missing information from that step.
Nakaadashi
it depends
go I would love having a yunyun to hug and make passionate love.
Dumb tranime poster
Why do i have a hunch op does not have self awareness and is most likely an NPC? Is it just me? am i schizo?
yunyun is straight man choice by default so frick off homosexual
no women like yunyun. they are chad only. if you identify with yunyun you are either gay or incel.
Straight men are incels. No one in their right mind would ever mingle with a woman anymore, their days are over.
How does it feel like having a gf?
I bet its nice when u cuddle.
I wish I had a gf to cuddle with.
Instead I just bite the bullet and do the real hard work you never will. I am superior to normies like you.
Human beings are disgusting. The only good human is a dead human.
No, not even close. You would probably need AGI to implement an accurate decompiler. Also, there is a major difficulty with decompiling, no good target language, C with all its undefined behavour and other issues makes it a terrible language to decompile into, and there really arn't any other good low-level systems languages.
They're accurate in the sense that the decompiled code they spit out does the same thing as the binary/assembly you feed into them. Whether it's comprehensible or useful to you is another matter.
> the decompiled code they spit out does the same thing as the binary/assembly
I would love to know what magic decompiler you are using, because I am not aware of such tool that is good enough to create correct working code.
Ghidra?
No decompiled code isn't the same without seeing the slurs in the comments.
Decompilers cannot work in principle. There is no decompile to a a high level language that compiles back to the same bytecode. High level languages are simply too limited for this.
>simply
gtfo youre not qualified
So what are your qualifications?
Just you know not being moronic. Maybe a little bit of critical thinking too.
>none whatsoever
Got it.
Actually languages which compile to bytecode are some of the easiest to decompile. Java and C# decompilers are so good you can often execute their output. This is because the format is standard, there is a single compiler, and there is extensive metadata.
Native decompilers cannot be so accurate, there is often no metadata at all. In a natively compiled binary the first problem is to separate the code from data and disassemble it. This is difficult and often inaccurate, the user is expected to correct it. You can forget about things like data "types", it's all bytes. You can forget about recovering structure accurately because the compiler does what's efficient; unrolls loops, inlining function calls, etc. There are many more challenges to decompiling that you can look into if you're interested.
So a native decompiler's job really isn't to be accurate or to produce source equivalent output. It's to make the job of the reverse engineer simper by taking what you give it, and doing its best to make it easier to understand.
There's a lot of manual intervention required to fix things that are mangled or misinterpreted in the process, but in general yes. And also, to gain any meaning or complete understanding of how logic flows within the program, a lot more work is needed.
You need to get the frick off IQfy and take a CS101 class. Any Turing complete system can be used to emulate another Turing complete system, which means you can use any given programming language to emulate any other programming language with enough effort. People have made full on RISC-V computers within Terraria and Scratch, which themselves are made up of extremely high level languages.
>Turing complete
Christ, it's only getting stupider in here.
Next time just google, OP. Only idiots in IQfy.
With full debugging symbols they can do a reasonable job. Not perfect, but recognizable.
Without debugging symbols... well, what you see is just awful (for C) or worse (for C++) in that you can get SOMETHING but it won't necessarily bear even a passing resemblance to the original. I've never tried reversing other languages that go direct to machine code.
I believe you can do better when going from JVM bytecode to Java or .NET CIL to C#; there's more information there.