Assembly Code Programming Course
Duration: 5 Days | Price: $2695 | Class Dates: Choose a CityView All Cities -or-AL - Huntsville AR - Little Rock AZ - Phoenix AZ - Tucson CA - Bakersfield CA - Fresno CA - Irvine CA - Los Angeles CA - Modesto CA - Oakland CA - Riverside CA - Sacramento CA - San Diego CA - San Francisco CA - San Jose CA - Santa Clarita CA - Santa Monica CA - Temecula CO - Denver CT - Hartford CT - New Haven CT - Stamford DC - Washington FL - Fort Lauderdale FL - Jacksonville FL - Miami FL - Orlando FL - Pensacola FL - Sarasota FL - Tampa FL - West Palm Beach GA - Atlanta GA - Savannah IA - Cedar Rapids IA - Des Moines ID - Boise IL - Chicago IL - Schaumburg IL - Springfield IN - Indianapolis KY - Louisville LA - Shreveport MA - Boston MA - Chelmsford MA - Quincy MA - Springfield MA - Waltham MA - Woburn MA - Worcester MD - Baltimore MD - Columbia MI - Detroit MI - Lansing MN - Minneapolis MO - Kansas City MO - Springfield MO - St. Charles NC - Charlotte NC - Raleigh-Durham NC - Winston-Salem NE - Omaha NH - Manchester NH - Nashua NJ - Jersey City NJ - Newark NJ - Princeton NM - Albuquerque NM - Las Cruces NV - Las Vegas NY - Albany NY - Binghamton NY - Buffalo NY - Ithaca NY - Manhattan NY - Rochester NY - Syracuse NY - Watertown OH - Cincinnati OH - Cleveland OH - Columbus OH - Dayton OK - Oklahoma City OK - Tulsa OR - Portland PA - Harrisburg PA - Philadelphia PA - Pittsburgh RI - Providence SC - Charleston TN - Memphis TN - Nashville TX - Austin TX - Corpus Christi TX - Dallas TX - El Paso TX - Fort Worth TX - Houston TX - San Antonio UT - Salt Lake City VA - Alexandria VA - Fairfax VA - Norfolk VA - Richmond VA - Williamsburg WA - Seattle WA - Spokane WI - Milwaukee
Course Description: This hands on assembly code training course introduces students to the concepts of machine code and assembly code. Emphasis is on using this knowledge for analysis of code, rather than in creating code, but code creation is taught, and most of the exercises involve writing small subroutines in assembly code. Discussion of how to analyze obscure bugs caused by malfunctioning C or C++ code will be discussed, particularly how to read crash dumps of both applications and kernel code. The course can be of use to support engineers who have to be concerned with analyzing bugs caused by erroneous or deliberately malicious code. But it also applies in general to anyone who needs to know how the basic computer operates. The course is also useful for those working with embedded systems where they must create capabilities outside the specifications of the C language or similar programming environments.
The course is primarily focused on programming in user space in 32 bit and 64 bit architectures. Labs that involve running code will use the 32-bit environment, but other labs which involve studying code will also consider the 64-bit compiler environment.
The course will study both hand-written assembly code and examination of code generated by the compiler, including debug mode code and optimized code. Optimized code will be examined carefully because it illustrates the difficulties of reverse-engineering source code from executable code. Labs will include exercises in reconstructing source code from optimized object code.
Methods of reading kernel memory dumps will be addressed, with particular emphasis on the kinds of bugs that require detailed knowledge of assembly code to examine and explain. This involves a brief overview of device driver architecture and hardware interfacing issues.
The course is taught on Microsoft Windows, using Microsoft tools (Visual Studio, ml and ml64 assemblers, WinDbg). However, the basic principles apply to all assembly language programming environments for the x86, although details of the tools, include fine points of assembler syntax, may differ on various platforms. Therefore, the basic knowledge is applicable to Unix, linux, Solaris, Mac OS X, Intel assembler and embedded x86 environments.
Audience: This course is designed to introduce programmers who may never have looked at assembly-level code or understood what they were looking at if they saw it; those programmers who wish to become more fluent in reading assembly code; those programmers who may need to write high-performance code using the SSE-class (SIMD) instructions.
Although the course is taught using the Microsoft tools, the concepts of assembler are applicable to any x86 or x64 environment, so the course is suitable for UNIX/Linux programmers.While the interactions may be slightly unfamiliar, the core concepts are identical. A version of vim will be available as an editor for those who prefer it.
Course Prerequisites: Programming experience. Previous experience with C and/or C++, since examples will rely on C/C++ usage and reverse-engineering will concentrate on showing how to deduce source code from compiler-generated assembly code.
High-Level Compiler Directives
Birmingham Bristol Chelmsford Edinburgh Glasgow Leeds Liverpool London Manchester
Hands On Technology Transfer, Inc. 1 Village Square, Suite 8 14 Fletcher Street Chelmsford, MA 01824 1-800-413-0939 | 1-978-250-4299
Copyright© Hands On Technology Transfer, Inc.