PDA

View Full Version : Reverse engineering applications


mixture
16th Nov 2011, 20:10
Rumour has is that Adobe have just about finally bowed to Apple's decision to push HTML5 as the way forward on their iPhone and iPad, because they've supposedly been cutting numbers on their Flash development teams.

So possibly we may be seeing the start of the demise of Flash, Shockwave and Air whilst Adobe refocus on their core specialisms and perhaps look to new innovative technologies that don't have a reliance on proprietary browser plugins.

Unlike PDF, Flash, Shockwave and Air are proprietary Adobe technologies, not open standards (PDF is an ISO standard). Therefore any third party attempts at making a flash player would be based on rather morally (and legally) questionable reverse-engineering development methodologies.

le Pingouin
16th Nov 2011, 22:59
Therefore any third party attempts at making a flash player would be based on rather morally (and legally) questionable reverse-engineering development methodologies.Nice FUD. Cleanroom reverse-engineering is neither illegal nor immoral.

le Pingouin
17th Nov 2011, 02:10
Who is talking about reverse engineering software? We're talking about taking a file format & working out how to read & display it.

mixture
17th Nov 2011, 07:00
Cleanroom reverse-engineering is neither illegal nor immoral.

Says someone who has obviously never spent a few million on employing numerous people (plus office space etc.) to develop and maintain the intellectual property required if you want to be successful in the software industry.

If you are a software only company such as Adobe, then the intellectual property in your software is your only real asset. Hence it is justifiable to be more than slightly annoyed if some spotty oik comes along and reverse-engineers it when the license you grant with your software does not permit it.

We're talking about taking a file format & working out how to read & display it.

Describe it how you like. That's still reverse-engineering.


From the Adobe Flash Player license agreement (my bold) :

4.5 No Modification or Reverse Engineering. You shall not modify, adapt, translate, or create derivative works based upon the Software. You shall not reverse engineer, decompile, disassemble, or otherwise attempt to discover the source code of the Software. If you are located in the European Union, please refer to the additional terms at the end of this agreement under the header “European Union Provisions,” in Section 16.

16. European Union Provisions.
Nothing included in this agreement (including Section 4.5) shall limit any non-waivable right to decompile the Software that you may enjoy under mandatory law. For example, if you are located in the European Union (EU), you may have the right upon certain conditions specified in the applicable law to decompile the Software if it is necessary to do so in order to achieve interoperability of the Software with another software program, and you have first asked Adobe in writing to provide the information necessary to achieve such interoperability and Adobe has not made such information available. In addition, such decompilation may only be done by you or someone else entitled to use a copy of the Software on your behalf. Adobe has the right to impose reasonable conditions before providing such information. Any information supplied by Adobe or obtained by you, as permitted hereunder, may only be used by you for the purpose described herein and may not be disclosed to any third party or used to create any software which is substantially similar to the expression of the Software or used for any other act which infringes Adobe or its licensors’ copyright.


As you can see, even in the EU, which takes a more generous stance, you may only reverse-engineer in order to achieve interoperability with the Adobe software (e.g. to enable the Adobe software to work with your Operating System). It still does not permit you to reverse-engineer to create a competing product.

green granite
17th Nov 2011, 07:19
Yet there are plenty of programs to convert .fly progs to other formats.

le Pingouin
17th Nov 2011, 08:47
Mixture, the third party players aren't based on "the Software" so there is nothing in the quoted text that is relevant. The software hasn't been decompiled or examined in any way. The file format & not the software has been reverse engineered.

If it was the way you think then MS would have gone after anyone producing software that could read a MS Word document.

mixture
17th Nov 2011, 11:17
the third party players aren't based on "the Software" so there is nothing in the quoted text that is relevant. The software hasn't been decompiled or examined in any way. The file format & not the software has been reverse engineered.

Oh what it is to live in blissful ignorance.

I didn't think I would have to point out the obvious, but here goes :

How one earth do you think your third-party Flash player is able to read and correctly interpret the compiled binary Flash format if the software hasn't been decompiled or examined in any way ?

Simply looking at a compiled binary file will tell you nothing about how to interpret it and display its contents as intended.

Let's say I gave you the following binary file. Pray do tell how you plan to reverse engineer a program to interpret it simply based on the contents of that file that my program created :

