01-03-2011 02:52 PM
We upgraded from LV 8.6 to LV 2010. In doing so, it seems that all the strings in the compiled version of our code (the exe file) have disappeared. Previously we could search through the exe file with a hex editor and find our companies name, the presidents name, strings on front panels, etc... We were using such strings to determine that someone stole our code and compiled them into their own executables.
Is the LabVIEW 2010 compiler doing some sort of compression or encryption which is causing our strings to disappear?
Is it still possible for people to extract VI's from compiled executables?
01-03-2011 04:00 PM
01-04-2011 07:36 AM
A follow up to Jarrod's post. Since LabVIEW 2009, LabVIEW executables store the internal files using a zip format. There is no compression of the data. Using the option Jarrod mentioned to build using the old layout does not result in the use of LLBs. A zip format is always used.
01-04-2011 08:13 AM
Thanks for the clarification, George!
01-04-2011 08:19 AM
If someone are willing to go through the trouble of using your code. The change is that they also will be able to see through your way of creating watermarks also will be very big. It has been discussed before on this page. And it is a consensus. That "code" without diagram is kind of worthless.
01-04-2011 08:30 AM
@gmart wrote:
A follow up to Jarrod's post. Since LabVIEW 2009, LabVIEW executables store the internal files using a zip format. There is no compression of the data. Using the option Jarrod mentioned to build using the old layout does not result in the use of LLBs. A zip format is always used.
If I remember correct a exe file from Labview 2009 could be opened by winrar. But this loophole was removed in 2010. Or at least done much harder to figure out.
@Thommas here is a link to such a discussion regarding unwrapping Labview EXE files http://forums.ni.com/t5/LabVIEW/decompiling-2009-executable/td-p/991662/page/3
01-06-2011 08:16 AM
Thank you for linking to that other post. So, am I to understand that it is much more difficult to extract VI's from compiled executables in LabVIEW 2010?
The reason we're doing this is that we have two competitors selling our product or their own derivative based on subsets of our code (in China where it's very hard to take legal action).
This watermark plus a mathematical check for the watermark in order for the code to work was a method I devised to try to protect our code. Now I'm a little unclear what to do, since, if they extract our vis and call them from their program which they compile to exe the compiler will zip the vis and obscure the watermark anyway. So my method is not usefull.
It may not be a problem if they can't extract vis from our exe, but I'm unclear as to whether that's the case or not.
01-06-2011 04:24 PM
I just checked. It is possible to extract VIs from .EXEs in LV 10.
01-07-2011 12:18 AM
You should be using the new licensing option to protect your code.
01-07-2011 04:59 AM
If you want a custom protection, here my first-coffee idea:
Place a control on the SubVIs you want to protect. This control should not be wired to the ConPane. When the SubVI executes, it checks the value of this control if the input is valid (e.g. Watermark + Checksum).
Your Main-VI is opening a ref to the SubVI via VI server and initializing the control with watermark+checksum before calling it the normal way.
To make it even more difficult for them, don't let your SubVI just abort but behave stupid, like throwing a file-error requesting a call to support, always returning a temp-reading 2° to high or the like. Make it a bit of a hassel for them to reuse the stolen code.
Second idea: Store a SubVI as an encrypted binary (default value of a string control). During runtime, decrypt it and make it a VI which is called dynamically. I'm not sure if you can do this in memory only (preferable in secure mem) or you need to save it in a temp folder (which would make it much to open for them).
Felix