Learning Assembly Language

Learning Assembly Language

English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 3h 04m | 535 MB

In this course, instructor Malcolm Shore offers you a hands-on introduction to programming in both the 32 bit and 64 bit x86 assembler and shows how you can use it to access system functions through the Windows API. First, Malcolm shows you how to install and test the GoAsm assembler, the Easy Code IDE, and the x64 debugger. He explains how to build a complex data structure and how to manipulate constants, registers, and main memory. He shows you how to write and call subprograms and how to manipulate information as an array. Then Malcolm goes into the Windows API and how to use it. He describes how to run a system command from inside an assembler program, as well as how to code and use jump tables. Next, he steps you through how to use what you’ve learned to complete an enigmatic encryptor. After showing you how to resolve some security issues in the assembler, Malcolm concludes with several examples of how you can run assembly code from another language with assembler subprograms.

Table of Contents

1 Understanding low-level programming in assembler
2 What you should know

Preparing Your Assembler Environment
3 Introduction to assembly language
4 Setting up your development environment
5 Setting up GoAsm in the IDE
6 Developing an Enigma-like file encryptor

Coding in Assembler I
7 Setting up a program skeleton
8 Understanding registers and memory
9 Data types
10 Using data structures
11 The move and exchange instructions
12 Extended move instructions
13 Logical or bitwise operators
14 Arithmetic operators
15 Controlling the assembler flow
16 Indirect addressing and pointers
17 Console Input and output
18 Challenge
19 Solution

Coding in Assembler II
20 Calling subprograms
21 Working with floating point
22 Managing arrays
23 Adding plugs to the Enigmatic encryptor
24 The Windows API
25 More on the Windows API
26 Calling the printf external function
27 Executing system commands
28 Jump tables
29 Reading data files

Completing the Enigmatic Encryptor
30 Adding a menu and jump table to the Enigmatic encryptor
31 Reading and writing the Enigmatic configuration
32 Ciphering the data
33 Leveraging the x64 AES instructions
34 Challenge Decryption function
35 Solution Decryption function

Security Issues in Assembler
36 Writing a vulnerable assembler program
37 Taking control flow
38 Executing code from the data section

Using Assembly Language in Other Languages
39 Calling assembler from other languages
40 Using NASM
41 Calling assembler routines from C
42 Executing assembler in Python

43 Whats next