Русский / Russian English / Английский

Сейчас на форуме: Sorry, Logrus (+6 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Крэки, обсуждения —› Команды Ассемблера
Посл.ответ Сообщение

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 12 декабря 2004 01:12 New!
Цитата · Личное сообщение · #1

Народ, нодскажите:
mov eax, dword ptr [0000003Ah]
после eax имеет значение 725E7A25h
Как работает смещение с даннами?

Ранг: 0.0 (гость)
Статус: Участник

Создано: 12 декабря 2004 01:19 New!
Цитата · Личное сообщение · #2

Команда:
ЗАПИХНУТЬ в Eax, СОДЕРЖИМОЕ по Адресу [3Ah] (dword)

Ранг: 163.7 (ветеран)
Статус: Участник

Создано: 12 декабря 2004 01:32 New!
Цитата · Личное сообщение · #3

dragon-gor

Покажи опкод, что-то тут не то.
При чтении из адреса 0000003Ah должно исключение возникнуть, т.к. доступ к первым 65536 байтам запрещён.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 12 декабря 2004 01:35 New!
Цитата · Личное сообщение · #4

Не факт что возникнет. Ты про exception handler не забыл что может быть?

Ранг: 163.7 (ветеран)
Статус: Участник

Создано: 12 декабря 2004 01:58 New!
Цитата · Личное сообщение · #5

Факт, что KiUserExceptionDispatcher в конечном счёте может вызовать установленный прогой SE Handler не говорит о том, что исключение не возникнет ;)

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 12 декабря 2004 03:07 New!
Цитата · Личное сообщение · #6

Блин, не понял
Читаю учебник по w32asm-
там команда использует формат little endian и таблица:
смещение 3435363738393A3B3C3D3E3F404142
данные 0D0A50324457257A5E72EF7DFFADC7
Откуда и как он прощитал исходя таблицы,
что eax=725E7A25h и если в windows смещение 4gb

Ранг: 45.7 (посетитель)
Статус: Участник
EBFE

Создано: 12 декабря 2004 03:13 · Поправил: dMNt New!
Цитата · Личное сообщение · #7

не факт что виндовая прога
dragon-gor что-то ты прогнал, таких смещений не бывает
dragon-gor пишет:
смещение 3435363738393A3B3C3D3E3F404142

Ранг: 495.3 (мудрец)
Статус: Участник

Создано: 12 декабря 2004 04:15 New!
Цитата · Личное сообщение · #8

dragon-gor
S_T_A_S_ пишет:
Покажи опкод, что-то тут не то.


ПОКАЖИ БАЙТЫ КОМАНД!

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 12 декабря 2004 12:43 New!
Цитата · Личное сообщение · #9

Вот как читать учебники которые не учат, а только запудривают мозги.
Всё что было в нём написано, я выше написал.
Это учебник по win32asm - скачал на WASM.
Так что, наплювать на смещение?

Если кто хочет почитать, у меня есть HTML версия,
Скину на мыло.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 12 декабря 2004 12:47 New!
Цитата · Личное сообщение · #10

ты дай кусок кода или в нех или так...

Скину на мыло.
dead_body||rambler.ru ||=@

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 12 декабря 2004 13:19 New!
Цитата · Личное сообщение · #11

Пишу как написано:
Смещение указывает на ячейки памяти (в win32, подробнее об этом см. на предыдущей странице). Вы также можете получить значение из памяти и поместить эго в регистр. Для примера возьмем следующую таблицу:

смещение_ 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42
данные___ 0D 0A 50 32 44 57 25 7A 5E 72 EF 7D FF AD C7

(Каждый блок представляет байт)

Значение смещения обозначено здесь как байт, но на самом деле это это - 32-разрядное значение. Возьмем для примера 3A, это также - 32-разрядное значение: 0000003Ah. Только, чтобы с экономить пространство, некоторые используют маленькие смещения. Все значения - шестнадцатиричные коды.

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 12 декабря 2004 14:39 New!
Цитата · Личное сообщение · #12

Кому интересно кидаю ссылку на учебник
learnasm.narod.ru/download/w32dasm.rar

Ранг: 163.7 (ветеран)
Статус: Участник

Создано: 12 декабря 2004 15:12 New!
Цитата · Личное сообщение · #13

dMNt пишет:
не факт что виндовая прога


Симнтаксис MASM, 32х разрядный режим. Вроже как такое сейчас больше нигде не используется.

Bitfry
Bitfry пишет:
ПОКАЖИ БАЙТЫ КОМАНД!


