Getting Hooked on Profiling


Details
Astuces et techniques d'analyse dynamique des exécutables C++ sans `marqueurs`.
Le profilage peut donner une vue d'ensemble de ce qui se passe dans une application. Toutefois, les approches de profilage basées sur l'instrumentation du code et l'échantillonnage ont leurs limites (temps des itérations, accès au code source, configuration du profileur).
Cette présentation montrera comment il est possible d'exploiter l'information générée par le compilateur pour fins de débogage (pdb) pour analyser un exécutable autrement inconnu. Certains sujets normalement associés au hacking tel que l'injection dynamique et l'auto-modification de code seront présentés dans un contexte de développement d'outils de débogage capables d'effectuer de l'instrumentation dynamique. De plus, des sujets tel que l'interface binaire de l'application (ABI), les conventions d'appel de fonction, le passage de paramètre, l'analyse du format pdb, le traçage d'événements et les `hooks` seront également abordés afin de comprendre le fonctionnement interne d'un profileur léger et robuste. Finalement, nous verrons comment les profileurs peuvent être utilisés par le développeur pour acquérir une connaissance plus approfondie d'une application complexe en accrochant des `hooks` dans des exécutables complètement optimisés, bâtis avec des engins connus tel que Unreal, Unity et Lumberyard.
La rencontre a lieu dans les bureaux d'Ubisoft à Montréal, au 5480 rue Saint-Dominique. Les portes seront ouvertes à partir de 18h. De la pizza sera servie sur place, gracieuseté de notre commanditaire Druide Informatique inc. La présentation commencera vers 19h, sera d'une durée d'environ 50 minutes et sera donnée en anglais par Pierric Gimmig.
Pierric Gimmig est un développeur passionné par l'animation, la simulation de physique et la programmation de systèmes. Il a travaillé sur plusieurs titres incluant notamment Assassin's Creed, L.A. Noire et Batman Arkham Origins. Il est présentement le développeur principal d'Orbit, un profileur de nouvelle génération pour le C++.
=====
Tricks and Techniques for Markerless Dynamic Analysis of C++ Executables
Profiling can give us tremendous insight on what is going on in our applications. However, common approaches like manual instrumentation and sampling profiling have their limitations (iteration time, access to source code, "profile" configurations...).
This talk will present how we can leverage the information present in compiler generated debug files (pdb) to crack open an otherwise unknown executable. Topics generally associated with hacking such as runtime injection and self-modifying code will be presented in the context of building powerful developer tools capable of runtime instrumentation. Moreover, subjects such as application binary interface, calling conventions, parameter passing, pdb parsing, event tracing and hooking will be discussed in order to understand the inner workings of a robust and light weight profiler. Finally, we will see how profiling tools can be used to give the developer a deep understanding of what is happening in a complex application by hooking into highly optimized builds of well-known game engines such as Unreal, Unity and Lumberyard.
This meetup will be held in Ubisoft's Montreal office, 5480 Saint-Dominique street. The doors open at 6 pm. Pizza will be served, thanks to our sponsor Druide Informatique inc. The talk will start at 7 pm, will last about 50 minutes and will be given in English by Pierric Gimmig.
Pierric Gimmig is a software engineer with a passion for animation, physics simulation and system programming. He has worked on titles including Assassin's Creed, L.A. Noire and Batman Arkham Origins. He is now the main developer of Orbit, a next-generation profiling tool for C++.

Getting Hooked on Profiling