Miller v. Facebook, Inc. et al
Filing
116
*** REFER TO DOCUMENT 126 FOR CORRECT EXHIBITS. *** Declaration of David Crane in Support of 114 MOTION for Summary Judgment RE CONTRIBUTORY COPYRIGHT INFRINGEMENT filed byFacebook, Inc.. (Attachments: # 1 Exhibit 1, # 2 Exhibit 2, # 3 Exhibit 3, # 4 Exhibit 4, # 5 Exhibit 5, # 6 Exhibit 6, # 7 Exhibit 7, # 8 Exhibit 8, # 9 Exhibit 9, # 10 Exhibit 10, # 11 Exhibit 11, # 12 Exhibit 12, # 13 Exhibit 13, # 14 Exhibit 14, # 15 Exhibit 15, # 16 Exhibit 16, # 17 Exhibit 17)(Related document(s) 114 ) (Avalos, Julio) (Filed on 3/3/2011) Modified on 3/4/2011 (feriab, COURT STAFF).
Miller v. Facebook, Inc. et al
Doc. 116 Att. 15
EXHIBIT 15
Dockets.Justia.com
ActionScript code protection - Wikipedia, the free encyclopedia Log in / create account
Article Discussion
Read Edit View hist
Search
ActionScript code protection
From Wikipedia, the free encyclopedia Navigation Main page Contents Featured content Current events Random article Donate to Wikipedia
This article has multiple issues. Please help improve it or discuss these issues on the talk page. It is written like an advertisement and needs to be rewritten from a neutral point of view. Tagged since January 2010. It may be confusing or unclear for some readers. Tagged
since January 2010.
Interaction Help About Wikipedia Community portal Recent changes Contact Wikipedia
ActionScript code protection. ActionScript is the main language for developing flash products. Code obfuscation is the process of transforming code into a form that is unintelligible to human readers while preserving the functionality and structure for computers. Flash developers use a variety of code encryption and obfuscation methods in order to but most obfuscation methods are kept secret because they are used in popular ActionScript obfuscators.
Contents [hide] 1 Overview 2 Examples 2.1 ActionScript 2.0 2.2 ActionScript 3.0 3 See also 4 External links 4.1 Adobe documentation and references
Toolbox What links here Related changes Upload file Special pages Permanent link Cite this page
Overview
[edit]
Print/export Create a book Download as PDF Printable version
Obfuscation is the process of modifying ActionScript code. Obfuscation engineering makes it impossible to use the original code for programming by mixing up functions, arguments and variables names; however the SWF file with obfuscated code stays readable for Flash players. ActionScript obfuscation algorithms are aimed to resist Flash decompilation and protect development's work from stealing. Nowadays, there are many different freeware and shareware tools that provides different obfuscation options. Some SWF Protectors implement lexical transformations such as identifiers renaming, control flow transformation, and data abstraction transformation - that make it harder for decompilers to generate correct and usable output. Others - insert certain traps based on decompilers imperfections. Some decompilers manage to open protected files and maybe extract some of its resources (sounds, images, etc.), but they cannot read the ActionScript code correctly. It often happens that when protected SWF file is added to decompilation software, the latter may crash or quit unexpectedly.
Examples
[edit]
The easiest way to understand the benefit of SWF obfuscation is to compare a non-protected SWF ActionScript code with protected one.
http://en.wikipedia.org/wiki/ActionScript_code_protection[3/3/2011 3:43:30 PM]
ActionScript code protection - Wikipedia, the free encyclopedia
ActionScript 2.0
Code before obfuscation:
stop(); if (this.holder1 == Number (this.holder1)) { loadMovieNum ("jopeClipLoader5.swf", this.holder1); } else { this.holder1.loadMovie("jopeClipLoader5.swf"); }
[edit]
Code after obfuscation:
do { if (false) { (() add ().holder1);// not popped if (true) { // unexpected jump do { stop(); } while (false); // unexpected jump if ( false) { Set("\x0B \x1A\x13\x16", true); } while (true); do { if (true) { // unexpected jump // unexpected jump if (false) { } while (true); do { // unexpected jump } while (true); // swfAction0xAD hexdata 0x52,0x17,0x99,0x02,0x00,0x39,0x00,0x9A,0x01... // Unknown action } (() add ( ).holder1)[(!"holder1".holder1() ).holder1]. loadMovie() ; // unexpected jump /* Error1016 */ // unexpected jump do { (this);// not popped if (true) { // unexpected jump } while (this); (this);// not popped // unexpected jump } } } if (false) { } while (true); do { // unexpected jump } while (true); // swfAction0xAD hexdata 0x52,0x17,0x99,0x02,0x00,0x39,0x00,0x9A,0x01,0x00,0x00,0x99... // Unknown action } "holder1".holder1.loadMovie(); // unexpected jump /* Error1016 */ // unexpected jump do { (this);// not popped if ( true) { // unexpected jump } while ( this); (this);// not popped // unexpected jump } } } Set("\x 0B\x1A\x 13\x16", true); } while (true); do { ( /* Error1010 */);// not popped if (true) {
http://en.wikipedia.org/wiki/ActionScript_code_protection[3/3/2011 3:43:30 PM]
ActionScript code protection - Wikipedia, the free encyclopedia
// unexpected jump // unexpected jump if (false) { } while (true); do { // unexpected jump } while (true); // swfAction0xAD hexdata 0x52,0x17,0x99,0x02,0x00,0x39,0x00,0x9A,0x01,0x00,0x00,0x99,0x02... // Unknown action }
ActionScript 3.0
Code before obfuscation:
private function getNeighbours(i:int, j:int):Array{ var a:Array = new Array(); for (var k = 0 ; k < 8; k++){ var ni = i + int (neighbour_map[k][0]); var nj = j + int (neighbour_map[k][1]) ; if (ni < 0 || ni >= xsize || nj < 0 || nj >= ysize) continue; a.push(Cell(cells[ni][nj])); } return a; }
[edit]
Code after obfuscation:
private function getNeighbours(_arg1:int, _arg2:int):Array{ var _local3:Array = -(((null - !NULL!) % ~(undefined) )) ; var _local4:*; var _local5:*; var _local6:*; _local3 = new Array (); _local4 = 0; for (;//unresolved jump , _arg2 < 8;_local4++) { _local5 = (_arg1 + int(!NULL!)); _local6 = (_arg2 + int(!NULL!)); if (true){ _arg1 = (((//unresolved nextvalue or nextname << !NULL!) + !NULL!) << undefined); _arg1 = (!(!NULL!) ^ ! NULL!); (!NULL! instanceof !NULL!); var _local1 = (((!NULL! as !NULL!) + !NULL!) == this); if (!(!NULL! == !NULL!)){ -((true << !NULL!)).push(Cell(cells[_local5][_local6] )); } } if (!true){ (_local6 < 0); (_local6 < 0); (_local5 < 0); } } return (_local3); }
See also
ActionScript ActionScript Foundry Adobe Flash Obfuscated code SWF
[edit]
External links
Adobe documentation and
http://en.wikipedia.org/wiki/ActionScript_code_protection[3/3/2011 3:43:30 PM]
[edit] [edit]
Wikibooks has a book on the
ActionScript code protection - Wikipedia, the free encyclopedia
references
ActionScript Technology Center ActionScript 2.0 Language Reference ActionScript 3.0 Language & Component Reference Flex 3 LiveDocs: Programming ActionScript 3.0 Categories: Adobe Flash | Scripting languages | Obfuscation
topic of ActionScript Programming Wikiversity has learning materials about ActionScript:Introduction
This page was last modified on 2 March 2011 at 23:17. Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. See Terms of Use for details. Wikipedia� is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization. Contact us Privacy policy About Wikipedia Disclaimers
http://en.wikipedia.org/wiki/ActionScript_code_protection[3/3/2011 3:43:30 PM]
Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.
Why Is My Information Online?