Что есть опкод, и что есть БАЙТЫ КОМАНД!?

dragon-gor пишет:
Вот как читать учебники которые не учат, а только запудривают мозги.


Ты сам ясно выразиться не можешь, зачем обвинять других?
Что за учебник?

dragon-gor пишет:
смещение_...


Это сильно напоминает ASCII строку со всякой лажей:
456789:;<=>?@AB
P2DW%z^r

dragon-gor пишет:
там команда использует формат little endian и таблица


Какия команда, XLAT что-ли ?

dragon-gor пишет:
кидаю ссылку на учебник


Ты ни чего не употребдяешь? Это ссыла на дизассемблер w32dasm.

Ранг: 495.3 (мудрец)
Статус: Участник

Создано: 12 декабря 2004 16:37 New!
Цитата · Личное сообщение · #14

S_T_A_S_ пишет:
Что есть опкод, и что есть БАЙТЫ КОМАНД!?

То, что я здесь так и не увидел.
Вот когда оно не нужно, например, в статьях где hex-значение команд только мешает, так - пожалуйста, а тут: mov eax, dword ptr [0000003Ah]. Ни смещения, по которому находится этот бред, ни опкода. Похоже, человек сам не понимает, что он хочет узнать.

Ранг: 163.7 (ветеран)
Статус: Участник

Создано: 12 декабря 2004 19:13 New!
Цитата · Личное сообщение · #15

А... я подумал, что ты хотел сказать, что это разные вещи =)

ЗЫ: поначалу думал, что dragon-gor где-то в реальной проге такое увидел (тогда в eax 725E7A25h могло оказаться только после SEH), а теперь впонимаю, что ничего не понимаю =). зачем я сюда влез 8-()


Ранг: 332.0 (мудрец)
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 12 декабря 2004 19:19 New!
Цитата · Личное сообщение · #16

S_T_A_S_ пишет:
Ты ни чего не употребдяешь? Это ссыла на дизассемблер w32dasm.

Лол. Хорошо сказано ;)

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 13 декабря 2004 04:00 New!
Цитата · Личное сообщение · #17

Э-э-э, зра ругаешься. Учебник тот. Глянь на странице, может потом поймёшь.
Win32Asm Tutorial

---------------------------------------------------------------------- ----------

назад 5- Коды рперации вперед


---------------------------------------------------------------------- ----------

5.0 - Коды операции (опкоды).

Опкоды это команды для процессора. Опкоды - фактически "читаемый текст"- версии шестнадцатиричных кодов. Из-за этого, ассемблер считается саммым низко-уровневым языком программирования, все в ассемблере непосредственно преобразовывается в шестнадцатиричные коды. Другими словами, у вас нет компилятора, который преобразовывает язык высокого уровня в язык низкого уровня, ассемблер только преобразовывает коды ассемблера в данные.

В этом уроке мы обсудим несколько опкодов, которые имеют отношение к вычислению, поразрядным операциям, и т.д. Другие опкоды, команды перехода, сравнения и т.д, будут обсуждены позже.

5.1 - Несколько основных опкодов вычисления

MOV

Эта команда используется для перемещения (или фактически, копирования) значения из одного места в другое. Это 'место' может быть регистр, ячейка памяти или непосредственное значение (только как исходное значение). Синтаксис команды mov:

mov приемник, источник

Вы можете перемещать значение из одного регистра в другой (Учтите, что команда копирует значение в приемник, несмотря на ее название 'move', что в переводе на русский - перемещать).

mov edx, ecx

Вышеприведенная команда копирует содержание ecx в edx. Размер источника и приемника должны быть одинаковыми,
например: эта команда - НЕ допустима:

mov al, ecx ; не правильно

Этот опкод пытается поместить DWORD (32-битное) значение в байт (8 битов). Это не может быть сделано mov командой (для этого есть другие команды).
А эти команды правильные, потому что у них источник и приемник не отличаются по размеру:

mov al, bl
mov cl, dl
mov cx, dx
mov ecx, ebx

Смещение указывает на ячейки памяти (в win32, подробнее об этом см. на предыдущей странице). Вы также можете получить значение из памяти и поместить эго в регистр. Для примера возьмем следующую таблицу:

смещение 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42
данные 0D 0A 50 32 44 57 25 7A 5E 72 EF 7D FF AD C7

(Каждый блок представляет байт)

