Есть ли источники для изучения ассемблерного программирования в Windows? - PullRequest
7 голосов
/ 10 июня 2011

Я хотел бы изучить Программирование на ассемблере для Windows. Но у меня возникли проблемы с поиском материала для обучения. Все материалы, которые я вижу, не дают достаточно кода для программирования (они показывают только фрагменты), слишком стары или являются просто теорией.

Ответы [ 3 ]

5 голосов
/ 10 июня 2011

В течение долгого времени начинающим «стандартным» учебным пособием для начинающих программировать на Windows является Учебное пособие Ичелиона . Также для программирования на ассемблере Windows лучшим форумом (IMO), вероятно, является MASM32. У него очень активное сообщество, которое очень приветливо и полезно для новичков и начинающих. Это зависит от того, какой конкретный вид ассемблера вы хотите изучить, кроме IMO, для Windows MASM32 имеет лучшую пользовательскую базу (как с точки зрения сообщества, так и ресурсов) для начинающих.

Вы упоминаете, что хотите изучать и RCE (обратный код). Очень распространенным исходным местом для реверсирования в Windows являются учебные пособия lena151 , которые также могут быть хорошим началом, если вы уже знакомы с ассемблером концептуально из программирования на ассемблере для Linux.

4 голосов
/ 10 июня 2011

Большая часть программирования на ассемблере, которую вы бы делали, особенно в среде с полной операционной системой, такой как Windows, в любом случае будет просто фрагментом кода (в отличие от 100% -ой программы сборки). Самый простой способ начать работу - написать программу на C в качестве тестового набора и заставить ее вызывать функции языка ассемблера. Вот простой пример:

asm.s:

  .text
  .globl _asm_add

_asm_add:
  mov %rdi, %rax
  add %rsi, %rax
  ret

example.c:

#include <stdio.h>

int asm_add(int, int);

int main(int argc, char **argv)
{
  int a = 12;
  int b = 6;

  int c = asm_add(a, b);

  printf("%d + %d = %d\n", a, b, c);

  return 0;
}

Сборка и запуск (на моем Mac с clang; изменение для вашего компилятора на windows):

$ clang -o example example.c asm.s
$ ./example 
12 + 6 = 18
3 голосов
/ 10 июня 2011

Самая важная вещь, которую нужно получить - это руководства Intel (другие производители, такие как AMD, тоже будут иметь свои собственные, но инструкции очень похожи):

http://www.intel.com/products/processor/manuals/

Они имеют всеинструкции, стоимость и некоторые руководства по программированию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...