SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
CocoaHeads.fr
gnireenigne
  Les outils du mal
Enahpéts Erdus
Zorglhomme
“Alors, c’est l’histoire d’un crash…”

2011-01-17 11:32:53.186 packagemaker[7547:903] -[PMCLIFakeDocument alertDispatcher]: unrecognized selector sent to instance
0x209640
2011-01-17 11:32:53.187 packagemaker[7547:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[PMCLIFakeDocument alertDispatcher]: unrecognized selector sent to instance 0x209640'
*** Call stack at first throw:
(
	    0   CoreFoundation                      0x9579b6ba __raiseError + 410
	    1   libobjc.A.dylib                     0x96940509 objc_exception_throw + 56
	    2   CoreFoundation                      0x957e890b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
	    3   CoreFoundation                      0x95741c36 ___forwarding___ + 950
	    4   CoreFoundation                      0x95741802 _CF_forwarding_prep_0 + 50
	    5   packagemaker                        0x0009c076 0x0 + 639094
	    6   Foundation                          0x91b06ab1 __NSFireDelayedPerform + 537
	    7   CoreFoundation                      0x95705adb __CFRunLoopRun + 8059
	    8   CoreFoundation                      0x95703464 CFRunLoopRunSpecific + 452
	    9   CoreFoundation                      0x95703291 CFRunLoopRunInMode + 97
	    10 Foundation                           0x91b7f8d1 -[NSConcreteTask waitUntilExit] + 273
	    11 packagemaker                         0x000714e2 0x0 + 464098
	    12 packagemaker                         0x00046cd3 0x0 + 290003
	    13 packagemaker                         0x0001c546 0x0 + 116038
	    14 packagemaker                         0x0001c5dd 0x0 + 116189
	    15 packagemaker                         0x0001c5dd 0x0 + 116189
	    16 packagemaker                         0x0001c5dd 0x0 + 116189
	    17 packagemaker                         0x0001c5dd 0x0 + 116189
	    18 packagemaker                         0x0001c5dd 0x0 + 116189
	    19 packagemaker                         0x000469f9 0x0 + 289273
	    20 packagemaker                         0x0003213f 0x0 + 205119
	    21 packagemaker                         0x00032a0b 0x0 + 207371
	    22 packagemaker                         0x00033362 0x0 + 209762
	    23 packagemaker                         0x000316f3 0x0 + 202483
	    24 packagemaker                         0x0003efc2 0x0 + 257986
	    25 packagemaker                         0x000304cf 0x0 + 197839
	    26 packagemaker                         0x0006a7d9 0x0 + 436185
	    27 packagemaker                         0x00069e07 0x0 + 433671
	    28 packagemaker                         0x00002bca 0x0 + 11210
	    29 packagemaker                         0x00002ba9 0x0 + 11177
class-dump
class-dump




  “Si vous avez des classes qui ne doivent être
  connues de personne, peut-être ne devriez
  vous pas les coder.”
class-dump

    typedef struct {
        struct _NSModalSession *_field1;
        char _field2;
        id _field3;
                                                             Structures
    } CDAnonymousStruct14;

                                                …
    @protocol NSCoding
    - (void)encodeWithCoder:(id)fp8;
    - (id)initWithCoder:(id)fp8;                             Protocoles
    @end

                                                …
    @interface NSAppleMenuItemRepresentedObject : NSObject
    {
        NSString *_title;
        NSImage *_image;
        NSString *_domainName;
        NSString *_key;
                                                              Classes
        NSArray *_submenuRepresentedObjects;
        NSDictionary *_dictionary;
    }

                                                …

                                                             Catégories
    @interface NSApplication (NSAppleMenuPrivate)
    - (void)_updateAppleMenu:(id)fp8;
    @end
Démo
class-dump
Support

 Binaires Mac OS X et iOS
 Binaires 32-bits et 64-bits


Ressources

 Éxécutable + code source       ( non utilisable dans les parkings souterrains )

 http://www.codethecode.com/projects/class-dump/
otool
otool




 “Permet d’afficher la matrice et un peu plus si affinité”
Démo
otool
Support

 Binaires Mac OS X et iOS
 Binaires 32-bits et 64-bits


Ressources

 Éxécutable + code source        ( APSL + GPL? )

 /usr/bin/otool
 http://opensource.apple.com/source/cctools/cctools-750/
otx
otx




      “otool pour ceux quibastard son la matrice.”
                   otool’s ne lisent pas
Démo
otx
Support

 Binaires Mac OS X
 Binaires 32-bits (PowerPC et Intel)


Ressources

 Éxécutable + code source     ( domaine public )
 http://otx.osxninja.com/
etc.
etc.
 IDA Pro
 http://www.hex-rays.com/idapro/

 strings

 /usr/bin/strings

Ressources
 Spelunking OS X
 http://ideveloper.tv/freevideo
cocotron & GNUstep
cocotron & GNUstep
Ressources

 http://www.cocotron.org/                 ( MIT License )

 http://savannah.gnu.org/projects/gnustep ( GPL )
Obfuscation
“Je vous demande de vous arrêter.”
Obfuscation
Renommage des classes, méthodes, données membres

#define PWLicenseCenterDelegate seNYECN0G0i
#define setIsLicensed                        setRcjyzqqe2Atvjiitq

Exemple stupide pour masquer des chaînes à strings
#include <stdio.h>

int main (int argc, const char * argv[])
{
        char tString[16];
	
	      tString[0]='H';tString[1]='e';tString[2]='l';tString[3]='l';tString[4]='o';tString[5]=',';tString[6]='
';tString[7]='W';tString[8]='o';tString[9]='r';tString[10]='d';tString[11]='!';tString[12]='n';tString[13]=0;
	
	      printf("%s",tString);
	      printf("Hello, Excel!n");

	    return 0;
}
CocoaHeads.fr
One more thing
Cong
Démo
Cong
Support

 Mac OS X bundles
 Mac OS X v10.5 ou ultérieur


Ressources

 Éxécutable + un peu du code source                ( BSD )
 http://s.sudre.free.fr/Software/Cong/about.html
CocoaHeads.fr

Contenu connexe

En vedette

Déploiement ad hoc et beta test
Déploiement ad hoc et beta testDéploiement ad hoc et beta test
Déploiement ad hoc et beta testCocoaHeads.fr
 
Position paper june 10
Position paper june 10Position paper june 10
Position paper june 10Erinjepeck
 
Wireless ad hoc distribution
Wireless ad hoc distributionWireless ad hoc distribution
Wireless ad hoc distributionCocoaHeads.fr
 
Video Composition Rules
Video Composition RulesVideo Composition Rules
Video Composition Rulessanthak
 
Defnydd trydan Ysgol y Frenni
Defnydd trydan Ysgol y FrenniDefnydd trydan Ysgol y Frenni
Defnydd trydan Ysgol y FrenniMrs Serena Davies
 
Method Shelters : Another Way to Resolve Class Extension Conflicts
Method Shelters : Another Way to Resolve Class Extension Conflicts Method Shelters : Another Way to Resolve Class Extension Conflicts
Method Shelters : Another Way to Resolve Class Extension Conflicts S Akai
 
よくわかるオンドゥル語
よくわかるオンドゥル語よくわかるオンドゥル語
よくわかるオンドゥル語S Akai
 
RubyistのためのObjective-C入門
RubyistのためのObjective-C入門RubyistのためのObjective-C入門
RubyistのためのObjective-C入門S Akai
 
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたスマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたTaro Matsuzawa
 
Romafs
RomafsRomafs
RomafsS Akai
 
Beginning to iPhone development
Beginning to iPhone developmentBeginning to iPhone development
Beginning to iPhone developmentVonbo
 
Objective-C Survives
Objective-C SurvivesObjective-C Survives
Objective-C SurvivesS Akai
 
Video + Photo Shooting Tips
Video + Photo Shooting TipsVideo + Photo Shooting Tips
Video + Photo Shooting Tipsmirjamschaap
 
Composing Basic Camera Shots
Composing Basic Camera ShotsComposing Basic Camera Shots
Composing Basic Camera Shotssanthak
 

En vedette (20)

Organic quality
Organic qualityOrganic quality
Organic quality
 
Hello xcode 4 v2
Hello xcode 4 v2Hello xcode 4 v2
Hello xcode 4 v2
 
Mac app store redux
Mac app store reduxMac app store redux
Mac app store redux
 
Déploiement ad hoc et beta test
Déploiement ad hoc et beta testDéploiement ad hoc et beta test
Déploiement ad hoc et beta test
 
Position paper june 10
Position paper june 10Position paper june 10
Position paper june 10
 
Wireless ad hoc distribution
Wireless ad hoc distributionWireless ad hoc distribution
Wireless ad hoc distribution
 
Video Composition Rules
Video Composition RulesVideo Composition Rules
Video Composition Rules
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Bitmaps
BitmapsBitmaps
Bitmaps
 
Tales@tdc
Tales@tdcTales@tdc
Tales@tdc
 
Defnydd trydan Ysgol y Frenni
Defnydd trydan Ysgol y FrenniDefnydd trydan Ysgol y Frenni
Defnydd trydan Ysgol y Frenni
 
Method Shelters : Another Way to Resolve Class Extension Conflicts
Method Shelters : Another Way to Resolve Class Extension Conflicts Method Shelters : Another Way to Resolve Class Extension Conflicts
Method Shelters : Another Way to Resolve Class Extension Conflicts
 
よくわかるオンドゥル語
よくわかるオンドゥル語よくわかるオンドゥル語
よくわかるオンドゥル語
 
RubyistのためのObjective-C入門
RubyistのためのObjective-C入門RubyistのためのObjective-C入門
RubyistのためのObjective-C入門
 
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたスマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
 
Romafs
RomafsRomafs
Romafs
 
Beginning to iPhone development
Beginning to iPhone developmentBeginning to iPhone development
Beginning to iPhone development
 
Objective-C Survives
Objective-C SurvivesObjective-C Survives
Objective-C Survives
 
Video + Photo Shooting Tips
Video + Photo Shooting TipsVideo + Photo Shooting Tips
Video + Photo Shooting Tips
 
Composing Basic Camera Shots
Composing Basic Camera ShotsComposing Basic Camera Shots
Composing Basic Camera Shots
 

Similaire à Présentation gnireenigne

Android rendu et performance - 17 avril 2012
Android rendu et performance - 17 avril 2012Android rendu et performance - 17 avril 2012
Android rendu et performance - 17 avril 2012Paris Android User Group
 
gRPC, ECHANGES A HAUTE FREQUENCE ! DEVOXX 2018
gRPC, ECHANGES A HAUTE FREQUENCE ! DEVOXX 2018gRPC, ECHANGES A HAUTE FREQUENCE ! DEVOXX 2018
gRPC, ECHANGES A HAUTE FREQUENCE ! DEVOXX 2018Carles Sistare
 
gRPC, échange à haute fréquence !
gRPC, échange à haute fréquence !gRPC, échange à haute fréquence !
gRPC, échange à haute fréquence !David Caramelo
 
Sec day cuckoo_workshop
Sec day cuckoo_workshopSec day cuckoo_workshop
Sec day cuckoo_workshopThomas Roccia
 
ALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssemblyALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssemblyAlexandru Radovici
 
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Trésor-Dux LEBANDA
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !Carles Sistare
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!David Caramelo
 
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cashSthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cashStHack
 
[Paris Unity3D meetup] - Système d’instancing dans endless legend reskin
[Paris Unity3D meetup] - Système d’instancing dans endless legend reskin[Paris Unity3D meetup] - Système d’instancing dans endless legend reskin
[Paris Unity3D meetup] - Système d’instancing dans endless legend reskinBeMyApp
 
How with Suricata you save the world - NDH2K14
How with Suricata you save the world - NDH2K14How with Suricata you save the world - NDH2K14
How with Suricata you save the world - NDH2K14Sebastien Larinier
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...Pôle Systematic Paris-Region
 

Similaire à Présentation gnireenigne (20)

Hackerspace jan-2013
Hackerspace jan-2013Hackerspace jan-2013
Hackerspace jan-2013
 
Android rendu et performance - 17 avril 2012
Android rendu et performance - 17 avril 2012Android rendu et performance - 17 avril 2012
Android rendu et performance - 17 avril 2012
 
gRPC, ECHANGES A HAUTE FREQUENCE ! DEVOXX 2018
gRPC, ECHANGES A HAUTE FREQUENCE ! DEVOXX 2018gRPC, ECHANGES A HAUTE FREQUENCE ! DEVOXX 2018
gRPC, ECHANGES A HAUTE FREQUENCE ! DEVOXX 2018
 
Formation python
Formation pythonFormation python
Formation python
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
gRPC, échange à haute fréquence !
gRPC, échange à haute fréquence !gRPC, échange à haute fréquence !
gRPC, échange à haute fréquence !
 
Sec day cuckoo_workshop
Sec day cuckoo_workshopSec day cuckoo_workshop
Sec day cuckoo_workshop
 
1 2-3-grails
1 2-3-grails1 2-3-grails
1 2-3-grails
 
ALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssemblyALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssembly
 
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!
 
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cashSthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
 
[Paris Unity3D meetup] - Système d’instancing dans endless legend reskin
[Paris Unity3D meetup] - Système d’instancing dans endless legend reskin[Paris Unity3D meetup] - Système d’instancing dans endless legend reskin
[Paris Unity3D meetup] - Système d’instancing dans endless legend reskin
 
How with Suricata you save the world - NDH2K14
How with Suricata you save the world - NDH2K14How with Suricata you save the world - NDH2K14
How with Suricata you save the world - NDH2K14
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
Atelier IDS SNORT
Atelier IDS SNORTAtelier IDS SNORT
Atelier IDS SNORT
 
Ogre 3D : une introduction
Ogre 3D : une introductionOgre 3D : une introduction
Ogre 3D : une introduction
 
Easy recovery621 user guide fr
Easy recovery621 user guide frEasy recovery621 user guide fr
Easy recovery621 user guide fr
 
Easy recovery621 user guide fr
Easy recovery621 user guide frEasy recovery621 user guide fr
Easy recovery621 user guide fr
 

Plus de CocoaHeads.fr

Automatisation shipping process
Automatisation shipping processAutomatisation shipping process
Automatisation shipping processCocoaHeads.fr
 
Slides de la Localisation
Slides de la LocalisationSlides de la Localisation
Slides de la LocalisationCocoaHeads.fr
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de MarsCocoaHeads.fr
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de MarsCocoaHeads.fr
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de MarsCocoaHeads.fr
 

Plus de CocoaHeads.fr (7)

Automatisation shipping process
Automatisation shipping processAutomatisation shipping process
Automatisation shipping process
 
Slides de la
Slides de la Slides de la
Slides de la
 
Slides de la Localisation
Slides de la LocalisationSlides de la Localisation
Slides de la Localisation
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de Mars
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de Mars
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de Mars
 

Présentation gnireenigne

  • 2. gnireenigne Les outils du mal
  • 4. “Alors, c’est l’histoire d’un crash…” 2011-01-17 11:32:53.186 packagemaker[7547:903] -[PMCLIFakeDocument alertDispatcher]: unrecognized selector sent to instance 0x209640 2011-01-17 11:32:53.187 packagemaker[7547:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PMCLIFakeDocument alertDispatcher]: unrecognized selector sent to instance 0x209640' *** Call stack at first throw: ( 0 CoreFoundation 0x9579b6ba __raiseError + 410 1 libobjc.A.dylib 0x96940509 objc_exception_throw + 56 2 CoreFoundation 0x957e890b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 3 CoreFoundation 0x95741c36 ___forwarding___ + 950 4 CoreFoundation 0x95741802 _CF_forwarding_prep_0 + 50 5 packagemaker 0x0009c076 0x0 + 639094 6 Foundation 0x91b06ab1 __NSFireDelayedPerform + 537 7 CoreFoundation 0x95705adb __CFRunLoopRun + 8059 8 CoreFoundation 0x95703464 CFRunLoopRunSpecific + 452 9 CoreFoundation 0x95703291 CFRunLoopRunInMode + 97 10 Foundation 0x91b7f8d1 -[NSConcreteTask waitUntilExit] + 273 11 packagemaker 0x000714e2 0x0 + 464098 12 packagemaker 0x00046cd3 0x0 + 290003 13 packagemaker 0x0001c546 0x0 + 116038 14 packagemaker 0x0001c5dd 0x0 + 116189 15 packagemaker 0x0001c5dd 0x0 + 116189 16 packagemaker 0x0001c5dd 0x0 + 116189 17 packagemaker 0x0001c5dd 0x0 + 116189 18 packagemaker 0x0001c5dd 0x0 + 116189 19 packagemaker 0x000469f9 0x0 + 289273 20 packagemaker 0x0003213f 0x0 + 205119 21 packagemaker 0x00032a0b 0x0 + 207371 22 packagemaker 0x00033362 0x0 + 209762 23 packagemaker 0x000316f3 0x0 + 202483 24 packagemaker 0x0003efc2 0x0 + 257986 25 packagemaker 0x000304cf 0x0 + 197839 26 packagemaker 0x0006a7d9 0x0 + 436185 27 packagemaker 0x00069e07 0x0 + 433671 28 packagemaker 0x00002bca 0x0 + 11210 29 packagemaker 0x00002ba9 0x0 + 11177
  • 6. class-dump “Si vous avez des classes qui ne doivent être connues de personne, peut-être ne devriez vous pas les coder.”
  • 7. class-dump typedef struct { struct _NSModalSession *_field1; char _field2; id _field3; Structures } CDAnonymousStruct14; … @protocol NSCoding - (void)encodeWithCoder:(id)fp8; - (id)initWithCoder:(id)fp8; Protocoles @end … @interface NSAppleMenuItemRepresentedObject : NSObject { NSString *_title; NSImage *_image; NSString *_domainName; NSString *_key; Classes NSArray *_submenuRepresentedObjects; NSDictionary *_dictionary; } … Catégories @interface NSApplication (NSAppleMenuPrivate) - (void)_updateAppleMenu:(id)fp8; @end
  • 9. class-dump Support Binaires Mac OS X et iOS Binaires 32-bits et 64-bits Ressources Éxécutable + code source ( non utilisable dans les parkings souterrains ) http://www.codethecode.com/projects/class-dump/
  • 10. otool
  • 11. otool “Permet d’afficher la matrice et un peu plus si affinité”
  • 12. Démo
  • 13. otool Support Binaires Mac OS X et iOS Binaires 32-bits et 64-bits Ressources Éxécutable + code source ( APSL + GPL? ) /usr/bin/otool http://opensource.apple.com/source/cctools/cctools-750/
  • 14. otx
  • 15. otx “otool pour ceux quibastard son la matrice.” otool’s ne lisent pas
  • 16. Démo
  • 17. otx Support Binaires Mac OS X Binaires 32-bits (PowerPC et Intel) Ressources Éxécutable + code source ( domaine public ) http://otx.osxninja.com/
  • 18. etc.
  • 19. etc. IDA Pro http://www.hex-rays.com/idapro/ strings /usr/bin/strings Ressources Spelunking OS X http://ideveloper.tv/freevideo
  • 21. cocotron & GNUstep Ressources http://www.cocotron.org/ ( MIT License ) http://savannah.gnu.org/projects/gnustep ( GPL )
  • 22. Obfuscation “Je vous demande de vous arrêter.”
  • 23. Obfuscation Renommage des classes, méthodes, données membres #define PWLicenseCenterDelegate seNYECN0G0i #define setIsLicensed setRcjyzqqe2Atvjiitq Exemple stupide pour masquer des chaînes à strings #include <stdio.h> int main (int argc, const char * argv[]) { char tString[16]; tString[0]='H';tString[1]='e';tString[2]='l';tString[3]='l';tString[4]='o';tString[5]=',';tString[6]=' ';tString[7]='W';tString[8]='o';tString[9]='r';tString[10]='d';tString[11]='!';tString[12]='n';tString[13]=0; printf("%s",tString); printf("Hello, Excel!n"); return 0; }
  • 26. Cong
  • 27.
  • 28.
  • 29. Démo
  • 30. Cong Support Mac OS X bundles Mac OS X v10.5 ou ultérieur Ressources Éxécutable + un peu du code source ( BSD ) http://s.sudre.free.fr/Software/Cong/about.html