====== Flash And Actionscript ====== ActionScript is **executed** by the **ActionScript Virtual Machine (AVM)**, which is **part of Flash Player and AIR**. ActionScript code is typically compiled into bytecode format (a sort of programming language that’s written and understood by computers) **by a compiler**, such as the one **built into Adobe® Flash® CS4 Professional or Adobe® Flex™ Builder™**, or that is available in **the Adobe® Flex™ SDK**. The bytecode is embedded in SWF files, which are **executed by Flash Player and AIR**. ===== Understand Flash and Flex ===== What is Adobe Flex? Like Flash, **Flex creates SWF files that are rendered by Flash Player**. However, **Flex is primarily a developer's tool** and the way you develop Flex applications is entirely different than the way you develop Flash RIAs. All Flex development is **based upon a framework that provides you with reusable and extendable UI components**, data retrieval services, **event handling functionality and much more**. You can create RIAs in a familiar code-centric environment, but you **still reap the benefits of Flash applications, which include**: * The ability to design and implement human-centered user interfaces without worrying about browser limitations. * A runtime environment with almost 100% deployment to all Internet users. * The powerful ActionScript programming language. * The ability to integrate rich media like streaming video and sound. In comparison, the Adobe **Flash** Authoring environment revolves **around a timeline metaphor and visual development tools**. Because of this emphasis, and despite the evolution of Flash's programming language, ActionScript, into a fully object-oriented ECMA-4-compliant language, **Flash has traditionally been seen as a designer's tool for creating animations**. Over the years, many programmers have learned the benefits of using Flash to create powerful RIAs, but others have found the IDE to be difficult to understand. You should note that **Flash and Flex can work together**. As a matter of fact,** Flex can work directly with other products in the Adobe Create Suite**, as well. **Designers and programmers can easily "create" in their own environments** and then **integrate their work to establish an entirely new breed of RIAs**. Summary: **Flash** is better suited for **making movies and animations**. **Flex** is better for **application development**. ===== Flash to run on Android, IOS, HTML5 ===== Some technology: * Haxe + OpenFL: https://github.com/openfl/openfl-js * MonoGame + Xamarin (C#), or other 2D engine in C# for mobile? * LibGDX + robovm (Java) * or AIR? It's slowly (seems). Recomended to use Haxe + OpenFL: * Haxe: http://haxe.org/ -> Haxe is a language based on ActionScript. With Haxe, you can easily build cross-platform tools targeting all the mainstream platforms natively.(Refer [[http://haxe.org/documentation/introduction/compiler-targets.html|haxe target]] * OpenFL: http://www.openfl.org/ -> uses the familiar Flash API, but goes everywhere that Flash Player cannot. ===== Compile and run ===== Before an ActionScript program can be executed by a Flash runtime, it must be converted from human-readable ActionScript 3.0 code to a condensed, binary format that Flash runtimes understand, known as ActionScript bytecode,or ABC. The process of converting an ActionScript program to bytecode is known as compiling the program. ==== Compile with Flashdevelop ==== refer: http://www.flashdevelop.org/ === Install === - Step1: Install **java 32bits** before install FlashDevelop - Step2: set environment variables **JAVA_HOME** and *PATH* to path of **java 32bits** - Step3: Select some option compilers below and install:{{:my:flash-develop-compilers.jpg|}} - Step4: We can install missing compiler by open flashdevelop and go to **tools -> Install Software** === Create new flash project === === Create new flex project === {{:my:flash-develop-newproject.jpg|}} {{:my:flash-develop-newproject-sourcestructure.jpg|}} === Import new flex project exist === - Step1: Copy all sources of exist project to directory **D:\projects\flash\simplechat\** - Step2: Create new project Flex4 Project with option **unchecked Create Directory for Project**{{:my:flash-develop-existproj.jpg|}} - Step3: Right Click SimpleChat.xml to set it as **Document Class** - Step4: Right Click libs\SFS2X_API_AS3.swc to set it as **Add To Library** {{:my:flash-develop-existproj-lib-documentclass.jpg|}} - Step5: Build the project, output: Build halted with errors (fcsh). Fix: * **End Java Process** in Task Manager and rebuilt the project * Or Fix all warnings and rebuilt the project * Or Off all warnings in Compiler Options of **.as3proj** file === FlashDevelop workflow === refer: http://www.flashdevelop.org/wikidocs/index.php?title=AS3#Workflows **Compile using Flash** * Use Flash to create graphics and to embed resources such as sounds and fonts * Use FlashDevelop to write ActionScript classes * Use Flash to associate your resources with a document class or with linkage classes * Use Flash to compile your project * See: Flash workflow tutorial **Compile using the Flex SDK and create assets using Flash** * Use Flash to create graphics and to embed resources such as sounds and fonts * Use Flash to publish an SWC library file * Add the SWC as a library in your FlashDevelop project * Use FlashDevelop to compile your project using the Flex SDK * See: Flex SDK and Flash workflow tutorial **Compile using the Flex SDK** * Add resources such as graphics, sounds and fonts to your FlashDevelop project * Use FlashDevelop to write ActionScript classes * Use embed tags in your ActionScript to include assets * Use FlashDevelop to compile your project using the Flex SDK === Debug in FlashDevelop === refer: http://www.flashdevelop.org/wikidocs/index.php?title=AS3:Debugging (To run Debug, you must config JAVA_HOME to java 32 bits) - Step1: Go to **tools → Install Software**, Install FlashPlayer Debug tools for FlashDevelop: {{:my:flashdevelopdebug.png|}} - Step2: Configure build project with debug mode and run it === Change Tab settings in Editor === Change using Tab to 3 spaces in FlashDevelop: - Step1: Go to **Tools->Program Settings** - Step2: in section **Main->FlashDevelop** change **Indenting** configs: * Indenting size: 3 * Use Tab Characters: False * Width of Tab: 3 === Custom Compiler Options === Change output swf screen size in .as3proj: ==== Compile with Adobe flash(.fla file) ==== Using Adobe Flash to open .fla file and compile it change option in case ran out of memory when compile: **C:\Users\anhvc\AppData\Local\Adobe\Flash CS5.5\en_US\Configuration\ActionScript 3.0\jvm.ini** from: -Xmx128m to -Xmx512m ==== Compile with flash builder ==== ==== Compile with flex SDK ==== refer: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf614b9-7ff3.html Install and config to run FlexSDK: * Step1: Check exist java 32 bits in windows: java.exe -version * Step2: Install JDK or JRE windows 32bits(not 64bits) to **d:\tools\jdk1.6.0_11_32bits** If in windows not exists java 32bits * Step3: Configure Flex SDK D:\tools\flex_sdk_4.5\bin\jvm.config to use jre 32bits: java.home=d:\tools\jdk1.6.0_11_32bits If we can't compile because error below: Error: could not find a JVM. We set follow the step4 * Step4: Or change the windows environment JAVA_HOME to d:\tools\jdk1.6.0_11_32bits and edit D:\tools\flex_sdk_4.5\bin\jvm.config: java.home= === Compile Disabling framework RSLs === refer:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7add.html d:\tools\flex_sdk_4.5\bin\mxmlc.exe -static-link-runtime-shared-libraries=true -o output.swf -source-path="D:\simplegame\src\" "D:\simplegame\src\games.as" === Using mxlmc compile base on mxml config === * Simple compile d:\tools\flex_sdk_4.6\bin\mxmlc xxx.mxml * Compiling an application that uses SWC files mxmlc -library-path+=/xx/lib1.swc;/xx/lib2.swc xxx.mxml * Compiling an application that uses RSLs mxmlc -runtime-shared-library-path=/xx/lib.swc,/yy/bin/library.swf xx.mxml === Using compc compile with xml config === d:\tools\flex_sdk_4.5\bin\compc -load-config=build-swc.xml === Using compc to compile swc library === * Compile source in **d:/tools/flashapi/RoadComponent/r36/src** to swc library **RoadComponent.swc** d:\tools\flex_sdk_4.5\bin\compc -include-sources "d:/tools/flashapi/RoadComponent/r36/src" -output RoadComponent.swc * Compile source in **src** to swc libray **2.swc**, this source use libraries in **libs** d:\tools\flex_sdk_4.6\bin\compc -include-sources "src" -compiler.library-path "libs" -output 2.swc === convert swf to swc file === http://en.wikipedia.org/wiki/Adobe_SWC_file http://haxe.org/manual/swc haxe DDT_Loading -swf loading.swc -swf-lib loading.swf -swf-version 10 haxe --macro include('*') -swf 2.swc -swf-lib 2.swf -swf-version 10 ==== Build with ant tool ==== D:\tools\apache-ant-1.8.4\bin\ant.bat -buildfile build.xml main ==== Developing AIR applications for mobile devices ==== The Adobe® AIR® runtime **enables developers to package the same code into native apps** for Windows and Mac OS desktops as well as **iPhone, iPad, Kindle Fire, Nook Tablet, and other Android™ devices**, reaching the mobile app stores for over 500 million devices. **AIR applications** on mobile devices are **deployed as native applications**. They use the application format of the device, not the AIR file format. Currently AIR **supports Android APK packages and iOS IPA packages**. Once you have created the release version of your application package, you can distribute your app through the standard platform mechanism. For Android, this typically means the Android Market; for iOS, the Apple App Store. You can use the AIR SDK and Flash Professional, Flash Builder, or another ActionScript development tool to build AIR apps for mobile devices. HTML-based mobile AIR apps are not currently supported. ==== Run swf file ==== ActionScript programs can be executed by three different software applications (all produced by Adobe): Flash Player application, Adobe AIR, Flash Lite, or browser with Flash Plugin ===== Config allow flash run on local and connect any domains ===== refer: * https://forums.adobe.com/message/4316085 * https://helpx.adobe.com/es/flash-player/kb/enabling-flash-player-chrome.html ==== Config for flash player application on windows ==== Go to **Control Pannel -> Flash Player** and action steps follow the images below: {{:my:flash-setting-advanced.jpg|}} {{:my:flash-add-allow.jpg|}} Add Folder: **D:\tools\SmartFoxServerPRO_1.6.6\Examples\** => we can run any swf files from directory **D:\tools\SmartFoxServerPRO_1.6.6\Examples\** with flash player application on windows ==== Config for flash player plugin of browser ==== - Step1: Go to site http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager.html - Step2: Click link **Global Security Settings panel** - Step3: Click **Edit Location** too add folder which you want to run the all swf files {{:my:flash-browser-setting.jpg|}} ==== config allow domain with actionscript ==== refer: https://www.adobe.com/devnet-docs/acrobatetk/tools/AppSec/xdomain.html import flash.system.Security; Security.loadPolicyFile("http://avatar.me.zdn.vn/crossdomain.xml"); Security.allowDomain("http://myplay.apps.zing.vn"); ===== Conditional Compilation ===== refer: http://www.flashdevelop.org/wikidocs/index.php?title=AS3_Conditional_Compilation ===== Run Embeded swf in browser ===== refer: https://github.com/swfobject/swfobject ==== Run Embeded swf with simple HTML ===== SWFObject 2 static publishing example page

