Сейчас на форуме: tyns777, cppasm, dutyfree (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Hiew не так преобразует команды
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 декабря 2016 22:27 · Поправил: sddvxd
· Личное сообщение · #1

Здравствуйте уважаемые форумчане!
Начал читать курс по исследованию программ и наткнулся на такую проблему - когда я в hiew ввожу строку кода, нажимаю enter и сверяю с тем, что на странице урока, то нахожу различия. Ввожу все правильно, так еще и программы не хотят работать! Пробую на Win XP 32 бита. На скриншоте - результат попытки записать код, представленный в уроке (mov dword ptr [BX],04030201h) - после этого вылезла ошибка "Name not found"
Кстати, для тестов использую VIRTUAL BOX (на которой и стоит XP)




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 21 декабря 2016 22:48 · Поправил: -=AkaBOSS=-
· Личное сообщение · #2

Вместо нуля точно не букву "o" набираешь? Есть такая привычка, по себе знаю.
Если нет, то заскринь то, что набрал перед тем как сообщение появилось.

Кстати говоря, если заметил, между моим скрином и эталоном в туторе есть различие - в используемых префиксах команд.
У меня на скрине это 67, а в туторе 66. Это из-за того, что по умолчанию ассемблер-дизассемблер хиева находится в 32 битном режиме.
В данном случае статус отображется как "a32" в верхней строке. Для переключения на другой ассемблер надо использовать комбинацию клавиш Ctrl+A.

sddvxd пишет:
mov dword ptr [BX],04030201h)

кстати, hiew не умеет MASM-овский синтаксис понимать, ему надо вводить именно так, как он отображает.
тоесть, вместо MOV DWORD PTR [BX] надо писать MOV D, [BX]



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 декабря 2016 00:32 · Поправил: sddvxd
· Личное сообщение · #3

хм, вот так получилось -=AkaBOSS=- пишет:
вместо MOV DWORD PTR [BX] надо писать MOV D, [BX]


hiew на ctrl + A не реагирует никак
программы до сих пор не работают (может дело в том, что я не указал path для masm? или без разницы?)
masm это что-то типа транслятора для asm? ну имею ввиду превращает код в более читаемый и при компиляции трансируе в asm?



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 22 декабря 2016 00:57 · Поправил: dosprog
· Личное сообщение · #4

Потому, что на скриншоте из "Урока" показан результат работы Hiew в режиме "а16".
У вас же в Hiew включён режим "a32".
Переключение a16<->a32 выполняется кнопкой <Ctrl+F1>.

--Добавлено--
)) ..и едрёнбатон, Hiew v.8.43. Про masm не наслышаны, но варёзный свежакъ тягать шо два пальца..
Ну, теперь-то дело пойдёт



| Сообщение посчитали полезным: sddvxd


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 22 декабря 2016 00:59 · Поправил: -=AkaBOSS=-
· Личное сообщение · #5

sddvxd пишет:
hiew на ctrl + A не реагирует никак

Точно, я туплю. dosprog правильно говорит - Ctrl-F1.
В режиме дизассемблера переключается между 16-32-64 битным асмом-дизасмом
Это должно отображаться в верхней строке

sddvxd пишет:
программы до сих пор не работают

О каких программах речь вообще?

sddvxd пишет:
masm это что-то типа транслятора для asm?

Что-то типа. Правда, насчёт превращения кода в более читаемый - это фантастика.


И вообще, какое отношение курс по исследованию программ имеет к набору x16 кода в хиеве?
Ассемблер изучать, безусловно, полезно. Но не такой древний, и не таким же образом



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 декабря 2016 01:20 · Поправил: sddvxd
· Личное сообщение · #6

-=AkaBOSS=- пишет:
О каких программах речь вообще?


о .com файлах. Они некорректно работали, видимо из-за режима a32(вообще без понятия что это)

-=AkaBOSS=- пишет:
И вообще, какое отношение курс по исследованию программ имеет к набору x16 кода в хиеве?
Ассемблер изучать, безусловно, полезно. Но не такой древний, и не таким же образом


Читать эти уроки одно удовольствие. Неужели неактуально уже? Я конечно с начала курса насторожился, что основной софт поставить, выше чем на XP не получится. А какие отличия 16 кода от 32? Исследовать программы на современных ОС не получится?




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 22 декабря 2016 01:31
· Личное сообщение · #7

sddvxd пишет:
о .com файлах. Они некорректно работали, видимо из-за режима a32(вообще без понятия что это)

Неправильный режим ассемблера приводил в к тому, что 32 битный код выполнялся в 16 битном окружении.
Как следствие - поведение, далёкое от задуманного.


sddvxd пишет:
Неужели неактуально уже?

16 битный ассемблер - морально устарел лет 15 назад.
Тру-демомейкеры может и воплощают на нём какие-то видеоэффекты, но в плане исследования программ он абсолютно бесполезен.
Скоро и х32 уже неактуально станет, х64 продвигается всё дальше.


sddvxd пишет:
А какие отличия 16 кода от 32

Дело даже не столько в коде, сколько в системных механизмах и используемой модели памяти. Изучать ДОС окружение и номера прерываний - пустая трата времени, имхо.



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 декабря 2016 01:49
· Личное сообщение · #8

-=AkaBOSS=- пишет:
16 битный ассемблер - морально устарел лет 15 назад.


странно, курс 2011-2012 годов

а в платных курсах exelab 64 битный ассемблер, не знаете?
Просто изучать асм, когда есть возможность купить и изучать курс с уклоном на "Исследование" программ - куда интереснее
Мне казалось, что можно открыть древним ассемблером (16 битным, например) любую программу, даже современную

