Getting rid of .sources file for deployment

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
24 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Getting rid of .sources file for deployment

Davide Grandi-3
Ok, I'll give you a result, meanwhile fixing some imprecisions.

The "class" is CogVmSimulator but it's use is very far from my knowlegde,
I recalled having seen a picture of Pharo-in-Pharo (or Squeak-in-Squeak)
running under this simulator.
It lives near the Cog side (or the OpenVM side) of Squeak/Pharo
(If I'm not wrong Squeak ran into an emulator, before walking on his
legs-his VM).

There are many of these simulator, for other Smalltalk :
- Hobbes and others for Xerox (thanks to files of Mario Molczko and/or
   Bitsavers
- Dan Ingalls Apda Smalltalk + old Smalltalk -72 /-76
and maybe others I don't yet know about

The reason is quite simple : the object memory is written to disk
and the spec of executing Smalltalk are known either from the books
or by the source.

The root is Xerox's SystemTracer, a class that wrote a running image
to disk, optionally changing object format (see the Green Book).

So :
- if you can read the image
- you can run into a simulator
- or decode it without to much effort (5 emulators for Xerox V2 image,
so far).
(try to open an image with a text editor : intriguing !)

I don't know how Cincom or Instantiations protect the released st code,
but for Pharo and Squeak this is not a point : they are all open.

So, as if you wanna "protect" names and methods of a running image ...
... you have to (IMHO) :
- encrypt executable and image (and modify the VM)
- or obfuscate your classes and methods renaming it to
   C1, C2, ..., m1:p1:p2: and so on (keeping a map for debugging)

Sorry to be imprecise about names and locations
apart from suggest to see 4 emulators 4 running in a squeak image
running ... in javascript in your browser (so total is 5) at :
https://smalltalkzoo.thechm.org/HOPL-Squeak.html?earlyst80
(thanks to Vanessa Freudemberg & Dan Ingalls).

Sorry again & best regards,

     Davide Grandi

On 06/09/2020 23:51, Esteban Maringolo wrote:

> If somebody gets to open the image and loads it with an Smalltalk
> Emulator to execute it I'll ask him/her to start working together, and
> even teach me how to do it.
>
> I don't want to shield the image from being accessed, just want to
> make it harder than simply removing the '--headless' parameter to the
> VM executable.
> Of course removing sources is a plus (I do for a VW deployed image),
> but even for this particular piece of software that I'm asking for, I
> don't need it.
>
> If I wanted to make the source public, I'll publish it in
> Github/Gitlab, otherwise I'd rather keep the code private.
>
> Regards,
>
> Esteban A. Maringolo
>
> On Sun, Sep 6, 2020 at 6:29 PM Davide Grandi <[hidden email]> wrote:
>> I mean that with SmalltalkEmulator, the Smalltalk interpreter
>> written in Smalltalk, one can execute an image looking at
>> classes, methods and maybe executing code at will.
>>
>> And the only practical form of protection I see in Squeak/Pharo
>> is to obfuscate code.
>>
>> Maybe I'm wrong.
>>
>>       Davide Grandi
>>
>> On 06/09/2020 22:27, Esteban Maringolo wrote:
>>> On Sun, Sep 6, 2020 at 12:52 PM Davide Grandi <[hidden email]> wrote:
>>>> Does "competition" has SmalltalkEmulator ?
>>>> A Smalltalk-written VM will defeat any simple obfuscation scheme.
>>> Sorry, but I don't understand what you  mean.
>>>
>>> Best regards,
>> --
>> Ing. Davide Grandi
>> email    : [hidden email]
>> mobile   : +39 339 7468 778
>> linkedin : http://linkedin.com/in/davidegrandi

--
Ing. Davide Grandi
email    : [hidden email]
mobile   : +39 339 7468 778
linkedin : http://linkedin.com/in/davidegrandi


Reply | Threaded
Open this post in threaded view
|

Re: Getting rid of .sources file for deployment

Esteban A. Maringolo
Hi Davide,

Thanks for the thorough response, but I think you're over
dimensioning, and to some extent missing, my initial purpose and
intention.

I don't want to protect from somebody attempting to reverse engineer
my application, that's impossible (more so given your references).
I simply want to disable the option to open the IDE, even with all
tool menus disabled.

In Java if I deliver a .jar or .war anybody could reverse engineer it,
but launching it won't open the development environment.

For comparison with other Smalltalks I've used:
* VisualWorks enables the distribution of a "headless" IMAGE (and
parcels) without sources, if you revert that image to be headful all
source code will be decompiled using meaningless variables.
* Dolphin has the concept of SessionManager that is the entry point to
the image startup, if you save your image with a Headless Session
manager, then no GUI loop will start, same thing if you deploy as a
COM component.
* VAST produces its own ICX file where you can choose what to include
in it, it's not simply saving the image but building a new one from
within the development image, it's one step further.
* VSE had the SLL (similar to DLLs), if you don't bind the IDE's SLLs
then there is no way to start the IDE (I never built a headless VSE
app though).

So what I'd like is an always Pharo headless image or Pharo headless
vm, instead of being controlled by a parameter in the VM.

Regards,

Esteban A. Maringolo

On Mon, Sep 7, 2020 at 12:04 PM Davide Grandi <[hidden email]> wrote:

>
> Ok, I'll give you a result, meanwhile fixing some imprecisions.
>
> The "class" is CogVmSimulator but it's use is very far from my knowlegde,
> I recalled having seen a picture of Pharo-in-Pharo (or Squeak-in-Squeak)
> running under this simulator.
> It lives near the Cog side (or the OpenVM side) of Squeak/Pharo
> (If I'm not wrong Squeak ran into an emulator, before walking on his
> legs-his VM).
>
> There are many of these simulator, for other Smalltalk :
> - Hobbes and others for Xerox (thanks to files of Mario Molczko and/or
>    Bitsavers
> - Dan Ingalls Apda Smalltalk + old Smalltalk -72 /-76
> and maybe others I don't yet know about
>
> The reason is quite simple : the object memory is written to disk
> and the spec of executing Smalltalk are known either from the books
> or by the source.
>
> The root is Xerox's SystemTracer, a class that wrote a running image
> to disk, optionally changing object format (see the Green Book).
>
> So :
> - if you can read the image
> - you can run into a simulator
> - or decode it without to much effort (5 emulators for Xerox V2 image,
> so far).
> (try to open an image with a text editor : intriguing !)
>
> I don't know how Cincom or Instantiations protect the released st code,
> but for Pharo and Squeak this is not a point : they are all open.
>
> So, as if you wanna "protect" names and methods of a running image ...
> ... you have to (IMHO) :
> - encrypt executable and image (and modify the VM)
> - or obfuscate your classes and methods renaming it to
>    C1, C2, ..., m1:p1:p2: and so on (keeping a map for debugging)
>
> Sorry to be imprecise about names and locations
> apart from suggest to see 4 emulators 4 running in a squeak image
> running ... in javascript in your browser (so total is 5) at :
> https://smalltalkzoo.thechm.org/HOPL-Squeak.html?earlyst80
> (thanks to Vanessa Freudemberg & Dan Ingalls).
>
> Sorry again & best regards,
>
>      Davide Grandi
>
> On 06/09/2020 23:51, Esteban Maringolo wrote:
> > If somebody gets to open the image and loads it with an Smalltalk
> > Emulator to execute it I'll ask him/her to start working together, and
> > even teach me how to do it.
> >
> > I don't want to shield the image from being accessed, just want to
> > make it harder than simply removing the '--headless' parameter to the
> > VM executable.
> > Of course removing sources is a plus (I do for a VW deployed image),
> > but even for this particular piece of software that I'm asking for, I
> > don't need it.
> >
> > If I wanted to make the source public, I'll publish it in
> > Github/Gitlab, otherwise I'd rather keep the code private.
> >
> > Regards,
> >
> > Esteban A. Maringolo
> >
> > On Sun, Sep 6, 2020 at 6:29 PM Davide Grandi <[hidden email]> wrote:
> >> I mean that with SmalltalkEmulator, the Smalltalk interpreter
> >> written in Smalltalk, one can execute an image looking at
> >> classes, methods and maybe executing code at will.
> >>
> >> And the only practical form of protection I see in Squeak/Pharo
> >> is to obfuscate code.
> >>
> >> Maybe I'm wrong.
> >>
> >>       Davide Grandi
> >>
> >> On 06/09/2020 22:27, Esteban Maringolo wrote:
> >>> On Sun, Sep 6, 2020 at 12:52 PM Davide Grandi <[hidden email]> wrote:
> >>>> Does "competition" has SmalltalkEmulator ?
> >>>> A Smalltalk-written VM will defeat any simple obfuscation scheme.
> >>> Sorry, but I don't understand what you  mean.
> >>>
> >>> Best regards,
> >> --
> >> Ing. Davide Grandi
> >> email    : [hidden email]
> >> mobile   : +39 339 7468 778
> >> linkedin : http://linkedin.com/in/davidegrandi
>
> --
> Ing. Davide Grandi
> email    : [hidden email]
> mobile   : +39 339 7468 778
> linkedin : http://linkedin.com/in/davidegrandi
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Getting rid of .sources file for deployment

Stéphane Ducasse
I would like also to be able to deploy a pharo app as a dll juts time and money.

S. 

On 7 Sep 2020, at 17:28, Esteban Maringolo <[hidden email]> wrote:

Hi Davide,

Thanks for the thorough response, but I think you're over
dimensioning, and to some extent missing, my initial purpose and
intention.

I don't want to protect from somebody attempting to reverse engineer
my application, that's impossible (more so given your references).
I simply want to disable the option to open the IDE, even with all
tool menus disabled.

In Java if I deliver a .jar or .war anybody could reverse engineer it,
but launching it won't open the development environment.

For comparison with other Smalltalks I've used:
* VisualWorks enables the distribution of a "headless" IMAGE (and
parcels) without sources, if you revert that image to be headful all
source code will be decompiled using meaningless variables.
* Dolphin has the concept of SessionManager that is the entry point to
the image startup, if you save your image with a Headless Session
manager, then no GUI loop will start, same thing if you deploy as a
COM component.
* VAST produces its own ICX file where you can choose what to include
in it, it's not simply saving the image but building a new one from
within the development image, it's one step further.
* VSE had the SLL (similar to DLLs), if you don't bind the IDE's SLLs
then there is no way to start the IDE (I never built a headless VSE
app though).

So what I'd like is an always Pharo headless image or Pharo headless
vm, instead of being controlled by a parameter in the VM.

Regards,

Esteban A. Maringolo

On Mon, Sep 7, 2020 at 12:04 PM Davide Grandi <[hidden email]> wrote:

Ok, I'll give you a result, meanwhile fixing some imprecisions.

The "class" is CogVmSimulator but it's use is very far from my knowlegde,
I recalled having seen a picture of Pharo-in-Pharo (or Squeak-in-Squeak)
running under this simulator.
It lives near the Cog side (or the OpenVM side) of Squeak/Pharo
(If I'm not wrong Squeak ran into an emulator, before walking on his
legs-his VM).

There are many of these simulator, for other Smalltalk :
- Hobbes and others for Xerox (thanks to files of Mario Molczko and/or
  Bitsavers
- Dan Ingalls Apda Smalltalk + old Smalltalk -72 /-76
and maybe others I don't yet know about

The reason is quite simple : the object memory is written to disk
and the spec of executing Smalltalk are known either from the books
or by the source.

The root is Xerox's SystemTracer, a class that wrote a running image
to disk, optionally changing object format (see the Green Book).

So :
- if you can read the image
- you can run into a simulator
- or decode it without to much effort (5 emulators for Xerox V2 image,
so far).
(try to open an image with a text editor : intriguing !)

I don't know how Cincom or Instantiations protect the released st code,
but for Pharo and Squeak this is not a point : they are all open.

So, as if you wanna "protect" names and methods of a running image ...
... you have to (IMHO) :
- encrypt executable and image (and modify the VM)
- or obfuscate your classes and methods renaming it to
  C1, C2, ..., m1:p1:p2: and so on (keeping a map for debugging)

Sorry to be imprecise about names and locations
apart from suggest to see 4 emulators 4 running in a squeak image
running ... in javascript in your browser (so total is 5) at :
https://smalltalkzoo.thechm.org/HOPL-Squeak.html?earlyst80
(thanks to Vanessa Freudemberg & Dan Ingalls).

Sorry again & best regards,

    Davide Grandi

On 06/09/2020 23:51, Esteban Maringolo wrote:
If somebody gets to open the image and loads it with an Smalltalk
Emulator to execute it I'll ask him/her to start working together, and
even teach me how to do it.

I don't want to shield the image from being accessed, just want to
make it harder than simply removing the '--headless' parameter to the
VM executable.
Of course removing sources is a plus (I do for a VW deployed image),
but even for this particular piece of software that I'm asking for, I
don't need it.

If I wanted to make the source public, I'll publish it in
Github/Gitlab, otherwise I'd rather keep the code private.

Regards,

Esteban A. Maringolo

On Sun, Sep 6, 2020 at 6:29 PM Davide Grandi <[hidden email]> wrote:
I mean that with SmalltalkEmulator, the Smalltalk interpreter
written in Smalltalk, one can execute an image looking at
classes, methods and maybe executing code at will.

And the only practical form of protection I see in Squeak/Pharo
is to obfuscate code.

Maybe I'm wrong.

     Davide Grandi

On 06/09/2020 22:27, Esteban Maringolo wrote:
On Sun, Sep 6, 2020 at 12:52 PM Davide Grandi <[hidden email]> wrote:
Does "competition" has SmalltalkEmulator ?
A Smalltalk-written VM will defeat any simple obfuscation scheme.
Sorry, but I don't understand what you  mean.

Best regards,
--
Ing. Davide Grandi
email    : [hidden email]
mobile   : +39 339 7468 778
linkedin : http://linkedin.com/in/davidegrandi

--
Ing. Davide Grandi
email    : [hidden email]
mobile   : +39 339 7468 778
linkedin : http://linkedin.com/in/davidegrandi




--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Aurore Dalle 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France

Reply | Threaded
Open this post in threaded view
|

Re: Getting rid of .sources file for deployment

Esteban A. Maringolo
Hi Stef,

I don't know what's the demand for such a feature.

In the Windows and Desktop era it might have been very important, but
I don't see that kind of integration these days, when most system
integrations happen at the HTTP level.

For my particular case I don't need a DLL.

Regards!

Esteban A. Maringolo

On Mon, Sep 7, 2020 at 1:55 PM Stéphane Ducasse
<[hidden email]> wrote:

>
> I would like also to be able to deploy a pharo app as a dll juts time and money.
>
> S.
>
> On 7 Sep 2020, at 17:28, Esteban Maringolo <[hidden email]> wrote:
>
> Hi Davide,
>
> Thanks for the thorough response, but I think you're over
> dimensioning, and to some extent missing, my initial purpose and
> intention.
>
> I don't want to protect from somebody attempting to reverse engineer
> my application, that's impossible (more so given your references).
> I simply want to disable the option to open the IDE, even with all
> tool menus disabled.
>
> In Java if I deliver a .jar or .war anybody could reverse engineer it,
> but launching it won't open the development environment.
>
> For comparison with other Smalltalks I've used:
> * VisualWorks enables the distribution of a "headless" IMAGE (and
> parcels) without sources, if you revert that image to be headful all
> source code will be decompiled using meaningless variables.
> * Dolphin has the concept of SessionManager that is the entry point to
> the image startup, if you save your image with a Headless Session
> manager, then no GUI loop will start, same thing if you deploy as a
> COM component.
> * VAST produces its own ICX file where you can choose what to include
> in it, it's not simply saving the image but building a new one from
> within the development image, it's one step further.
> * VSE had the SLL (similar to DLLs), if you don't bind the IDE's SLLs
> then there is no way to start the IDE (I never built a headless VSE
> app though).
>
> So what I'd like is an always Pharo headless image or Pharo headless
> vm, instead of being controlled by a parameter in the VM.
>
> Regards,
>
> Esteban A. Maringolo
>
> On Mon, Sep 7, 2020 at 12:04 PM Davide Grandi <[hidden email]> wrote:
>
>
> Ok, I'll give you a result, meanwhile fixing some imprecisions.
>
> The "class" is CogVmSimulator but it's use is very far from my knowlegde,
> I recalled having seen a picture of Pharo-in-Pharo (or Squeak-in-Squeak)
> running under this simulator.
> It lives near the Cog side (or the OpenVM side) of Squeak/Pharo
> (If I'm not wrong Squeak ran into an emulator, before walking on his
> legs-his VM).
>
> There are many of these simulator, for other Smalltalk :
> - Hobbes and others for Xerox (thanks to files of Mario Molczko and/or
>   Bitsavers
> - Dan Ingalls Apda Smalltalk + old Smalltalk -72 /-76
> and maybe others I don't yet know about
>
> The reason is quite simple : the object memory is written to disk
> and the spec of executing Smalltalk are known either from the books
> or by the source.
>
> The root is Xerox's SystemTracer, a class that wrote a running image
> to disk, optionally changing object format (see the Green Book).
>
> So :
> - if you can read the image
> - you can run into a simulator
> - or decode it without to much effort (5 emulators for Xerox V2 image,
> so far).
> (try to open an image with a text editor : intriguing !)
>
> I don't know how Cincom or Instantiations protect the released st code,
> but for Pharo and Squeak this is not a point : they are all open.
>
> So, as if you wanna "protect" names and methods of a running image ...
> ... you have to (IMHO) :
> - encrypt executable and image (and modify the VM)
> - or obfuscate your classes and methods renaming it to
>   C1, C2, ..., m1:p1:p2: and so on (keeping a map for debugging)
>
> Sorry to be imprecise about names and locations
> apart from suggest to see 4 emulators 4 running in a squeak image
> running ... in javascript in your browser (so total is 5) at :
> https://smalltalkzoo.thechm.org/HOPL-Squeak.html?earlyst80
> (thanks to Vanessa Freudemberg & Dan Ingalls).
>
> Sorry again & best regards,
>
>     Davide Grandi
>
> On 06/09/2020 23:51, Esteban Maringolo wrote:
>
> If somebody gets to open the image and loads it with an Smalltalk
> Emulator to execute it I'll ask him/her to start working together, and
> even teach me how to do it.
>
> I don't want to shield the image from being accessed, just want to
> make it harder than simply removing the '--headless' parameter to the
> VM executable.
> Of course removing sources is a plus (I do for a VW deployed image),
> but even for this particular piece of software that I'm asking for, I
> don't need it.
>
> If I wanted to make the source public, I'll publish it in
> Github/Gitlab, otherwise I'd rather keep the code private.
>
> Regards,
>
> Esteban A. Maringolo
>
> On Sun, Sep 6, 2020 at 6:29 PM Davide Grandi <[hidden email]> wrote:
>
> I mean that with SmalltalkEmulator, the Smalltalk interpreter
> written in Smalltalk, one can execute an image looking at
> classes, methods and maybe executing code at will.
>
> And the only practical form of protection I see in Squeak/Pharo
> is to obfuscate code.
>
> Maybe I'm wrong.
>
>      Davide Grandi
>
> On 06/09/2020 22:27, Esteban Maringolo wrote:
>
> On Sun, Sep 6, 2020 at 12:52 PM Davide Grandi <[hidden email]> wrote:
>
> Does "competition" has SmalltalkEmulator ?
> A Smalltalk-written VM will defeat any simple obfuscation scheme.
>
> Sorry, but I don't understand what you  mean.
>
> Best regards,
>
> --
> Ing. Davide Grandi
> email    : [hidden email]
> mobile   : +39 339 7468 778
> linkedin : http://linkedin.com/in/davidegrandi
>
>
> --
> Ing. Davide Grandi
> email    : [hidden email]
> mobile   : +39 339 7468 778
> linkedin : http://linkedin.com/in/davidegrandi
>
>
>
>
> --------------------------------------------
> Stéphane Ducasse
> http://stephane.ducasse.free.fr / http://www.pharo.org
> 03 59 35 87 52
> Assistant: Aurore Dalle
> FAX 03 59 57 78 50
> TEL 03 59 35 86 16
> S. Ducasse - Inria
> 40, avenue Halley,
> Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
> Villeneuve d'Ascq 59650
> France
>

12