G400 Code Protection

If I am understanding everything correctly, the G400 (and G120) stores the application code in the external flash.

Is there any method of protecting that code so the code can not be “reverse engineered” (I use that term loosely)


Nope, there isn’t.

That was the short answer. This is the long one. Basically, there are levels of effort when it comes to reverse engineering something from the device.

Firstly, there is the Casual attack, where they look for exploits communication or loading of the program so that it gives up it’s secrets. This is not really possible on these platforms. This means that the casual end user with some experience won’t be able to get the code.

Then there is the Technical attack, where they go so far as to desolder ics and populate them on different board in order to fake or intercept the communication between the SPI bases flash and the main µC. This would allow them to capture the program, however they may not have enough skill or patience to actually decompile and modify it. If they just wanted to create clones, then this would be enough. These attacks would work on all but the G30 + 80 chips, because their Flash is on die and so it’s not possible to just intercept the data. For those chips, you might be able to load your own program onto the chip, to read out the flash, however there is a feature on some of these chips that causes the µC to prevent reading of data from the chip once it’s been written.

Lastly there is the Professional Attack. In this case they are decaping the ICs and X-Raying them under a microscope to determine which gates are On vs Off. This will defeat anyone’s protection because the versions of the ICs that these µCs use, does not have protection from x-ray nanotomography, reverse engineering techniques.

In practical terms, the device will keep your code safe enough from the casual attacks, so that you do not have to worry about IP protection even at the professional level.

I’d say, not to worry about it for now, the compiled code is reasonably secure. It might be cheaper to reproduce the code to extract it.

Thanks for the reply!

Is the application stored on the flash, not stored as IL? I was thinking it could be as easy as reading the flash with something like a MiniProg and then disassembling the IL back to C#.

It seems you are indicating it might be stored as machine code, or is there something else in place?

Thanks again!

The application is stored on the flash as MSIL, not machine code.