00000000 13 95 b5 45 68 45 ef 31 18 14 a8 9d b9 6f 1a 32 |...EhE.1.....o.2|
00000010 36 6c 5e 09 90 12 65 7d 4a 7c 0f ab 82 2f e6 5d |6l^...e}J|.../.]|
00000020 03 08 b6 13 52 92 2c 16 00 6d d3 eb dc 55 6b 6a |....R.,..m...Ukj|
00000030 bd 3a 0e a9 5d 3d c6 e5 1f 31 dc 01 10 8f 2c 50 |.:..]=...1....,P|
00000040 64 84 be 07 84 b4 e6 c0 3a f9 5a 75 33 56 ba 87 |d.......:.Zu3V..|
00000050 55 aa 24 55 70 61 51 c3 bb 4b 5a ac a1 b1 8a 48 |U.$UpaQ..KZ....H|
00000060 a7 e4 e2 96 bf 9b 00 9f 20 af ad 35 99 45 86 a6 |........ ..5.E..|
00000070 0f 38 6e 8f f0 71 5c 0d 78 6b 17 8e ac a6 6c 9d |.8n..q\.xk....l.|
00000080 eb cc 06 c7 6e 83 32 a5 14 05 04 ea 6f a9 85 94 |....n.2.....o...|
00000090 94 29 58 39 46 8c 99 53 81 c8 c4 8e 97 d9 44 79 |.)X9F..S......Dy|
000000a0 2c cd a3 4a 9f b1 af c6 d3 64 36 66 d7 8f 67 99 |,..J.....d6f..g.|
000000b0 7d 27 8a cd 39 44 36 39 cb 80 be 01 96 75 42 59 |}'..9D69.....uBY|
000000c0 cc 76 db 59 a3 6a c1 e8 ca 71 55 83 98 b6 4a 68 |.v.Y.j...qU...Jh|
000000d0 0c 98 9a 0a 28 88 75 69 9b f4 35 8e 56 06 c7 60 |....(.ui..5.V..`|
000000e0 a5 1b 05 05 73 93 c0 1c f9 84 ad 6b c5 ae e5 a5 |....s......k....|
000000f0 c8 10 25 2d 80 15 44 94 1b 16 67 11 f3 a4 80 32 |..%-..D...g....2|
00000100 f6 69 71 4d 7f 39 e3 7c 33 32 51 ca 9c e2 9c d4 |.iqM.9.|32Q.....|
00000110 ce 55 64 ed b0 b8 0b f7 bd 8a 37 b3 10 b0 2d 5d |.Ud.......7...-]|
00000120 47 1b f9 83 82 39 9b 65 8a 60 60 76 77 a6 d2 b1 |G....9.e.``vw...|
00000130 6c 49 ff eb 02 4d aa f6 1c 36 2c 25 8c c5 15 6d |lI...M...6,%...m|
00000140 d5 f0 6b 2f 3f 5b 2d b7 97 b3 2f df 87 71 9b 42 |..k/?[-.../..q.B|
00000150 c6 f1 13 cb d8 e8 51 f2 b4 e3 4e bb 00 ef 27 cb |......Q...N...'.|
00000160 54 53 ea bc 01 ed 52 74 af da d2 d2 74 f7 ef 7b |TS....Rt....t..{|
00000170 5f be b0 c7 9e ec 2c 9f 6e 4d 76 b5 19 64 46 df |_.....,.nMv..dF.|
00000180 f0 55 52 d8 d3 ec b6 1b f7 79 d7 74 2e 66 44 12 |.UR......y.t.fD.|
00000190 35 af cd de f3 31 a4 a2 f1 d6 6f 4e cf f4 32 0a |5....1....oN..2.|
000001a0 c8 e5 e4 2a 3c a9 5a 31 1f d6 fb d2 b2 14 02 79 |...*<.Z1.......y|
000001b0 c4 d7 88 a5 2a e9 15 14 ab ab db cc b4 0f ad c9 |....*...........|
000001c0 26 2e 93 7b 8e c9 c6 4e bf 5c 22 74 a6 6a bd 7b |&..{...N.\"t.j.{|
000001d0 f8 c7 62 5d 56 82 5b d2 bb fa 43 4c b5 6e 5f 56 |..b]V.[...CL.n_V|
000001e0 6b 71 a5 43 6f db a8 69 d7 0a ad f2 9c 21 f2 ca |kq.Co..i.....!..|
000001f0 5b e9 4a 0b 99 ce 15 32 da c4 44 97 66 be 4d 6d |[.J....2..D.f.Mm|
00000200



It's simply not feasible unless I tell you more about the program that created it.

le Pingouin
17th Nov 2011, 12:57
Ignorant or not, Adobe don't appear to object & you don't have any evidence to the contrary. Given enough examples with small known changes much could be deduced. Classic FUD.

Here you go:

"Adobe has removed the entire license agreement from the SWF and FLV/F4V specifications. The only remaining restrictions are on copying and distributing the specifications themselves and on the use of Adobe trademarks, including the Flash trademark. The copyright and trademark restrictions are on the copyright page of the specification. Developers are now free to implement what is documented in the specifications without restrictions from Adobe"
Open Screen Project FAQ | Open Screen Project (http://www.openscreenproject.org/about/faq.html)

mixture
17th Nov 2011, 15:55
you don't have any evidence to the contrary

Erm, I quoted you from the Adobe EULA, what else do you want ? :ugh:

You can read it yourself on their website here (http://www.adobe.com/products/eulas/), about half way down "Adobe Flash Player".

Anyhow, let's call it quits, I can't be bothered to argue this one anymore.

le Pingouin
18th Nov 2011, 01:42
Erm, I quoted you from the Adobe EULA, what else do you want ? :ugh:Quoting something saying "thou shalt not" is not proof that anyone has done it. :ugh::ugh:

The link I posted is from Adobe. They run the Open Screen Project. They explicitly state:

"To support the mission of the Open Screen Project and as part of the company's ongoing commitment to enable web innovation, Adobe will continue to open access to Adobe Flash technology. This work will include:

Removing restrictions on use of the SWF and FLV/F4V specifications: Effective May 1, 2008, Adobe removed the entire licensing agreement from the SWF and FLV/F4V specifications. These licensing restrictions had meant that no one could build software that would "play" SWF content."

Developers are free to write Flash players based on the published specs.

Yes, lets call it quits.

Shunter
20th Nov 2011, 20:30
Just in regard to reverse engineering, most EULAs would never stand up in court. There are EU laws specifically allowing reverse engineering which (by default) nullify any EULA which attempts to so prohibit such behaviour.

In the states you can make anything illegal if you have deep enough pockets. The law in the EU is a little more sensible. Not a lot, but a little.

mixture
22nd Nov 2011, 07:19
There are EU laws specifically allowing reverse engineering which (by default) nullify any EULA which attempts to so prohibit such behaviour.

Nonsense.

We've already been here a few threads up, and I'm not going to be going into detail again on it.

The EU laws are there to cover reverse engineering for interop. They are NOT there to permit reverse engineering to enable people to create competing products on the cheap. Not even the Brussels Sprouts are that stupid !

The concept and extent of what is and is not "interoperability" is well known and understood within the IT industry.

In laymans terms, "interoperability" is when you want to make a proprietary product work with another product (proprietary or not). For example in this case, making Flash player work with, for example, Firefox browser, or some random Operating System running on a smart phone.

Infact, I'll quote you the legislation .... (my bold)


Article 6, DIRECTIVE 2009/24/EC on the legal protection of computer programs

1. The authorisation of the right holder shall not be required where reproduction of the code and translation of its form within the meaning of points (a) and (b) of Article 4(1) are indispensable to obtain the information necessary to achieve the interoperability of an independently created computer program with other programs, provided that the following conditions are met:
(a) those acts are performed by the licensee or by another person having a right to use a copy of a program, or on their behalf by a person authorised to do so;
(b) the information necessary to achieve interoperability has not previously been readily available to the persons referred to in point (a); and
(c) those acts are confined to the parts of the original program which are necessary in order to achieve interoperability.

2. The provisions of paragraph 1 shall not permit the information obtained through its application:
(a) to be used for goals other than to achieve the interoperability of the independently created computer program;
(b) to be given to others, except when necessary for the interoperability of the independently created computer program; or
(c) to be used for the development, production or marketing of a computer program substantially similar in its expression, or for any other act which infringes copyright.

And for avoidance of doubt, the EU definition of "interoperability" :


The function of a computer program is to communicate and work together with other components of a computer system and with users and, for this purpose, a logical and, where appropriate, physical interconnection and interaction is required to permit all elements of software and hardware to work with other software and hardware and with users in all the ways in which they are intended to function. The parts of the program which provide for such interconnection and interaction between elements of software and hardware are generally known as ‘interfaces’. This functional interconnection and interaction is generally known as ‘interoperability’; such interoperability can be defined as the ability to exchange information and mutually to use the information which has been exchanged.