Mastering Assembly Programming

Alexey Lyashko

  • 出版商: Packt Publishing
  • 出版日期: 2017-09-27
  • 售價: $1,770
  • 貴賓價: 9.5$1,682
  • 語言: 英文
  • 頁數: 290
  • 裝訂: Paperback
  • ISBN: 1787287483
  • ISBN-13: 9781787287488
  • 相關分類: Assembly
  • 下單後立即進貨 (約3~4週)

商品描述

Key Features

  • Understand the Assembly programming concepts and the benefits of examining the AL codes generated from high level languages
  • Learn to incorporate the assembly language routines in your high level language applications
  • Understand how a CPU works when programming in high level languages

Book Description

The Assembly language is the lowest level human readable programming language on any platform. Knowing the way things are on the Assembly level will help developers design their code in a much more elegant and efficient way. It may be produced by compiling source code from a high-level programming language (such as C/C++) but can also be written from scratch. Assembly code can be converted to machine code using an assembler.

The first section of the book starts with setting up the development environment on Windows and Linux, mentioning most common toolchains. The reader is led through the basic structure of CPU and memory, and is presented the most important Assembly instructions through examples for both Windows and Linux, 32 and 64 bits. Then the reader would understand how high level languages are translated into Assembly and then compiled into object code. Finally we will cover patching existing code, either legacy code without sources or a running code in same or remote process.

What you will learn

  • Obtain deeper understanding of the underlying platform
  • Understand binary arithmetic and logic operations
  • Create elegant and efficient code in Assembly language
  • Understand how to link Assembly code to outer world
  • Obtain in-depth understanding of relevant internal mechanisms of Intel CPU
  • Write stable, efficient and elegant patches for running processes

About the Author

Alexey Lyashko is an Assembly language addict, independent software reverse engineer, and consultant. At the very beginning of his career, when he was a malware researcher at Aladdin Knowledge Systems, he invented and developed a generic code recognition method known as HOFA™. After spending a few years in the anti-malware industry and gaining sufficient experience in low-level development and reverse engineering, Alexey switched to content protection and worked as a reverse engineering consultant with Irdeto’s BD+ department, actively participating in content protection technology development.

Since 2013, he has worked with several software development companies providing reverse engineering and low-level software development consultancy.

Table of Contents

  1. Intel Architecture
  2. Setting Up a Development Environment
  3. Intel Instruction Set Architecture (ISA)
  4. Memory Addressing Modes
  5. Parallel Data Processing
  6. Macro Instructions
  7. Data Structures
  8. Mixing Modules Written in Assembly and Those Written in High-Level Languages
  9. Operating System Interface
  10. Patching Legacy Code
  11. Oh, Almost Forgot

商品描述(中文翻譯)

主要特點



  • 了解組合語言編程概念以及從高級語言生成的AL代碼的優勢

  • 學習將組合語言例程融入高級語言應用程序中

  • 了解在高級語言編程時CPU的工作原理

書籍描述


組合語言是任何平台上最低級的可讀性編程語言。了解組合語言級別的事物將幫助開發人員以更優雅和高效的方式設計代碼。它可以通過編譯高級編程語言(如C/C++)的源代碼生成,也可以從頭開始編寫。組合代碼可以使用組合器轉換為機器代碼。


本書的第一部分從在Windows和Linux上設置開發環境開始,提到了最常見的工具鏈。通過示例,引導讀者了解CPU和內存的基本結構,並介紹了Windows和Linux、32位和64位的最重要的組合指令。然後讀者將了解高級語言如何轉換為組合語言,然後編譯為目標代碼。最後,我們將介紹如何修補現有代碼,無論是沒有源代碼的舊代碼還是同一進程或遠程進程中運行的代碼。

你將學到什麼



  • 深入了解底層平台

  • 了解二進制算術和邏輯操作

  • 使用組合語言創建優雅高效的代碼

  • 了解如何將組合語言代碼與外部世界鏈接

  • 深入了解英特爾CPU的相關內部機制

  • 為運行中的進程編寫穩定、高效和優雅的補丁

關於作者


Alexey Lyashko 是一位組合語言愛好者、獨立軟件逆向工程師和顧問。在職業生涯的最初,他在Aladdin Knowledge Systems擔任惡意軟件研究員時,發明並開發了一種稱為HOFA™的通用代碼識別方法。在反惡意軟件行業工作了幾年並獲得了低級開發和逆向工程的豐富經驗後,Alexey轉向內容保護領域,並在Irdeto的BD+部門擔任逆向工程顧問,積極參與內容保護技術的開發。


自2013年以來,他與幾家軟件開發公司合作,提供逆向工程和低級軟件開發的諮詢服務。

目錄



  1. 英特爾架構

  2. 設置開發環境

  3. 英特爾指令集架構(ISA)

  4. 內存地址模式

  5. 並行數據處理

  6. 宏指令

  7. 數據結構

  8. 混合使用組合語言和高級語言編寫的模塊

  9. 操作系統接口

  10. 修補舊代碼

  11. 哦,差點忘了