L'assembleur x86 sous Windows avec Nasm en partant d'un niveau débutant à expert

a marqué ce sujet comme résolu.

Bonjour par ici ! Je suis êxtrèment heureux d’annoncer que je viens d’achever un livre qui reprends les bases en ASM. Il est orienté débutant mais il va également dans les sujets assez avancés. Si la cybersécurité vous intéresse, ce livre aborde les bases pour devenir de vrai hackers (des gentils hein :-° ). Si par contre c’est la création de système d’exploitation qui vous intéresse, le livre vous permettra de naviguer les obscures tutos sur le net qui en parlent.

un chapitre entier est disponible gratuitement à l’adresse https://x86asmdemystified.landen.co

J’attends vos avis. Merci.

+0 -0

Salut,

Sur la forme :

  • On retrouve assez rapidement quelques coquilles. De plus, certaines règles de la typographie française ne sont pas correctement respectées, notamment pour les points d’exclamation et d’interrogation.
  • Aucun numéro de page, de rappel du chapitre en cours sur les haut et bas de page.
  • Des titres en fin de page avec le contenu qui ne commence qu’à la page suivante.
  • On reçoit un example papier ou c’est uniquement numérique ? (auquel cas 20 euros me semble vraiment trop)

Sur le contenu :

  • J’ai du mal à voir comment avec si peu de chapitre consacré à la sécurité le lecteur deviendra un "vrai hacker". Comment le justifies-tu ?
  • Où sont les réponses des quizz ?

Mon avis personnel :
Le chapitre gratuit faisant office de grosse introduction, à mon goût, il ne donne pas une idée suffisante sur le reste du contenu pour acheter le livre.

ShiiFu

+2 -0

Salut ShiiFu,

Sur la forme, rien à redire. Il faut dire que j’ai généré le sample à partir d’une version avant correction. Je m’en excuse et je vais le mettre à jour.

Pour les chapitres sur la sécurité, le but du livre est d’avoir de solides bases en ASM pour avancer. Donc je m’attarde à introduire et je donne des sections "Aller plus loin" qui permettent de vraiment approfondir les acquis plus facilement à cause des bases bien abordées.

En bref, le livre traitement de L’ASM. Mais das la pratique la sécurité est abordée. Une fois le lecteur mis "dans le bain" il se défend plus facilement avec la pléthore d’articles disponibles sur le net qui étaient dificiles à comprendre. Mais dans le volume 2 du livre les pratiques qui suivent abordent des concepts plus complexes

Pour les réponses des quiz elles sont dans le livre.

Pour finir je pense que quand tu auras le livre entre tes mains tu seras d’avis qu’il vaut la peine car je prends vraiment le temps d’aller au fond de chaque sujet de manière a rendre le lecteur autonome

+1 -0

Salut !

J’ai été contacté par le PO par MP pour donner un avis sur le draft de son ouvrage et j’ai jugé utile qu’il en parle ici (merci beaucoup pour ton retour ShiiFu).

Je n’ai rien à ajouter si ce n’est que je saluerai encore et toujours chaque tentative de vulgarisation d’un sujet qui à mes yeux est passionnant et un petit peu ésotérique, dans un domaine et une industrie où on s’éloigne de plus en plus de la machine. Même les notions abordées à l’école ne sont pas suffisantes pour comprendre ce qu’il se passe "par la pratique".

Ceci plus cette volonté et cette envie de comprendre les choses (tel un "hacker" comme le décrit Khaled) ont justifié ma série d’articles. Le temps me fait défaut pour continuer cela dit, et je ne peux que m’émouvoir qu’il existe des gens prêts à offrir leur vision des choses dans la communauté francophone.

Je pense que ce projet peut aussi intéresser @Fumble et d’autres friands de bas niveau. N’hésitez pas à vous manifester.

Merci Ge0. Effectivement mon but est de vraiment faire comprendre les choses et de susciter une envie "d’aller loin". L’assembleur est en train de revenir au gout du jour et les sites qui classent les langages voient une petite hausse de ce coté là. Malheuseuseent il n’y carrément pas de resources sur le net qui permette de vraiment d’utiliser ce langage.

En plus, il est vraiment dur voir impossible de découvrir des failles applicatives sans connaitre correctement ce langage. Je me suis donc engagé à fournir une ressource digne de ce nom.

Salut,

Comme Ge0, je suis heureux de voir naître des supports récents permettant de s’intéresser à l’Assembleur. Toutefois, sans pouvoir en juger totalement n’ayant accès qu’au début du livre, je me permets d’émettre quelques réserves quant à certaines affirmations.

Il est de mon devoir de ralentir la cadence. Vous ne pourrez pas dès le départ, créer des jeux 2D/3D ou des logiciels révolutionnaires. Par contre avec de la persévérance et de la pratique vous serez peut être le prochain géant de l’informatique.

Ouais… Alors des jeux 2D ou 3D en Assembleur, j’ai pas de doute sur le fait que cela soit faisable, mais cela me semble quand même énorme de le suggérer de la sorte…

Un programme écrit en ASM occupe moins d’espace en mémoire. Cela peut rendre rapide l’exécution d’un programme. En effet, ce dernier, pourrait être complètement chargé en mémoire cache grâce à sa petite taille ;

À nouveau, il me semble que des « vérités » sont balancées un peu rapidement et sans nuances. « Un programme écrit en ASM occupe moins d’espace en mémoire » : source et par rapport à quoi ?

cette compréhension de la machine vous permettra de créer des programmes plus performants dans d’autres langage.

