2

I am trying to find the differences between Version A and Version B of an executable binary to determine whether Version C (a localisation) is based on Version A or Version B. The problem is the license. In the restrictions section, it contains this text:

The Software contains copyrighted material, trade secrets and other proprietary material. You may not decompile, reverse engineer, disassemble or otherwise reduce the Software to a human-perceivable form.

Looking around the internet, I have found several instances of similarly worded licenses, but nowhere have I found what this phrase means.

Does printing the executable to the screen (using something like cat) count as producing a "human-perceivable form"? What about creating a hex-dump of the executable? Going a step further and turning the hex-dump into assembly is explicitly stated to be considered as such, but Real Programmers use hexadecimal anyway; I know of several humans who can perceive code in the form of a hex-dump. Going back to simple printing, in a character set without unprintable characters it wouldn't be very difficult to learn the mappings between two-digit hex numbers and characters; one could even use a font where each glyph consists of two hexadecimal numbers.

Where is the line drawn? What would be legal, and what would not? Is it different if the form is never directly perceived by humans?

3

The issue is that "decompile, reverse engineer, disassemble" is probably too narrow, so they need a broad expression that means "and things like that", but "things like that" would be too vague. I don't know what other alternatives are out there, but this might not explicitly prohibit an instruction-trace on the executing code, and they may want to (although I am not sure what the exact scope of "reverse engineer" is). In saying "reduce the Software to a human-perceivable form", the choice of the word "reduce" is no doubt significant. A reasonable man would conclude that an effort to simplify the raw binary code into something more graspable (such as opcodes) is a reduction to perceivable form. However, a screen dump via cat or a hex print doesn't affect the informational content of the file, it just changes the mode of representation: it makes it perceivable, but does not reduce the software in any way (does not reduce the entropy of the bit pattern). If they had intended to say "render it in a human perceivable form", they could have, so we should focus on the impact of "reduce". I don't believe the courts have given a ruling on the legal meaning of "reduce".

  • 1
    Technically, disassembling it doesn't reduce the entropy of the bit-pattern, as it is a one-to-one correspondence, except perhaps when op-codes are used that the disassembler doesn't know about. – wizzwizz4 Mar 19 '17 at 19:24
  • I'm also including the "human comprehension" aspect of reading a bit pattern. I can't read and make sense of bit patterns, but I can make sense of opcodes. Bit patterns are meaningless fuzz, opcodes tell me something. Though some programmers are happy looking at bit patterns. – user6726 Mar 19 '17 at 19:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.