-=AkaBOSS=- пишет:
Дело даже не столько в коде, сколько в системных механизмах и используемой модели памяти. Изучать ДОС окружение и номера прерываний - пустая трата времени, имхо.


То есть всегда важна битность низкоуровневых языков, нежели высокоуровневых, ведь они напрямую работают с микропроцессором, ОП, нежели высокоуровневые - в ОС встроены всяческие трансляторы из высокоуровневого кода в машинный код, ну я так понял




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 22 декабря 2016 02:28
· Личное сообщение · #9

Я не знаю, какую задачу вы перед собой поставили, но, на вашем месте, я начал бы с самых азов прежде чем браться за "Исследование" программ.
Разобраться с архитектурой операционной системы, с механизмом трансляции программы от исходного кода до кода машинного, и т.д.
И вовсе не обязательно покупать что-то: интернет буквально ломиться от БЕСПЛАТНЫХ ресурсов и туториалов на эти темы, нужно только поискать.

-----
Give me a HANDLE and I will move the Earth.





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 22 декабря 2016 02:45 · Поправил: -=AkaBOSS=-
· Личное сообщение · #10

Из старых курсов тоже можно вынести несколько полезных вещей:

1. шестнадцатеричная и двоичная системы счисления! Понимание систем счисления с основой, отличной от 10 - это не только сложно, но и очень полезно. Со временем станет почти как родная.

2. уяснить что такое байтовый порядок. Как последовательность байт преобразуется в слово, в двойное слово и тд.

3. изучить базовые команды - пересылка данных, передача управления, арифметика, сравнения и так далее. Но без справочника под рукой как минимум первый год всё равно обойтись не получится.

4. привыкнуть к порядку следования операторов в команде. Тоесть запомнить, что когда MOV AX, CX - это означает CX поместить в AX, а не наоборот. Если планируется реверсить в Linux среде - лучше этот этап пропустить, AT&T синтаксис потом мозг вынесет.

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


sddvxd пишет:
Мне казалось, что можно открыть древним ассемблером (16 битным, например) любую программу, даже современную

Неверно. Открыть-то можно, но результат будет нулевой.
Если тот же .com файл просто содержит исполняемый код который может быть загружен и выполнен, то в современных ОСях исполняемые файлы состоят из множества разных структур, о которых древний дизасм. разумеется, не в курсе.
Этими структурами, в основном, описываются настройки для загрузки модуля в память и для взаимодействия с другими модулями.

sddvxd пишет:
в ОС встроены всяческие трансляторы из высокоуровневого кода в машинный код

Неверно. Приложения в ОС выполняются на том же процессоре что и сама ОС, так или иначе.
Операционки тоже бывают разной разрядности. Некоторые из них предоставляют механизмы совместимости, как например ВинХП умеет выполнять 16 битные приложения, а новые х64 ОСи умеют запускать x32 приложения.
А процессору в целом фиолетово - х64 проц понимает и x16, х32 и х64 инструкции. При переключении между задачами ОС меняет сегмент кода, и проц может по сути одни и те же байты декодировать совершенно иначе.

| Сообщение посчитали полезным: sddvxd


Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 22 декабря 2016 03:01
· Личное сообщение · #11

Археолог.

-----
vx





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 22 декабря 2016 03:10
· Личное сообщение · #12

-=AkaBOSS=- пишет:
Скоро и х32 уже неактуально станет, х64 продвигается всё дальше

не соглашусь. много ли x64 прог прореверсеных (не имея проги x32 аналога)? замудохаться за регистрами следить, которых в 2 раза больше + xmm + sseX. хексрейсы курят в сторонке. промолчу, про количество пишущих на masm64, типа меня, когда бывает нужно что-то соптимизировать.
Дело даже не столько в коде, сколько в системных механизмах и используемой модели памяти. Изучать ДОС окружение и номера прерываний - пустая трата времени, имхо
их не надо изучать и запоминать. просто смысл асма вкурить, начиная с 16-битки .

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 декабря 2016 03:41
· Личное сообщение · #13

-=AkaBOSS=- пишет:
Из старых курсов тоже можно вынести несколько полезных вещей


То-есть все-же стоит изучить этот курс? Если с начала идет речь об основах асм, устройстве и работе микропроцессора и взаимодействий, а потом идет компилятор masm. Т.е. я буду писать программу в masm, он же, в свою очередь будет транслироваться в asm 16? И будет ли какой-нибудь толк от изучения, кроме как познания систем счисления и очередность операндов в старом асм? И как masm определяет, что я пишу именно на 16 битном asm?




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 22 декабря 2016 04:11
· Личное сообщение · #14

sddvxd пишет:
То-есть все-же стоит изучить этот курс?

Прочитать возможно и ст0ит, но вот морочиться с набором х16 кода в хиеве - лишнее, по-моему)
И на х16 асме сильно не тормозить, и по возможности перескакивать на x32 под вин.
Асм учить гораздо проще, когда есть возможность на лету смотреть результат выполнения той или иной команды, на себе проверял.

sddvxd пишет:
И будет ли какой-нибудь толк от изучения, кроме как познания систем счисления и очередность операндов в старом асм?

Ну команды в основном те же самые, но устройство памяти другое и регистры длиннее)

sddvxd пишет:
И как masm определяет, что я пишу именно на 16 битном asm?

Если я правильно помню, он другого асма и не понимает, для х32 нужен masm32.
Но могу ошибаться - я давным-давно перешёл на фасм.


 eXeL@B —› Вопросы новичков —› Hiew не так преобразует команды
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати