![]() |
|
|
|
#1
|
|||
|
|||
|
I'm glad you mentioned optimizing. I already though about a method.. If you make az abstarct representation of the semantics of the code (as I wrote in the first part of my previous post) then you can even transform it back to asm. Since you can describe asm with this language, you can create many representations back and choose the one that is most optimal for you. You just have to be sure that you transformed everything.
I'm not sure I can describe my idea well... so the algorithm could be like: describe the asm instructions with these abstract statements (there could be more than one representation, of course). Then you look for these sequences in the abstract representation (doestn't have to be strictly a sequence, there canm be holes that will be represented by other instructions). Then, you will have many-many asm representations that do exactly the same. So you can make a function that computes you an optimality value, and choose the best. I didn't know whether there is research in this direction, maybe I didn't find anything new ![]() kp |
|
#2
|
|||
|
|||
|
I saw an article describing something similar while working on the automatic generation of multimedia instructions (MMX, SSE and the like). While most works tend to focus on generating optimized binary (or source code using special constructs to direct the use of multimedia opcodes), one group was studying instead the possibility of applying the same kind of optimization directly on the binaries, thus using an approach similar to one you picture.
Unfortunately, i can't find the references of the article i read... I'll post it if i find it later... In any case, it should be referenced on citeseer (hxxp://www.citeseer.com), and referenced through keywords like 'SIMD', 'vectorization' or 'multimedia instruction set', so you may want to try to look there if you are interested. |
|
#3
|
|||
|
|||
|
Decompilation: On the Technical Infeasability
It is computationally infeasible to decompile arbitrary bytecode output back to C++, except in certain (isolated) special instances, such as targeting a subset of C++, and targeting a specific architecture and compiler. In the case of VMs, such as Java and Flash, it is possible due to the (relatively limited) nature of the output bytecode. In the case of C++, the myriad of possible compilation options, optimization, debugging code, etc. complicates matters enormously; what's more, there is significant data loss through discarded variable names in the interest of size, etc. Decompilation is thus an NP-complete problem that can only be partially solved through the use of O(n^2) algorithms; that this is verifiable has been demonstrated on several occasions in respected computational and information theory journals.
Though many have strived to produce such a result, the room for leeway is slight, and (generally) does not work on arbitrary, but rather specially-constructed programs in a very limited way. The entire methodology is flawed; the most effective way to obtain lost source code is to glean understanding from the underlying assembly code and then recreating it through existing programming knowledge. Sincerely, -archaios |
|
#4
|
|||
|
|||
|
Yes, I know decompilng is impossible...
But check this location: hxxp://www.backerstreet.com/cg/work.htm There are several decompiling projects an infos. Maybe some of them are useful. gypsy |
|
#5
|
|||
|
|||
|
See uncc
you can see uncc,which can decompile to c language, and I am working on it to enhance it's ability.
you can find uncc on the net easily. |
|
#6
|
|||
|
|||
|
It maybe rewrite, but not decompiling.
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Decompiling the mov compiler | chants | General Discussion | 3 | 12-08-2016 21:16 |
| Who are familiar with decompiling? | DMichael | General Discussion | 3 | 08-09-2013 01:04 |
| VB3 decompiling | wasq | General Discussion | 23 | 05-23-2005 02:30 |