Значение смещения обозначено здесь как байт, но на самом деле это это - 32-разрядное значение. Возьмем для примера 3A, это также - 32-разрядное значение: 0000003Ah. Только, чтобы с экономить пространство, некоторые используют маленькие смещения. Все значения - шестнадцатиричные коды.

Посмотрите на смещение 3A в таблице выше. Данные на этом смещении - 25, 7A, 5E, 72, EF, и т.д. Чтобы поместить значение со смещения 3A, например, в регистр, вы также используете команду mov:

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 13 декабря 2004 04:51 New!
Цитата · Личное сообщение · #18

Про смещение памяти мне понятно,
но непонятно-откуда появились данные на 3A
(Посмотрите на смещение 3A в таблице выше. Данные на этом смещении - 25, 7A, 5E, 72, EF, и т.д. Чтобы поместить значение со смещения 3A, например, в регистр, вы также используете команду mov)

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 13 декабря 2004 04:57 New!
Цитата · Личное сообщение · #19

Блин----Понял!!!!
Это код помещённый в ячейки памати.
А я думаю - откуда цифры взялись


Ранг: 260.3 (наставник)
Статус: Участник
PPC-PROTECT author

Создано: 13 декабря 2004 11:36 New!
Цитата · Личное сообщение · #20

dragon-gor ) а вообще ты чего хотел? статью эту опровергнуть, сказать что там ошибка )

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 13 декабря 2004 12:16 New!
Цитата · Личное сообщение · #21

Нет, просто читать надо лучше (это я себе)

Ранг: 163.7 (ветеран)
Статус: Участник

Создано: 13 декабря 2004 19:43 New!
Цитата · Личное сообщение · #22

Бл@, после таких "учебников" не только крыша съедет :\

Короче, IMHO бред написан (что на какой странице глянуть так и не понял, читал здесь):

MOV - это не опкод, а мнемоника команды. Опкод - это те цифирки, которые видно в Olly в колонке слева от мнемоник. Именно они и находятся в оперативе и проц их оттуда считывает и выполняет. Для команды MOV существует несколько опкодов, в зависимости от операндов и режима адресации (выделено жирным):

A1 00000204 ; mov eax, [4020000]
B8 00000204 ; mov eax, 4020000
8B05 00000204 mov eax, [4020000]
8B83 00000204 ; mov eax, [ebx+4020000]
8B84CB 00000204 ; mov eax, [ebx+ecx*8+4020000]

(это конечно упрощённо, т.к. я в опкод включил так же и байты ModR/M & SIB)


Значение смещения обозначено здесь как байт, но на самом деле это это - 32-разрядное значение. Возьмем для примера 3A, это также - 32-разрядное значение: 0000003Ah. Только, чтобы с экономить пространство, некоторые используют маленькие смещения.

Здесь автор "забыл" сказать, что MOV маленькие смещения никогда не использует, в отличает от JMP (и арифметических команд, толко там не смещения)

dragon-gor
Забей ты на этот учебник, лучше на wasm.ru статьи почитай. А автору письмо напиши, пусть скачает себе 2й том intel'овских док...

Ранг: 79.6 (постоянный)
Статус: Участник
алХимик

Создано: 14 декабря 2004 08:21 New!
Цитата · Личное сообщение · #23

dragon-gor

Чего-то я не нашел там этого "учебника", дай точную ссылку, ну очень интересно что там еще написано =))))))))

Ранг: 24.4 (новичок)
Статус: Участник

Создано: 14 декабря 2004 10:05 New!
Цитата · Личное сообщение · #24

попробуй эту
www.taspro.narod.ru/doc/assembler/uroks.zip
я его же ашь с 4 мест скачивал, и все файлы имеют разное название.
Искал через Рамблера->документация на win32dasm

Ранг: 79.6 (постоянный)
Статус: Участник
алХимик

Создано: 14 декабря 2004 10:12 New!
Цитата · Личное сообщение · #25

dragon-gor пишет:
документация на win32dasm


А причем тут дизассемблер %)

Ранг: 79.6 (постоянный)
Статус: Участник
алХимик

Создано: 14 декабря 2004 10:23 New!
Цитата · Личное сообщение · #26

Видал я эти уроки... Я оригинала не встречал, поэтому, возможно, это ошибки перевода. Хрен его знает.
В любом случае, читать надо чего-нибудь другое, хотя бы Юрова. Благо валяется на пироговском сайте, правда 30 с лишним метров качать удовольствие сомнительное %).
 eXeL@B —› Крэки, обсуждения —› Команды Ассемблера
Эта тема закрыта. Ответы больше не принимаются.

Видеокурс ВЗЛОМ