Alternative content

Get Adobe Flash player

==== Run Embeded swf with swfobject ==== simple run: SWFObject 2 dynamic publishing example page

Alternative content

Get Adobe Flash player

run with flashvars: Game Bài

Tiến Lên

Get Adobe Flash player

==== Run SWF Object with PHP code ==== refer file **mmorpg.php** of hsr Game Bài

Tiến Lên

Get Adobe Flash player

===== Debug in flash player ===== You must build the flash with debug mode(The size of swf file in debug mode was bigger the size of in swf file in release mode) ==== Config turn on debug for flash player run on Windows ==== Note: You must install **Flash Player Debug** Below are steps to config debug for flash player: - Step1: Create mm.cfg file in **%USERPROFILE%\** with content below: PolicyFileLog=1 PolicyFileLogAppend=0 ErrorReportingEnable=1 TraceOutputFileEnable=1 SuppressDebuggerExceptionDialogs=1 * Step2: Check log file which contain debug informations: %USERPROFILE%\AppData\Roaming\Macromedia\Flash Player\Logs\flashlog.txt ==== Config turn on debug for flash player run on Chrome and Opera ==== (Debug on Opera more better on Chrome) Install Flash Player Debug in chrome and Opera: * Step1: install **flash player debug** plugin on chrome * Step2: open new tab on google chrome and run: about:plugins or chrome://plugins/ Then enable the plugin flash debugger plugin and disable the old plugin, You must view the plugins in **detail mode** to see the plugin description in debug mode: Description: Shockwave Flash 20.0 r0 Debug Config debug in Chrome: * Step1: Create mm.cfg file in directory %USERPROFILE%/AppData/Local/Google/Chrome/User Data/Default/Pepper Data/Shockwave Flash/System * Step2: Restart the chrome and run swf file with chrome, then check log file in %USERPROFILE%/AppData/Local/Google/Chrome/User Data/Default/Pepper Data/Shockwave Flash/WritableRoot/Logs/flashlog.txt Config debug in Opera: * Step1: Create mm.cfg file in directory %USERPROFILE%/AppData/Roaming/Opera Software/Opera Stable/Pepper Data/Shockwave Flash/System * Step2: Restart the opera and run swf file with opera, then check log file in %USERPROFILE%/AppData/Roaming/Opera Software/Opera Stable/Pepper Data/Shockwave Flash/WritableRoot/Logs/flashlog.txt ==== Debug code in ActionScript ==== * command to write log trace(string) * trace all old function trace(a) =>> a is undefined variable * abc code of trace command findpropstrict QName(PackageNamespace(""), "trace") pushstring "debug string" callpropvoid QName(PackageNamespace(""), "trace"), 1 ===== Security flash ===== refer: * http://hub.tutsplus.com/tutorials/protect-your-flash-files-from-decompilers-by-using-encryption--active-3115 * https://code.google.com/p/as3crypto/ * http://gaming.adobe.com/technologies/flascc/ * https://www.adobe.com/products/gaming/tools.html ===== Update abc code ===== ==== Update abc code with Rabc tool ==== Basic update: - Step1: Get actionscript code with abcexport: d:\tools\Rabc\abcexport PackageOut.swf - Step2: Edit the PackageOut-0.abc and dasm the changes: rd /S /Q PackageOut-0 d:\tools\Rabc\rabcdasm PackageOut-0.abc Some examples: d:\tools\Rabc\rabcasm CommModule-0\CommModule-0.main.asasm d:\tools\Rabc\abcreplace CommModule.swf 0 CommModule-0\CommModule-0.main.abc d:\tools\Rabc\abcexport DDT_Loading.swf d:\tools\Rabc\rabcdasm DDT_Loading-0.abc d:\tools\Rabc\rabcasm DDT_Loading-0\DDT_Loading-0.DDT_Loading.asasm d:\tools\Rabc\abcreplace DDT_Loading.swf 0 DDT_Loading-0\DDT_Loading-0.DDT_Loading.abc d:\tools\Rabc\abcexport 2.swf d:\tools\Rabc\rabcdasm 2-0.abc d:\tools\Rabc\rabcasm 2-0\2-0.main.asasm d:\tools\Rabc\abcreplace 2.swf 0 2-0\2-0.main.abc ==== Update abc code with flex sdk ==== D:\tools\flex_sdk_4.5\bin\mxmlc.exe -static-link-runtime-shared-libraries=true -o SocketManager.swf -source-path="2" "2\ddt\manager\SocketManager.as" D:\tools\flex_sdk_4.5\bin\mxmlc.exe -compiler.library-path=2. swc SocketManager.as d:\tools\Rabc\rabcasm Loading-0\Loading-0.main.asasm d:\tools\Rabc\abcreplace Loading.swf 0 Loading-0\Loading-0.main.abc ==== Actionscript dump ==== void*abccode = swf_ReadABC(tag); swf_DumpABC(stdout, abccode, ""); d:\tools\Rabc\abcexport LoadInterface.swf d:\tools\Rabc\rabcdasm LoadInterface-0.abc d:\tools\Rabc\rabcasm LoadInterface-0\LoadInterface-0.main.asasm d:\tools\Rabc\abcreplace LoadInterface.swf 0 LoadInterface-0\LoadInterface-0.main.abc d:\tools\Rabc\rabcasm GameLoader-0\GameLoader-0.main.asasm d:\tools\Rabc\abcreplace GameLoader.swf 0 GameLoader-0\GameLoader-0.main.abc Basic change abc code: * pushint 100 -> push gia tri can gan vao stack * setlocal 1 -> pop off gia tri tu stack va gan vao thanh ghi r1 * getlocal1 -> get gia tri cua tham so arg1 cua function va push vao stack * getlocal 1 -> get gia tri cua thanh ghi r1 va push vao stack * Find class name **ddt.manager.SocketManager** in asasm file by find string **ddt.manager:SocketManager** ===== Basic Developing ===== ==== Compiler Restrictions of Main class ==== When compiling ActionScript programs with the Flash authoring tool, FlexBuilder,or mxmlc, bear in mind the following compiler restrictions: * The program’s **main class must be public**. * In FlexBuilder 2 and mxmlc, the program’s main class must reside in the unnamed package. * The **program’s main class** must **extend either Sprite or MovieClip** * Every ActionScript source file (.as file) in the program must have exactly one externally visible definition. An “externally visible definition” is a class, variable,function, interface, or namespace that is defined as either internal or public within a package statement. * An ActionScript source file’s name must match the name of its sole externally visible definition. For example, the following source file would be considered illegal because it con-tains two externally visible classes: package { public class A { } public class B { } } Likewise, the following source file would be considered illegal because it does not contain any externally visible definition class C { } ==== Event handling ==== Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event: addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void * Listener function defined as a class method package { import flash.display.Sprite; public class ClickExample extends Sprite { public function ClickExample() { var child:ChildSprite = new ChildSprite(); addChild(child); } } } import flash.display.Sprite; import flash.events.MouseEvent; class ChildSprite extends Sprite { public function ChildSprite() { graphics.beginFill(0xFF0000); graphics.drawRect(0,0,100,100); graphics.endFill(); addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(event:MouseEvent):void { trace("clickHandler detected an event of type: " + event.type); trace("the this keyword refers to: " + this); } } * Or Listener function defined outside of a class dispatchEvent(event:Event):Boolean => Dispatches an event into the event flow(The same send message in windows). For example: dispatchEvent(new Event(Event.COMPLETE)); ===== Swftools ===== ==== swfdump ==== Using swfdump to check swf information swfdump.exe OpenTreasure_old.swf > OpenTreasure_old.txt swfdump.exe OpenTreasure_new.swf > OpenTreasure_new.txt Script dump all swf files in directory: dir /B > listfiles.txt for /F "delims=\r" %x in (listfiles.txt) do (d:\tools\SWFTools\swfdump.exe -D %x > %x.txt) ==== swfcombine ==== * decompress: swfcombine.exe -d OpenTreasure.swf -o OpenTreasure_new.swf * compress: swfcombine.exe -dz OpenTreasure.swf -o OpenTreasure_new.swf * merger: swfcombine.exe -o OpenTreasure_new.swf OpenTreasure_old.swf #147=147_edit.swf * changefont: swfextract.exe -i 69 -o 69.swf UILibrary_1.swf swfcombine.exe -o UILibrary_1_new.swf UILibrary_1.swf #69=69_edit.swf and check the changes with swfdump: swfdump.exe -D UILibrary_1.swf > UILibrary_1_old.txt swfdump.exe -D UILibrary_1_new.swf > UILibrary_1_new.txt * update sprite: swfcombine.exe -o NewTask_new.swf NewTask.swf #38=40.swf And check changes with swfdump: swfdump.exe -D NewTask.swf > NewTask.txt swfdump.exe -D NewTask_new.swf > NewTask_new.txt * change sprite swfdump.exe -D NewTeam.swf > NewTeam.txt swfcombine.exe -o NewTeam_new.swf NewTeam.swf #72=123.swf swfdump.exe -D NewTeam_new.swf > NewTeam_new.txt * Update abc code in main.swf d:\tools\Rabc\abcexport main.swf d:\tools\Rabc\rabcdasm main-0.abc d:\tools\Rabc\rabcasm main-0\main-0.main.asasm d:\tools\Rabc\abcreplace main.swf 0 main-0\main-0.main.abc ==== swfextract ==== Extract spriteId 147 from swf file swfextract.exe -i 147 -o 147.swf OpenTreasure_old.swf ===== Debug variables and GUI with Monster debug ===== refer: http://www.monsterdebugger.com/ Below are some baisc debug methods: * Basic Debug: package { import com.demonsters.debugger.MonsterDebugger; import flash.display.Sprite; public class Main extends Sprite { public function Main() { // Start the MonsterDebugger MonsterDebugger.initialize(this); MonsterDebugger.trace(this, "Hello MonsterDebug!"); } } } * Debug object class import com.demonsters.debugger.MonsterDebugger; MonsterDebugger.initialize(this); => Will called before trace, It established connection with MonsterDebug Program * Debug variable var person:Object = {name:"Mike", age:25, gender:"Male"}; MonsterDebugger.trace(this, person); To **Debug GUI**, You must select **View -> Highlight Inspect** after start the flash application and connect to MonsterDebugger ===== Flash Decompiler ===== notes: Before rebuilt the fla file from decompiler source, you need to change **source path** and **library path** to directory which contain actionscript source ==== Overview about Flash Decompiler tools ==== Analyze all decompiler tools: * ffdec and sothink similar source code structure * sothink create fla file best === Old method === Below are steps decompile and fix: - Step1: Decompile fla file using trillix - Step2: Decompile action script using trillix and fix actionscript base on sothink and ffdec source - Step3: We can decompile the **swf file to flash or flex application** === New method === Below are steps decompile and fix: - Step1: Decompile swf file using **sothink** to get **fla file** - Step2: Using **ffdec** to decompile swf file and get **actionscript source** - Step3: Config to build only resources in fla file(remove classpath, librarypath, Main Class in current flash project) and build it as swc library - Step4: Config to build only actionscript in FlashDevelop and using GUI swc from step3 as library - Step5: Fix error can't import resources from GUI swf(create actionscripts from actionscript source which use actionscript from GUI swc) - Step6: Fix actionscript error by **comparing with actionscript source of sothink first**. If not be fixed, you must compare with source of trillix ==== Using ffdec ==== Download and Install: * download: https://www.free-decompiler.com/flash/download/ * requires: java 8 * content of ffdec.bat @echo off java -Xmx1024m -Djna.nosys=true -jar "%~dp0\ffdec.jar" %* Some basic command lines(To run it, we need run DOS as Administrator): * Display helps: ffdec.bat --help * Decompiler and read swf source: java -jar ffdec.jar filename.swf * Decompiler only **script**(actionscript) in swf file to source destination **src**: java -jar ffdec.jar -export script "src" filename.swf * Decompiler to get **fla** file: java -jar ffdec.jar -format fla:cs5.5 -export fla "src\filename.fla" filename.swf ===== Adobe flash ===== ==== Crack adobe flash cs5 ==== refer: http://thuthuattienich.com/phan-mem-hay/download-adobe-flash-professional-cs5-full-crack/ === Cài đặt === - Bước 1: Các bạn download Adobe Flash Professional CS5 về máy tính. - Bước 2: Giải nén bằng winrar hoặc 7-zip (xem hướng dẫn cách sử dụng winrar & 7-zip để giải nén). - Bước 3: Chạy file Set-up.exe trong thư mục Adobe Flash Professional CS5.5 để **cài đặt với chế độ dùng thử** (Try). === Crack === Sau khi cài đặt xong, bạn chọn một trong 2 cách Crack bên dưới: - Cách 1: Crack Adobe Flash Professional CS5 **sử dụng file amtlib.dll**. Bạn quay lại thư mục giải nén ban đầu ở bước 2, mở thư mục Crack, copy file amtlib.dll paste vào thư mục cài đặt Adobe Flash Professional CS5 mặc định là: * Windows 32-bit: C:\Programs\Adobe\Adobe Flash Professional CS5\ * Windows 64-bit: C:\Programs(x86)\Adobe Flash Professional CS5\ * Lưu ý: Nếu có thông báo hỏi ghi đè, bạn chọn Yes hoặc Replace nha. * Sau đó bạn mở Adobe Flash Professional CS5 lên xem Crack thành công chưa ( Không hiện cửa sổ yêu cầu kích hoạt là Crack thành công rồi đó). Nếu chưa thành công thì các bạn tiếp tục chuyển sang cách 2. - Cách 2: Crack Adobe Flash Professional CS5 **sử dụng Keygen**. Bạn quay lại thư mục giải nén ban đầu ở bước 2, mở thư mục Crack, copy file keygen.exe paste vào thư mục cài đặt Adobe Flash Professional CS5 mặc định là: * Windows 32-bit: C:\Programs\Adobe\Adobe Flash Professional CS5\ * Windows 64-bit: C:\Programs(x86)\Adobe Flash Professional CS5\ * Sau đó bạn chạy file keygen.exe đó, cửa sổ Keygen hiện lên, các bạn nhấn nút Patch rồi chờ một chút cho nó chạy là xong. Đây là 2 cách Crack Adobe Flash Professional CS5 mà chắc chắn là các bạn sẽ thành công sau khi thực hiện 1 trong 2 cách trên.