Live data from Hacker News

Panopticon: A libre, cross platform disassembler for reverse engineering

panopticon.re

71–80 of 90 posts

Re: Panopticon: A libre, cross platform disassembler for reverse engineering

#71

Let's assume you have reversed engineered some kind of boolean check and you now want to patch it to always return true or false. What does that process look like at a high level?

Not the platform you're asking about, but in Binary Ninja, you right-click on the conditional jump and choose "Always Branch", "Never Branch", or "Invert Branch".

Binary Ninja also supports inline editing of assembly and a custom compiler for dropping simple C replacements directly on top of existing functionality.

Re: Panopticon: A libre, cross platform disassembler for reverse engineering

#72
post #69
post #66

I noticed that this only supports AVR. what is your plan to support x86? would you think about linking against some external code that provides semantics for x86?

The README is a bit out of date. It support MOS 6502 and parts of x86_64 too. I currently writing the lifting code that translates x86 opcodes to a simpler intermediate language: https://github.com/flanfly/panopticon/blob/feature/rreil/lib...

godspeed! that's hard work, especially if you want to deal with MMX/SSE and the FPU.

Re: Panopticon: A libre, cross platform disassembler for reverse engineering

#73
The project states:

"Panopticon is a disassembler that understands the semantics of opcodes. This way it's able to help the user by discovering and displaying invariants that would have to be discovered "by hand" in traditional disassemblers."

Doesn't every disassembler have to understand the opcode semantics in order to disassemble and make sense of them or am I misinterpreting that statement?

Also can anyone explain what the "invariants" are? When I hear the word I can only think of loop invariants and I'm guessing that is not what the author means here.

Re: Panopticon: A libre, cross platform disassembler for reverse engineering

#74
post #55

Great work. Therefore that's one more disassembler in the wide. Some of the great open source ones, reverse oriented, that I have been able to test are: Metasm: https://github.com/jjyg/metasm/ Radare: http://radare.org/ Capstone: http://www.capstone-engine.org/ Capstone is based on LLVM, that you cannot beat in term of architectures and industrial quality, and has great plugins, which make it kind of my favorite. Of…

There's also Binary Ninja. Still in beta, but available to anyone who requests to join the beta before it's public release: https://binary.ninja

The only mention of "beta" that I can find on the site is: http://binary.ninja/eula.txt

Where is the request form?

Re: Panopticon: A libre, cross platform disassembler for reverse engineering

#75
post #53
post #37

Earlier quoted context omitted.

If you have more time than money, here's a possible option: - Buy IDA Pro using a credit card - Find bug or two, submit to bug bounty [1] - Pay back credit using bug bounty money [1] - https://www.hex-rays.com/bugbounty.shtml

If life were so simple, everyone would be doing it don't you think?

My friend's grandfather was an economist. When he was a little boy he saw a $20 bill on the sidewalk on a walk with with his grandfather. He pointed to it and said "Grandpa look someone dropped a twenty dollar bill! We will be rich!" His grandfather dismissed his enthusiasm and explained that if there was free money on the ground somebody would have picked it up by now.

Re: Panopticon: A libre, cross platform disassembler for reverse engineering

#76

The project states: "Panopticon is a disassembler that understands the semantics of opcodes. This way it's able to help the user by discovering and displaying invariants that would have to be discovered "by hand" in traditional disassemblers." Doesn't every disassembler have to understand the opcode semantics in order to disassemble and make sense of them or am I misinterpreting that statement? Also can anyone explai…

You say "in order to disassemble and make sense of them", but the "sense" that a disassembler makes can just be the direct conversion from machine code to equivalent assembley. Machine code is just another syntax, directly converting that into assembly can happen instruction-by-instruction.

Making more sensible assembly that a human would write is another thing, if you want to follow jumps to figure out where instructions are and regenerate labels, then that's one step towards semantics.

I don't know what kinds of invariants panopticon is looking at, but there seems to be code for static analysis using abstract interpretation[1]. This could do the data-flow analysis, determine types and recognize persistent variables.

[1] https://en.wikipedia.org/wiki/Abstract_interpretation

Re: Panopticon: A libre, cross platform disassembler for reverse engineering

#77
post #74

Earlier quoted context omitted.

There's also Binary Ninja. Still in beta, but available to anyone who requests to join the beta before it's public release: https://binary.ninja

The only mention of "beta" that I can find on the site is: http://binary.ninja/eula.txt Where is the request form?

Email, slack, or the "Questions or Comments?" popup are all acceptable
Post reply on HN