whartung wrote:
Simple, you tell the decompiler that the binary is for a C-128 so that it can apply known heuristics to the process (such as "what PRIMM does").
In 'The Bard's Tale III' Rebecca Heineman compressed the text output following the JSR instruction. This code found at $7b3a (AppleII)
Code:
$7b3a: jsr $7439
hex f4,d2,68,98,22,89,83,29
hex 89,51,90,52,68,9b,61,43
hex d4,e4,07,fa,52,1f,d4,af
hex b3,bf,ae,03,e2,bc,37,7d
hex 03,65,49,21,9b,c3,31,2c
hex c1,9a,4c,df,f1,de,80
will first clear the output window and then write the string 'there are stairs here, going /up down . do you wish to take them?\r\r'.
whartung wrote:
It's fair guess lacking any other information.
Unfortunately there is no way that you can guess what this code does. The string compression was invented by Burger Becky, which means there are no 'known heuristics.' Instead you will have to set up a 'specific rule' because otherwise the decompiler does not know what is code and what is data. But this means you have to analyse the output routine before you can decompile it. Doesn't make sense, does it?
whartung wrote:
Finally, not all of the code is written obscurely.
Correct, but lots of code was not written in pure 6502 assembly language but some language the programmer created on the fly. If the task is to preserve old programs of that area we need to understand that these programs are more than just machine code binaries. The basic assumption of this whole undertaking is already seriously flawed.
White Flame wrote:
The problem is that the very architecture he's working on won't get him any farther than anyone else has gone, regardless of time spent.
Indeed, no matter how much time you spend on building a perpetual motion machine you will never come to an end because it violates fundamental laws of physics, and in a similar way that's what Mr Hecht and others attempt. The idea behind the decompiler project is: all we need is a vocabulary and a set of rules, and then we can translate a sentence from language A into a sentence from language B. This idea was proposed somewhat around the 1950s but was soon dropped when scientists realised that there is more to language than just a set of rules and a list of words. Since then a lot of people (linguists and AI scientists) have discussed this problem but so far noone has found a real solution for it. And while I'm probably one of the few linguists who do not for example agree with Searle (
http://en.wikipedia.org/wiki/Chinese_room says: understanding is generally impossible) I doubt that Mr Hecht is able to come up with an idea where all the great minds failed.
BigEd wrote:
Note that Ulrich has already helpfully provided 3 links for people arguing that it can't be done: he's not unaware of these points.
The arguments presented do not discuss important things like self-modifying code or bytecode or self-referencing. Judging from the links I do not get the impression that the author has a concept of how language works (syntax, semantics, pragmatics etc), even if it is "just" a formal language.
White Flame wrote:
it needs some very fundamental and powerful conceptualization basis
Alas, I can see none.
White Flame wrote:
Plus, it must "know" some useful description of the system
Indeed, "knowing" is the key. How do you teach the decompiler about the programming context? If I tell you that my hovercraft is full of eels, you will either don't understand what I'm saying at all (though the syntax is correct) or you will "know" that I am referring to
http://www.youtube.com/watch?v=akbflkF_1zY because you understand the reference with the aid of your world knowledge. What the decompiler attempts is to understand 'my hovercraft is full of eels' by looking at the letters 'm-y- -h-o-v-e-r-c-r-a-f-t-..'. It has no idea of any context yet, and Mr Hecht does not tell us how he will create the (huge) data base to provide his decompiler with enough information.
"White Flame wrote:
Basically Commodore 64 games & scene stuff, helped out a lot with others trying to figure out copy protections, compression algorithms, etc.
Good to see there are still people actively supporting the C64!
"White Flame wrote:
I also started on WFDis back in 1996 or so (wow). It wasn't great but is at least interactive and did a lot of things that I'd not seen any other disasm do back then. I've since done a lot of analysis work on what it would take to have the machine perform reverse engineering, instead of just displaying information for a human to reverse engineer from. That's actually what drove me to get into AI.
Sorry, I've never come across that program. Well, I bet you know more about decompiling then than Mr Hecht.
Cheers
Miles