J’en doute, à partir du moment où l’on emploie un langage de haut niveau (comprendre, comme préciser dans le livre : hors Assembleur), connaître les détails techniques est finalement assez peu utile, voire contre-productif.

+1 -0

Bonsoir Taurre! Merci pour les avis.

Alors

Ouais… Alors des jeux 2D ou 3D en Assembleur, j’ai pas de doute sur le fait que cela soit faisable, mais cela me semble quand même énorme de le suggérer de la sorte…

Voici un lien qui, je pense, devrait te convaincre non seulement de la faisabilité, mais peut être aussi des quelques avantages. https://www.codeproject.com/Articles/1190423/DirectX-and-Pure-Assembly-Language-Doing-What-Cant Cela dit, je ne suggère pas non plus d’aller dans cette direction sans prendre en compte les pours et contres

À nouveau, il me semble que des « vérités » sont balancées un peu rapidement et sans nuances. « Un programme écrit en ASM occupe moins d’espace en mémoire » : source et par rapport à quoi ?

C’est vrai que sans contexte, cela semble un peu dure à avaler. En fait sans trop aller dans les détails, si les options d’optimisation du compilo ne sont pas utiliser, le code assembleur généré par le compilo
pourrait être moins compacte (je parle du fichier exécutable. Pas du processus en mémoire) que celui écrit par un programmeur. Les raisons peuvent varier. La plus pertinante étant l’utilisation de la section bss pour la déclaration de variables.

J’en doute, à partir du moment où l’on emploie un langage de haut niveau (comprendre, comme préciser dans le livre : hors Assembleur), connaître les détails techniques est finalement assez peu utile, voire contre-productif.

le premier exemple qui me vient à l’esprit est l’alignement mémoire (il y a aussi la pile et les procédures, les segments du programme…). C’est un concept qu’on ne peut éviter en ASM. Mais en C on peut ne pas le connaitre et continuer à programmer. Ce sont ces genres de concepts qui permettent au programmeur ASM de mieux appréhender les dessous d’un langage de haut niveau comme le C (comparé à l’ASM)

+0 -0

Voici un lien qui, je pense, devrait te convaincre non seulement de la faisabilité, mais peut être aussi des quelques avantages. https://www.codeproject.com/Articles/1190423/DirectX-and-Pure-Assembly-Language-Doing-What-Cant Cela dit, je ne suggère pas non plus d’aller dans cette direction sans prendre en compte les pours et contres

ahounoukhaled

Merci pour le lien.
Je n’avais pas de doute quant à la faisabilité de la chose, simplement, écrire un tel programme en Assembleur est juste du suicide. L’auteur de la suite de billets reconnaît lui-même l’horreur de la chose sur plusieurs aspects.

On that note, the task is a nightmare. Through experience, I’ve discovered that simply reading the types out of these structure declarations is not enough.

Ne parlons même pas de la maintenance ou de la (re)lecture du code qui deviens juste vite impossible. Laisser sous-entendre à des débutants qu’ils pourront créer des jeux vidéos en apprenant l’Assembleur me paraît franchement captieux tant cela demande des efforts massifs.

le premier exemple qui me vient à l’esprit est l’alignement mémoire (il y a aussi la pile et les procédures, les segments du programme…). C’est un concept qu’on ne peut éviter en ASM. Mais en C on peut ne pas le connaitre et continuer à programmer. Ce sont ces genres de concepts qui permettent au programmeur ASM de mieux appréhender les dessous d’un langage de haut niveau comme le C (comparé à l’ASM)

ahounoukhaled

Je suis le premier à dire qu’il est bon de connaître tout ceci, ne fût ce que par curiosité et parce que c’est intéressant, mais ces concepts n’ont pas d’utilité directe lorsque l’on utilise un langage de haut niveau.

Pour reprendre l’exemple de l’alignement, on en touche un mot dans le tuto C présent sur ce site parce que cela est nécessaire pour expliquer la taille des structures, mais très franchement, cela n’a aucune utilité pratique sauf à écrire du code bas niveau (un allocateur de mémoire, lui, doit prendre en compte l’alignement par exemple), ce qui est rare, voire très rare.

Dans la même veine, la connaissance des segments ou de la pile n’est pas nécessaire en C et peut même être contre-productive étant donné que ce ne sont pas ces concepts qui comptent mais le modèle décrit dans la norme.

Comprenons-nous bien : je ne dis pas que ces choses ne doivent pas être apprises, mais qu’il est faux de dire qu’elles permettent de mieux programmer avec un langage de haut niveau.

+0 -0

Comprenons-nous bien : je ne dis pas que ces choses ne doivent pas être apprises, mais qu’il est faux de dire qu’elles permettent de mieux programmer avec un langage de haut niveau.

J’ai bien compris. Mais je soutiens quand même que cela aide.

Si je prends par exemple la façon dont fonctionne la pile lors de l’appelle des fonctions, ça aide grandement à comprendre pourquoi utiliser une version sécurisée de scanf ou carrément l’eviter est utile.

Pour le cas de l’alignement mémoire, on comprend mieux comment optimiser l’ordre de déclaration des données à l’intérieure des structures pour éviter des cas de latence mémoire (si padding par compilo non activé).

Pour les 64 bits, on comprend pourquoi les propgrammes prennent tant de mémoire (alignement mémoires obligé, shadow parameters dans le stack) et comment mieux codé pour optimiser ces cas.

Ces détails sont plus accessible en ASM qu’en C par exemple (bien qu’ils le soient aussi) et permettent tout compte de réfléchir à deux fois pour programmer.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte