| 21 | <li><a href="#features">Features</a></li> | <li><a href="#features">Features</a></li> | 
| 22 | <ul> | <ul> | 
| 23 |  |  | 
| 24 | <li><a href="#requests">Requests</a></li> | <li><a href="#obfuscation">Obfuscation</a></li> | 
| 25 | <li><a href="#functions">Functions</a></li> | <li><a href="#functions">Functions</a></li> | 
| 26 | </ul> | </ul> | 
| 27 |  |  | 
| 28 | <li><a href="#notes">Notes</a></li> | <li><a href="#dependencies">Dependencies</a></li> | 
|  | <li><a href="#todo___review">Todo / Review</a></li> |  | 
| 29 | <li><a href="#usage">Usage</a></li> | <li><a href="#usage">Usage</a></li> | 
| 30 | <ul> | <ul> | 
| 31 |  |  | 
| 32 | <li><a href="#usage__win32__">Usage (win32):</a></li> | <li><a href="#win32">win32</a></li> | 
| 33 | <li><a href="#usage___nix__">Usage (*nix):</a></li> | <li><a href="#_nix">*nix</a></li> | 
| 34 |  | </ul> | 
| 35 |  |  | 
| 36 |  | <li><a href="#development">Development</a></li> | 
| 37 |  | <ul> | 
| 38 |  |  | 
| 39 |  | <li><a href="#todo">Todo</a></li> | 
| 40 |  | <li><a href="#wishlist">Wishlist</a></li> | 
| 41 |  | <li><a href="#notes">Notes</a></li> | 
| 42 |  | </ul> | 
| 43 |  |  | 
| 44 |  | <li><a href="#links">Links</a></li> | 
| 45 |  | <ul> | 
| 46 |  |  | 
| 47 |  | <li><a href="#actionscript_decompilers___disassemblers">ActionScript Decompilers / Disassemblers</a></li> | 
| 48 |  | <li><a href="#actionscript_editors___co_">ActionScript Editors & Co.</a></li> | 
| 49 |  | <li><a href="#obfuscators">Obfuscators</a></li> | 
| 50 |  | <li><a href="#misc">Misc</a></li> | 
| 51 |  | <li><a href="#offtopic">Off-Topic</a></li> | 
| 52 | </ul> | </ul> | 
| 53 |  |  | 
| 54 | </ul> | </ul> | 
| 55 | <!-- INDEX END --> | <!-- INDEX END --> | 
| 56 |  |  | 
| 57 | <hr /> | <hr /> | 
| 58 | <p>This program is free software; you can redistribute it and/or | <pre> | 
| 59 | modify it under the terms of the GNU General Public License | This software is Copyright (C) 2004 Andreas Motl | 
| 60 | as published by the Free Software Foundation; either version 2 | Ideas and future AppleScript integration by Holger Marseille. | 
| 61 | of the License, or (at your option) any later version.</p> |  | 
| 62 | <p>This program is distributed in the hope that it will be useful, | This program is free software; you can redistribute it and/or | 
| 63 | but WITHOUT ANY WARRANTY; without even the implied warranty of | modify it under the terms of the GNU General Public License | 
| 64 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | as published by the Free Software Foundation; either version 2 | 
| 65 | GNU General Public License for more details.</p> | of the License, or (at your option) any later version. | 
| 66 | <p>You should have received a copy of the GNU General Public License |  | 
| 67 | along with this program; if not, write to the Free Software | This program is distributed in the hope that it will be useful, | 
| 68 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 69 | =cut</p> | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 70 |  | GNU General Public License for more details. | 
| 71 |  |  | 
| 72 |  | You should have received a copy of the GNU General Public License | 
| 73 |  | along with this program; if not, write to the Free Software | 
| 74 |  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.</pre> | 
| 75 | <p> | <p> | 
| 76 | <a href="#__index__"><small>back to top</small></a> | <a href="#__index__"><small>back to top</small></a> | 
| 77 | </p> | </p> | 
| 79 | <h1><a name="features">Features</a></h1> | <h1><a name="features">Features</a></h1> | 
| 80 | <p> | <p> | 
| 81 | </p> | </p> | 
| 82 | <h2><a name="requests__komplexere_verschlüsselung_als_1__2_____zb_nicht_in_der_numerischen_reihenfolge_sondern_nach_zufallsprinip__21_3_89____random___evtl__constants_nach_abfrage_ersetzen__leider_sehr_aufwendig__bei_vielen_constants___ask___rausgeben_des_arrays_mit_den_neuen_werten_um_evtl_die_obfuscation_rückgängig_zu_machen___undo____push_0_ls__dup_trace_branchiftrue_ls_____after_each_constants_declaration___pollute_">Requests | <h2><a name="obfuscation">Obfuscation</a></h2> | 
| 83 | - komplexere verschlüsselung als ``-1, -2 ...'' z-b nicht in der numerischen reihenfolge sondern nach | <pre> | 
| 84 | zufallsprinip (-21,-3,-89)? (->random) | See ASO Pro: <a href="http://www.genable.com/aso/preview.html">http://www.genable.com/aso/preview.html</a></pre> | 
|  | - evtl. constants nach abfrage ersetzen ? leider sehr aufwendig, bei vielen constants (->ask) |  | 
|  | - rausgeben des arrays mit den ``neuen'' werten um evtl die obfuscation rückgängig zu machen (->undo) |  | 
|  | -  ``    push 0 |  | 
|  | ls: |  | 
|  | dup |  | 
|  | trace |  | 
|  | branchIfTrue ls'' |  | 
|  | ... after each ``constants'' declaration (->pollute)</a></h2> |  | 
| 85 | <p> | <p> | 
| 86 | </p> | </p> | 
| 87 | <h2><a name="functions_fluscate_handles_two_different_styles_of_function_declarations_">Functions | <h2><a name="functions">Functions</a></h2> | 
| 88 | fluscate handles two different styles of function declarations:</a></h2> | <pre> | 
| 89 |  | fluscate handles two different styles of function declarations:</pre> | 
| 90 | <pre> | <pre> | 
| 91 | 1. "Normal" ones | 1. "Normal" ones | 
| 92 | function mp3Player ('arg1', 'arg2')</pre> | function mp3Player ('arg1', 'arg2')</pre> | 
| 98 | <a href="#__index__"><small>back to top</small></a> | <a href="#__index__"><small>back to top</small></a> | 
| 99 | </p> | </p> | 
| 100 | <hr /> | <hr /> | 
| 101 | <h1><a name="notes__no_function_may_be_called_initialize__rename_it_to__e_g___initialize2__reassembling_will_not_work_otherwise__doesn_t_matter_when_obfuscating_since_function_names_will_be_replaced_of_course___function_names_seem_to_be_work_case_insensitive__shuffle____shuffle___successfully_tested_with_http___download_macromedia_com_pub_flash_showme_win_puzzle_zip__make_sure_1__2__3_______gets_replaced_with__1____2____3________there_are_multiple_caller_lines__callfunction__callmethod__do_we_have_to_take_special_care_to_methods__getmember_and_getvariable_also_do_function_calls___there_are_reserved_function_names_which_must_not_be_replaced_____event_handlers__e_g__onpress_">Notes | <h1><a name="dependencies">Dependencies</a></h1> | 
| 102 | - no function may be called ``Initialize'', rename it to (e.g.) ``Initialize2'', reassembling will not work otherwise | <pre> | 
| 103 |  | "flasm" is required to disassemble swf files, see <a href="http://www.nowrap.de/flasm.html">http://www.nowrap.de/flasm.html</a> | 
| 104 |  | ACKs go to Igor Kogan.</pre> | 
| 105 |  | <p> | 
| 106 |  | <a href="#__index__"><small>back to top</small></a> | 
| 107 |  | </p> | 
| 108 |  | <hr /> | 
| 109 |  | <h1><a name="usage">Usage</a></h1> | 
| 110 |  | <p> | 
| 111 |  | </p> | 
| 112 |  | <h2><a name="win32">win32</a></h2> | 
| 113 |  | <pre> | 
| 114 |  | #> flasm.exe -d puzzle.swf > puzzle.flm | 
| 115 |  | #> cat puzzle.flm | perl fluscate.pl > puzzle_fusc.flm | 
| 116 |  | #> flasm.exe -a puzzle_fusc.flm</pre> | 
| 117 |  | <p> | 
| 118 |  | </p> | 
| 119 |  | <h2><a name="_nix">*nix</a></h2> | 
| 120 |  | <pre> | 
| 121 |  | #> ./flasm -d puzzle.swf > puzzle.flm | 
| 122 |  | #> cat puzzle.flm | ./fluscate.pl > puzzle_fusc.flm | 
| 123 |  | #> ./flasm -a puzzle_fusc.flm</pre> | 
| 124 |  | <p> | 
| 125 |  | <a href="#__index__"><small>back to top</small></a> | 
| 126 |  | </p> | 
| 127 |  | <hr /> | 
| 128 |  | <h1><a name="development">Development</a></h1> | 
| 129 |  | <p> | 
| 130 |  | </p> | 
| 131 |  | <h2><a name="todo">Todo</a></h2> | 
| 132 |  | <pre> | 
| 133 |  | - provide list of flash event handler names to exclude from symbol replacement</pre> | 
| 134 |  | <p> | 
| 135 |  | </p> | 
| 136 |  | <h2><a name="wishlist">Wishlist</a></h2> | 
| 137 |  | <pre> | 
| 138 |  | - komplexere verschlüsselung als "-1, -2 ..." z-b nicht in der numerischen reihenfolge sondern nach | 
| 139 |  | zufallsprinip (-21,-3,-89)? (->random) | 
| 140 |  | - evtl. constants nach abfrage ersetzen ? leider sehr aufwendig, bei vielen constants (->ask) | 
| 141 |  | - rausgeben des arrays mit den "neuen" werten um evtl die obfuscation rückgängig zu machen (->undo) | 
| 142 |  | -  "    push 0 | 
| 143 |  | ls: | 
| 144 |  | dup | 
| 145 |  | trace | 
| 146 |  | branchIfTrue ls" | 
| 147 |  | ... after each "constants" declaration (->pollute) | 
| 148 |  | - what about other symbols beside "function"s? (e.g. variables) (->mode)</pre> | 
| 149 |  | <p> | 
| 150 |  | </p> | 
| 151 |  | <h2><a name="notes">Notes</a></h2> | 
| 152 |  | <pre> | 
| 153 |  | - no function may be called "Initialize", rename it to (e.g.) "Initialize2", reassembling will not work otherwise | 
| 154 | (doesn't matter when obfuscating since function names will be replaced of course) | (doesn't matter when obfuscating since function names will be replaced of course) | 
| 155 | - function names seem to be/work case insensitive (shuffle <-> Shuffle) | - function names seem to be/work case insensitive (shuffle <-> Shuffle) | 
| 156 | - successfully tested with <a href="http://download.macromedia.com/pub/flash/showme/win/puzzle.zip">http://download.macromedia.com/pub/flash/showme/win/puzzle.zip</a> | - successfully tested with <a href="http://download.macromedia.com/pub/flash/showme/win/puzzle.zip">http://download.macromedia.com/pub/flash/showme/win/puzzle.zip</a> | 
| 157 | - make sure -1, -2, -3, .... gets replaced with '-1', '-2', '-3', ... | - make sure -1, -2, -3, .... gets replaced with '-1', '-2', '-3', ... | 
| 158 | - there are multiple caller lines: callFunction, callMethod; do we have to take special care to methods? | - there are multiple caller lines: callFunction, callMethod; do we have to take special care to methods? | 
| 159 | - ``getMember'' and ``getVariable'' also do function calls! | - "getMember" and "getVariable" also do function calls! | 
| 160 | - there are reserved function names which must not be replaced! (-> event handlers, e.g. ``onPress'')</a></h1> | - there are reserved function names which must not be replaced! (-> event handlers, e.g. "onPress")</pre> | 
| 161 | <p> | <p> | 
| 162 | <a href="#__index__"><small>back to top</small></a> | <a href="#__index__"><small>back to top</small></a> | 
| 163 | </p> | </p> | 
| 164 | <hr /> | <hr /> | 
| 165 | <h1><a name="todo___review__what_about_other_symbols_beside_functions">Todo / Review | <h1><a name="links">Links</a></h1> | 
|  | - what about other symbols beside ``function''s?</a></h1> |  | 
| 166 | <p> | <p> | 
|  | <a href="#__index__"><small>back to top</small></a> |  | 
| 167 | </p> | </p> | 
| 168 | <hr /> | <h2><a name="actionscript_decompilers___disassemblers">ActionScript Decompilers / Disassemblers</a></h2> | 
| 169 | <h1><a name="usage">Usage</a></h1> | <pre> | 
| 170 |  | flasm: <a href="http://www.nowrap.de/flasm.html">http://www.nowrap.de/flasm.html</a></pre> | 
| 171 | <p> | <p> | 
| 172 | </p> | </p> | 
| 173 | <h2><a name="usage__win32______flasm_exe_d_puzzle_swf___puzzle_flm____cat_puzzle_flm___perl_fluscate_pl___puzzle_fusc_flm____flasm_exe_a_puzzle_fusc_flm">Usage (win32): | <h2><a name="actionscript_editors___co_">ActionScript Editors & Co.</a></h2> | 
| 174 | #> flasm.exe -d puzzle.swf > puzzle.flm | <pre> | 
| 175 | #> cat puzzle.flm | perl fluscate.pl > puzzle_fusc.flm | URL Action Editor and Actionscript Viewer: | 
| 176 | #> flasm.exe -a puzzle_fusc.flm</a></h2> | <a href="http://www.buraks.com/">http://www.buraks.com/</a> | 
| 177 |  | <a href="http://voisen.org/archives/2003/02/uae_303_and_asv_309.php">http://voisen.org/archives/2003/02/uae_303_and_asv_309.php</a> | 
| 178 |  | SE|PY ActionScript Editor: <a href="http://www.sephiroth.it/python/sepy.php">http://www.sephiroth.it/python/sepy.php</a></pre> | 
| 179 | <p> | <p> | 
| 180 | </p> | </p> | 
| 181 | <h2><a name="usage___nix______flasm_d_puzzle_swf___puzzle_flm____cat_puzzle_flm___fluscate_pl___puzzle_fusc_flm____flasm_a_puzzle_fusc_flm">Usage (*nix): | <h2><a name="obfuscators">Obfuscators</a></h2> | 
| 182 | #> flasm -d puzzle.swf > puzzle.flm | <pre> | 
| 183 | #> cat puzzle.flm | fluscate.pl > puzzle_fusc.flm | ASO Pro (ActionScript Obfuscator Pro): <a href="http://www.genable.com/aso/preview.html">http://www.genable.com/aso/preview.html</a> | 
| 184 | #> flasm -a puzzle_fusc.flm</a></h2> | SWOB (swf obfuscator): <a href="http://home.byu.net/jtb64/Swob.htm">http://home.byu.net/jtb64/Swob.htm</a> | 
| 185 |  | OBFU - A Flash Actionscript obfuscator: <a href="http://opaque.net/~dave/obfu/">http://opaque.net/~dave/obfu/</a></pre> | 
| 186 |  | <p> | 
| 187 |  | </p> | 
| 188 |  | <h2><a name="misc">Misc</a></h2> | 
| 189 |  | <pre> | 
| 190 |  | ActionScript Protection: | 
| 191 |  | <a href="http://www.as-protect.com/">http://www.as-protect.com/</a> | 
| 192 |  | <a href="http://www.quasimondo.com/archives/000377.php">http://www.quasimondo.com/archives/000377.php</a> | 
| 193 |  | Developer's SWF Guardian: <a href="http://anyrd.anyorganization.com/">http://anyrd.anyorganization.com/</a> | 
| 194 |  | Password Busting / SWF Protections: <a href="http://www.searchlores.org/cinix_fla.htm">http://www.searchlores.org/cinix_fla.htm</a></pre> | 
| 195 |  | <p> | 
| 196 |  | </p> | 
| 197 |  | <h2><a name="offtopic">Off-Topic</a></h2> | 
| 198 |  | <pre> | 
| 199 |  |  | 
| 200 |  | XPath for Actionscript and other stuff: <a href="http://www.xfactorstudio.com/Actionscript/">http://www.xfactorstudio.com/Actionscript/</a> | 
| 201 |  | SerializerClass: <a href="http://sourceforge.net/projects/serializerclass/">http://sourceforge.net/projects/serializerclass/</a> | 
| 202 |  | AMF::Perl - Flash Remoting in Perl and Python - using Flash Remoting protocol (AMF): | 
| 203 |  | <a href="http://simonf.com/amfperl/">http://simonf.com/amfperl/</a> | 
| 204 |  | PEAR::SWF - Read and write SWF head tag: <a href="http://www.sephiroth.it/test/php/SWF/">http://www.sephiroth.it/test/php/SWF/</a> | 
| 205 |  | AMFPHP - Flash Remoting for PHP: <a href="http://www.amfphp.org/">http://www.amfphp.org/</a></pre> | 
| 206 | <p><a href="#__index__"><small>back to top</small></a></p> | <p><a href="#__index__"><small>back to top</small></a></p> | 
| 207 | <table border="0" width="100%" cellspacing="0" cellpadding="3"> | <table border="0" width="100%" cellspacing="0" cellpadding="3"> | 
| 208 | <tr><td class="block" valign="middle"> | <tr><td class="block" valign="middle"> |