I'm New Here

Pascal Bourguignon pjb at informatimago.com
Sun Jul 22 12:00:29 UTC 2001


> From: "Frank Lesser" <Frank-Lesser at Lesser-Software.com>
> Date: Sun, 22 Jul 2001 03:32:28 +0200
> 
> Hi Tim,
> 
> ok - please regard it simply as my opinion - a decompiler cannot be
> removed - it may be offered by a third party as in the Java world.
> 
> But how you will answer the question if you try to convince someone to use a
> specific Smalltalk environment -
> he will ask - it is your favourite tool - but is it maintained will it exist
> in a few years, and so on.
> 
> By translating Smalltalk to something - a few years back there were at least
> a demand on translating to Java -
> you can maybe convince someone to make a decision use a high productivity
> environment.
> 
> I didn't say translation is the king way - But it can be one feature which
> helps ...


The point is that any form of a program can be translated in any other
form, given the equivalence theorem of all Turing machines.

It's as easy  to get a C-source from a  machine language "binary" than
it is to get a Smalltalk source from a Smalltalk image. And as easy to
translate   back  to   Smalltalk  from   a  C-source   generated  from
Smalltalk.  

Actually the hardest  part is in effect to  retrieve meaningfull names
to the objects found  in the program.  But even this is  not much of a
problem  for a  competent  programmer  : just  read  the "source"  and
understand what it does from what it really does (finding all the bugs
by the  way...), and  name them. Well,  some variable will  stay named
_t08543,  which is as  meaningfull than  those i,  k, dummy,  and temp
variables.



Note also that not having the names of all the objects of a program is
often  not a problem,  because you  can patch  it the  same, replacing
parts you've identified or adding your own objects.

Let  me see,  the last  time  I've corrected  a bug  in an  OpenSource
program, it was:

  102 files,  35724 lines,  166973 words,  1151330 bytes in total

and I  actually opened  5 or 

    6 files,  3549  lines,    15870 words,  104996 bytes, 

but actually  read only a  small part of  them (like one  procedure in
each), and edited just two lines in one file.

I  would say  that's  typical. In  another  case, where  I changed  an
algorithm  that had  quite  wide-range repercusions  on  a program,  I
changed 9 files over 157.



Therefore I  would say  that to  abuse of your  programs, one  need to
understand only 5% or 6% of it, and this can be done whatever the form
it's in. Even when we'll have  the technology to encode such a program
into DNA, we'll have it to decode it and it'll still be that easy.


They are some  techniques that can be implemented  to make the program
terminate when it  detects it has been modified. It  can be made quite
difficult  to  circumvent these  mechanisms,  but  this difficulty  is
bounded:  it's the  difficulty  of decompiling  and understanding  the
whole program.


Now I agree that all this can't be understood by a PHB, and you should
probably follow Tim's advice  Tim, encapsulate your Smalltalk programs
into a kind of "binary" file  that can't immediately be read back into
a  Smalltalk  environment, and  show  him  how  you've been  ingenious
inventing this  nice Smalltalk to binary-executable  generator. It can
be  costeffective  to this  purpose  to  obfuscate  the names  of  the
objects, which should not be a problem for a closed system.


-- 
__Pascal_Bourguignon__              (o_ Software patents are endangering
()  ASCII ribbon against html email //\ the computer industry all around
/\  and Microsoft attachments.      V_/ the world http://lpf.ai.mit.edu/
1962:DO20I=1.100  2001:my($f)=`fortune`;  http://petition.eurolinux.org/

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/IT d? s++:++(+++)>++ a C+++  UB+++L++++$S+X++++>$ P- L+++ E++ W++
N++ o-- K- w------ O- M++$ V PS+E++ Y++ PGP++ t+ 5? X+ R !tv b++(+)
DI+++ D++ G++ e+++ h+(++) r? y---? UF++++
------END GEEK CODE BLOCK------




More information about the Squeak-dev mailing list