Obfuscation, Golfing and Secret Operators in Perl

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

Post a comment
Embed Video
Edit your comment Cancel

4 Favorites & 1 Event

Obfuscation, Golfing and Secret Operators in Perl - Presentation Transcript

  1. OGSOP Obfuscation, Golfing and Secret Operators in Perl Perl Golf 1
  2. Obfuscation 2
  3. How do I impress my friends who don’t know much Perl with obfuscation? 3
  4. With simple things 4
  5. #!/usr/bin/perl $:?do{exit&&exit}:print\"Just another Perl hacker,\" 5
  6. #!/usr/bin/perl $:?do{exit||exit}:print\"Just another Perl hacker,\" 6
  7. Spaces? What spaces? $:?do{exit&&exit}:print\"Just another Perl hacker,\" 7
  8. Use newlines... #!/usr/bin/perl $:? do {exit && exit } : print “Just another”. “ Perl hacker,” 8
  9. As many as you can... #!/usr/bin/perl $:?do{ exit&& exit } :print “Jus”. “t a”. “not”. “her”. “ Pe”. “rl “. “hac”. “ker,” 9
  10. Forget about indentation if($var) { $var = 0 } else { $var = 1 } 10
  11. Or at least use it wrongly if($var) { $var = 0 } else { $var = 1 } 11
  12. Semicolons: use wrongly print \"Hello \" ;print \"World\" 12
  13. Semicolons: use plenty ;;;;;;;;;;;;;;;;;;;;;;; ;;print \"Hello World\";; ;;;;;;;;;;;;;;;;;;;;;;; ;;s;;print \"Hello World\";e;; 13
  14. Semicolons: use alternatives $a++ ; $b-- $a++ , $b-- $a++ . $b-- $a++ .. $b-- 14
  15. Use things indirectly s//Just another Perl hacker,/ ; print 15
  16. Bend the rules s/ / /; y/ / /; 16
  17. Bend the rules s; ; ; ; s { }[ ] s s s s y ; ; ;; y y y y 17
  18. And use unneeded things ; s ; ; ; ; { };s{ }[ ] s s s s s ; y ; ; ; ; 18
  19. Mix them together y s y s y s s y s y s y 19
  20. Mix things up 1?s::::0 20
  21. Mix things up 1 ? s::: : 0 21
  22. Is it code? y//No, it is not/; 22
  23. Is it a comment? s##No, it is not#; 23
  24. Is it a comment? s##we want to print \"Just another Perl hacker,\"## 24
  25. Is it a comment? s;;;;s ##we want to print \"Just another Perl hacker,\"## 25
  26. Is it a comment? s;;;;s ##we want to print \"Just another Perl hacker,\"## 26
  27. Is it a comment? s;old;new;g;s ##we want to print \"Just another Perl hacker,\"## 27
  28. Is it a comment? s;old;new;g;s ##we want to print \"Just another Perl hacker,\"## ;s^.{11}^^&&eval; 28
  29. Are those brackets closed? {y/}/{/} 29
  30. WYSINWYG $ perl -le ‘print “All digits!” if 0x20 =~ /^\\d+\\z/’ All digits! $ perl -le ‘print 0x20 32 30
  31. WYSINWYG print \"No underscores!\" if 1_234_567_890 !~ /_/; print \"No e!\" if 1e6 !~ /e/; print \"There is an e!\" if 6666666666666666 =~ /e/; print \"There is a plus!\" if 1e15 =~ /\\+/; print \"No dot!\" if 0.00 !~ /\\./; 31
  32. Hexadecimal or... whatever eval \"\\x70\\x72\\x69\\x6e\\x74\"; eval \"\\160\\x72\\151\\x6e\\164\"; $_=\"0741171151160320971101111161041011140320801011\". \"14108032104097099107101114046\";s;...;print chr$&;eg 32
  33. Variable names $; $: $_ $^ @^ 33
  34. Variable names: and behold $ ; $ : $ _ $ ^ @ ^ 34
  35. Variable names: mix them 1 ? s : $ s : : : 0 35
  36. Variable names: cleverly 1 ? s : s $ s : s $ s : : 0 36
  37. Variable names: calculate print ${1+1} 37
  38. Variable names: store them print ${$_} 38
  39. Special variables @_=(Just,another,Perl,hacker);$,=$”;print@_ $,=” another Perl “;print(“Just”,”hacker”); 39
  40. Behind human capabilities y/a-z/:-z/ 40
  41. Use uncommon things | & ^ ~ 41
  42. Use uncommon things print “a” | “c”; print ~0 & 2 ; print 1 ^ 2 ; print ~0; 42
  43. so you can do clever things sub _ { “something tricky” } _$_ 43
  44. or don’t name it at all $_ = sub _ { “something tricky” } &{$_} 44
  45. And be inventive s; ;; 45
  46. And be *very* inventive ;;; ;s; ;;; 46
  47. And be *VERY* inventive g;; ;s; ;;g 47
  48. Example 48
  49. JAPH print \"Just another Perl hacker,\" 49
  50. JAPH print \"Just \", \"another \", \"Perl \", \"hacker,\" 50
  51. JAPH $, = \" \"; print \"Just\", \"another\", \"Perl\", \"hacker,\" 51
  52. JAPH $, = \" \"; print reverse \"hacker,\", \"Perl\", \"another\", \"Just\" 52
  53. JAPH $, = \" \"; print reverse\"hacker,\",\"Perl\",\"another\",\"Just\" 53
  54. JAPH $, = \" \"; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; print @_ 54
  55. JAPH $, = $\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; print @_ 55
  56. JAPH $, =+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; print @_ 56
  57. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; print @_ 57
  58. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; join$,,@_ ; print $_ 58
  59. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s //join$,,@_/e; print $_ 59
  60. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s //”join”.’$,,@_’/ee; print $_ 60
  61. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s //\"\\x6a\\x6f\\x69\\x6e\".’$,,@_’/ee; print $_ 61
  62. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s //\"\\x6a\\x6f\\x69\\x6e\".’$,,@,’/ee; print $_ 62
  63. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s //\"\\x6a\\x6f\\x69\\x6e\".’$,,@,’/ee; print 63
  64. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s{}/\"\\x6a\\x6f\\x69\\x6e\".’$,,@,’/ee; print 64
  65. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s{};\"\\x6a\\x6f\\x69\\x6e\".’$,,@,’;ee; print 65
  66. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s{};\"print \\x6a\\x6f\\x69\\x6e\".’$,,@,’;ee; eval 66
  67. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s{};\"print \\x6a\\x6f\\x69\\x6e\".’$,,@,’;eee 67
  68. JAPH +$,=+$\" ; push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s{};\"\\160\\162\\151\\156\\164 \\x6a\\x6f\\x69\\x6e\".’$,,@,’;eee 68
  69. JAPH (+$,=+$\"). push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s{};\"\\160\\162\\151\\156\\164 \\x6a\\x6f\\x69\\x6e\".’$,,@,’;eee 69
  70. JAPH (+$,=+$\").#s# most people # think # this is a comment # push@,,$_ for reverse\"hacker,\",\"Perl\",\"another\",”Just”; s{};\"\\160\\162\\151\\156\\164 \\x6a\\x6f\\x69\\x6e\".’$,,@,’;eee 70
  71. Warning 71
  72. Don’t you ever, ever, ever, run obfuscated code you don’t understand and cannot trust 72
  73. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 73
  74. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 74
  75. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 75
  76. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 76
  77. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 77
  78. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 78
  79. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 79
  80. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 80
  81. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 81
  82. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 82
  83. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 83
  84. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 84
  85. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 85
  86. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 86
  87. Random code on the web $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|‘{; ; y; -/:-@[-‘{-};‘-{/\" -;;s;;$_;see 87
  88. Random code on the web So what’s on $_ afterall? 88
  89. Random code on the web So what’s on $_ afterall? system”rm -rf /” 89
  90. Golfing 90
  91. One character variables $c $d $e $f $g 91
  92. If you don’t need it... print “something”; print”something” 92
  93. Forget about \\n s/\\n//; s/ //; $_=”something\\n” $_=”something “ 93
  94. END in the beginning something;END{something_else} END{something_else}something 94
  95. Learn the alternatives map{[$_]}@array map[$_],@array 95
  96. for the other way around for(@a){something} something for@a 96
  97. Learn the switches #!/usr/bin/perl print”this\\n”; print”that\\n”; print”the other\\n”; #!/usr/bin/perl -l print”this”; print”that”; print”the other”; 97
  98. Learn the special variables #!/usr/bin/perl @_=qw/Just another Perl hacker,/; print join” “,@_ #!/usr/bin/perl @_=qw/Just another Perl hacker,”; print”@_” 98
  99. Golfing techniques 99
  100. Golfing techniques $_ x= 100
  101. Golfing techniques What does this do? $_ x= / /; 101
  102. Golfing techniques y///c 102
  103. Secret Operators 103
  104. Secret Eskimo Greeting }{ 104
  105. Secret Eskimo Greeting #!/usr/bin/perl -n # What does this do? }{print$. 105
  106. Secret Eskimo Greeting $ perldoc -perlrun [...] #!/usr/bin/perl LINE: while (<>) { ... # your program goes here } [...] 106
  107. Secret Eskimo Greeting #!/usr/bin/perl LINE: while (<>) { }{print$. } 107
  108. Supermarket Trolley @{[]} 108
  109. Supermarket Trolley my @stuff = qw/pocket_watch 3ninja_tshirts/; print \"Our list includes: @{[map {ucfirst} @things_for_my_other_talks]}.\" print \"Our list includes: \", map {ucfirst} @things_for_my_other_talks], \".\" 109
  110. Supermarket Trolley my @stuff = qw/pocket_watch 3ninja_tshirts/; print \"Our list includes: @{[map {ucfirst} @things_for_my_other_talks]}.\" print \"Our list includes: \", map {ucfirst} @things_for_my_other_talks], \".\" my @new_list = map {ucfirst} @things_for_my_other_talks; 110
  111. Supermarket Trolley my @stuff = qw/pocket_watch 3ninja_tshirts/; print \"Our list includes: @{[map {ucfirst} @things_for_my_other_talks]}.\" print \"Our list includes: \", map {ucfirst} @things_for_my_other_talks], \".\" my @new_list = map {ucfirst} @things_for_my_other_talks; print \"Our list includes: @new_list.\" 111
  112. Goatse =()= 112
  113. Goatse my $_ = \"Just another Perl hacker,\"; my $spaces =()= / /g 113
  114. Inchworm on a stick ~- 114
  115. Inchworm on a stick What does this do? $y = ~-$x*4; 115
  116. Inchworm on a stick What does this do? $y = ~-$x*4; $y = ($x-1)*4; 116
  117. Inchworm on a stick What does this do? $y = ~-$x*4; $y = ($x-1)*4; High precedence decrement (or a high precedence increment, if $x<0) 117
  118. /// /// 118
  119. /// What does this do? print ///4; 119
  120. /// What does this do? print ///4; print //; # prints 1 120
  121. /// What does this do? print ///4; print //; # prints 1 print 1/4; # prints 0.25 121
  122. /// What does this do? print ///4; print //; # prints 1 print 1/4; # prints 0.25 print ///4; # prints 0.25 122
  123. Inchworm ~~ 123
  124. Inchworm What does this do? print ~~ gmtime 124
  125. Inchworm $ perl -e 'print gmtime' 31441214410831340 125
  126. Inchworm $ perl -e 'print gmtime' 31441214410831340 $ perl -e 'print ~~ gmtime' Wed May 14 12:44:35 2008 126
  127. Min Max [ ]->[ ] 127
  128. Min Max What does this do? [ $x => $y ]->[ $y <= $x ] 128
  129. Min Max What does this do? [ $x => $y ]->[ $y <= $x ] ...that’s the lesser of $x and $y 129
  130. Min Max What does this do? [ $x => $y ]->[ $y <= $x ] ...that’s the lesser of $x and $y [ $x => $y ]->[ $x <= $y ] ...and that’s the greater of $x and $y 130
  131. Examples 131
  132. Erudil’s Camel Code #!/usr/bin/perl -w # camel code use strict; $_='ev al(\"seek\\040D ATA,0, 0;\");foreach(1..3) {<DATA>;}my @camel1hump;my$camel; my$Camel ;while( <DATA>){$_=sprintf(\"%-6 9s\",$_);my@dromedary 1=split(//);if(defined($ _=<DATA>)){@camel1hum p=split(//);}while(@dromeda ry1){my$camel1hump=0 ;my$CAMEL=3;if(defined($_=shif t(@dromedary1 ))&&/\\S/){$camel1hump+=1<<$CAMEL;} $CAMEL--;if(d efined($_=shift(@dromedary1))&&/\\S/){ $camel1hump+=1 <<$CAMEL;}$CAMEL--;if(defined($_=shift( @camel1hump))&&/\\S/){$camel1hump+=1<<$CAMEL;}$CAMEL--;if( defined($_=shift(@camel1hump))&&/\\S/){$camel1hump+=1<<$CAME L;;}$camel.=(split(//,\"\\040..m`{/J\\047\\134}L^7FX\"))[$camel1h ump];}$camel.=\"\\n\";}@camel1hump=split(/\\n/,$camel);foreach(@ camel1hump){chomp;$Camel=$_;y/LJF7\\173\\175`\\047/\\061\\062\\063\\ 064\\065\\066\\067\\070/;y/12345678/JL7F\\175\\173\\047`/;$_=reverse; print\"$_\\040$Camel\\n\";}foreach(@camel1hump){chomp;$Camel=$_;y /LJF7\\173\\175`\\047/12345678/;y/12345678/JL7F\\175\\173\\0 47`/; $_=reverse;print\"\\040$_$Camel\\n\";}';;s/\\s*//g;;eval; eval (\"seek\\040DATA,0,0;\");undef$/;$_=<DATA>;s/\\s*//g;( );;s ;^.*_;;;map{eval\"print\\\"$_\\\"\";}/.{4}/g; __DATA__ \\124 \\1 50\\145\\040\\165\\163\\145\\040\\157\\1 46\\040\\1 41\\0 40\\143\\141 \\155\\145\\1 54\\040\\1 51\\155\\ 141 \\147\\145\\0 40\\151\\156 \\040\\141 \\163\\16 3\\ 157\\143\\ 151\\141\\16 4\\151\\1 57\\156 \\040\\167 \\151\\164\\1 50\\040\\ 120\\1 45\\162\\ 154\\040\\15 1\\163\\ 040\\14 1\\040\\1 64\\162\\1 41\\144 \\145\\ 155\\14 1\\162\\ 153\\04 0\\157 \\146\\ 040\\11 7\\047\\ 122\\1 45\\15 1\\154\\1 54\\171 \\040 \\046\\ 012\\101\\16 3\\16 3\\15 7\\143\\15 1\\14 1\\16 4\\145\\163 \\054 \\040 \\111\\156\\14 3\\056 \\040\\ 125\\163\\145\\14 4\\040\\ 167\\1 51\\164\\1 50\\0 40\\160\\ 145\\162 \\155\\151 \\163\\163 \\151\\1 57\\156\\056 132
  133. Saturn #!/usr/bin/perl ;;;;;; ;;;;;;;;;;; ;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;; +$I=sub{+s+^+ ;;;;;;; ;;;;;;;;; $\"x$_[1]+gem;$/x$_# ;;;; ;;;;;;;; [0].$_.$/};$W=sub{$~=!q~ ;;;;;;; ~.pop();system($^O=~Win?ClS:# ;;;;;;; 'clear'),print,select$Z,$Z,$Z,!\" ;;;;;; \"||$~for@_};$H=sub{+join$/,map($_# ;;;;;; x$_[0],pop=~m-.+-g),!_};$_=!Mima,s-- ;;;;; \"@{['=9+)w'^RINGS]}\\%;local@{[Saturn^# ;;;;; wNXIBP]}\"-see;s-^#!..+?$/(?=$\"+;)--is ;;;; y-;-'-;s-\\w-~-gi;$S=$_;#--Beautiful] ;;;; @S=m-.+-g;$N=1+.6-!th_,$--=-82-$--- ;;; $_.=$\"x-(y---c-$-)for@S;$R=sub{$i# ;;; -d =0;join$/,map{$j=$%;join!_,grep# ;;; Rhea !($j++%$_[$%]),m-.-g}grep!($i# ;;; -Titan ++%$_[0]),@S};$L=join!_,map# ;;; -Huygens ~~reverse.$/,@S;@R=(&$I(q- ;;; -&&20,051, $_=_^q-q-),&$I(20,41-!q- ;;; -,$_=F|K),$ I->(15,31,$_=&$R(4-!q- ;;; -)),&$I(13-!\" ;;\",28,$_=&$R(3)),&${ ;;; _^_^I}(10,20-!\" ;;;;;\",$_=$R->(2)),q- ;;; -&&$S);@O=map&{\" ;;;;;; \"&&$H}($_,&${ ;;; R.!-_}($_))x$_,!\" ;;;;; \"+2..2*~~2 ;;; @Y=reverse@R#Dione ;;;;;; &${m-- ;;; S|A|T|U}(@R,$N)||!q- ;;;;;;; b- ;;; &$W(@O[0,1,2,1,0!=!q- ;;;;;;; ;;;; -],!1!~~1);&$W($S.!q- ;;;;;;;;; ;;;;; -,$L,0.16)for$%..5+!q- ;;;;;;;;;; ;;;;;;;;; Cassini-;&{$W||q- ;;;;;;;;;;;;;;;;;;;;;; -}(@Y,1.6) ;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;; ;;;;;;;;;;; ;;;;;; 133
  134. Space Invaders #!/usr/bin/perl use strict; use Term'ReadKey;ReadMode 'cbreak';$,=$/;$/=++$b+$b;$=='8';$b=$= x28;$*=$=x2;@!=(qw(4 _ \" a 1 1 0 0 ));$![7]=`clear` ;push(@!,split shift(@!),q 7$=W8W$=8$b eq \"j\"8W$=8$=W8 $b eq \"l\"8W$=8W!8($b eq\"k\"&&$_!~/!/)a#W$=8#$=W8$=W#8W$=#8#!8##a\\*8 $=8p$=8$=p 8$=q8q$=8p(#.{59})$=8$=$ 1q8#q(.{60 })$=8#$=$1 pap(.{60})!8$![0]++;\"\\*$ 1$=\"8q(.{6 0})!8$![0] ++;\"\\*$1$=\"8(t.*)!8$b=(l ength$1)-6 1;substr($ 1,0,$b ).\"!\". substr($1, $b+1).$=4x \"gs'\"x\"c\"es'\"c\"z\"gs if'.shift\"z\"l\"just another perl hacker\"l 4'SpaceInvaders'.($=x12).'domm@zsi.at j=left k=fire l=right' _'#'x58_(\"$*p$*\"x11).$=x3_$*.(\"$*$*q\"x11).$=_(\"p$*$*\"x11).$= x3_($=x3).(\"$*$*q\"x11)_1_$b.$=.\"W$b\"_'#'x 587);j(split shift @!,pop@!);a(split shift@!,pop@!);push(@!,split shift@!,pop@! );$_=$a;map{s/\\n//g}@!;map{s/v//g}@!;map{s/ //g}@!;&p;sub'j {$_=shift;$a.=m/^1/?(\"#$b$=$=$b#$,\"x12):\"#\".eval( ).\"#$,\";@_ &&j(@_)}sub'END{ReadMode 'normal' }sub'a{eval\"sub'\".pop().'{ eval\\'s/\\'.(shift).\\'/\\'.(shift).\\'/'.pop().';@_&&'.pop().'( @_)}';@_&&a(@_)}sub'p{$b=ReadKey -1;$![1]%3==0&&x(split$=,$! [6]);z(split$=,$![4]);x(split$=,$![5]);c(split$=,$![7]);$![1 ]++;select+(@-,@-,@-,0.05);($![2]=$_)=~s/$=/ /g;/pW|Wq/&&h(' Game over');$_!~/p|q/&&h('You saved our planet. Yeah');print $![3],$![2 ];&p}sub h{print $![ 3],shift,\" You killed $![0] space invaders \",$,;exit} 134
  135. See also 135
  136. • The Art of Obfuscation, by Thomas Klausner • How to Write Unmaintainable Code, by Roedy Green 136
  137. Thank you 137

+ José CastroJosé Castro, 2 years ago

custom

2557 views, 4 favs, 3 embeds more stats

Everything you always wanted to know about Obfuscat more

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 2557
    • 2530 on SlideShare
    • 27 from embeds
  • Comments 1
  • Favorites 4
  • Downloads 15
Most viewed embeds
  • 15 views on http://perl-howto.de
  • 11 views on http://thomas-fahle.blogspot.com
  • 1 views on http://209.85.165.104

more

All embeds
  • 15 views on http://perl-howto.de
  • 11 views on http://thomas-fahle.blogspot.com
  • 1 views on http://209.85.165.104

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories

Groups / Events