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

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

 eXeL@B —› Вопросы новичков —› Ничего не делающие команды ассемблера
. 1 . 2 . >>
Посл.ответ Сообщение

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

Создано: 14 декабря 2018 07:46 New!
Цитата · Личное сообщение · #1

Подскажите пустые (ничего не делающие) инструкции ассемблера.
Аналоги команды NOP.


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

Создано: 14 декабря 2018 08:37 · Поправил: f13nd New!
Цитата · Личное сообщение · #2

Любые операции над регистрами, значения которых в дальнейшем коде не используются. Или fnop. Так и представляю себе, как в интел сидят и думают "а давайте сделаем больше одной ничего не делающей инструкции".

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

Создано: 14 декабря 2018 09:36 New!
Цитата · Личное сообщение · #3

XN210 пишет:
Подскажите пустые (ничего не делающие) инструкции ассемблера

Для чего?
Нужен мусор, смотри сырки любого джанкгенератора.

Тебе правильно написали
f13nd пишет:
Любые операции над регистрами, значения которых в дальнейшем коде не используются


0F1F00 - трехбайтовый ноп
pause

По большому счету можно для этого почти любые инструкции приспособить, они конечно не будут "ничего не делать" в абсолютном понимании, но результат действий будет как таковой отсутствовать. Например jmp на следующую инструкцию в общем-то nop.
Code:
  1. mov eax,eax
  2. xchg ebx,ebx
  3. add eax,0
  4. sub eax,0
  5. or eax,0
  6. and eax,-1
  7. итд тип


Часто юзаются парные "зеркальные" инструкции
Code:
  1. pushad 
  2. popad
  3. push eax
  4. pop eax


Вариантов бесконечно* много.

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

Создано: 14 декабря 2018 09:57 New!
Цитата · Личное сообщение · #4

Вот только убирается мусорный код так-же просто как и добавляется.

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

Создано: 14 декабря 2018 11:57 New!
Цитата · Личное сообщение · #5

кто-то пишет полиморф

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



Ранг: 544.8 (!)
Статус: Участник
оптимист

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

TryAga1n пишет:
кто-то пишет полиморф


XN210
Валера это ты?

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

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

Большое спасибо за ответы.
Я не Валера.
Зачем мне это?
Чтобы удобнее было "редактировать" код ассемблера в Hiew.
Не Nop 'ом однобайтным единым.

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

Создано: 14 декабря 2018 19:33 · Поправил: cppasm New!
Цитата · Личное сообщение · #8

--> Link <--

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


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

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

XN210 пишет:
Подскажите пустые (ничего не делающие) инструкции ассемблера.
Аналоги команды NOP.


Такой нескромный вопрос, а зачем это вам? Интересно, в каких целях спрашиваете?


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

Создано: 15 декабря 2018 20:34 · Поправил: difexacaw New!
Цитата · Личное сообщение · #10

XN210

> Чтобы удобнее было "редактировать" код ассемблера в Hiew.

Удобно однобайтовой инструкцией переписывать, иначе по простому не получится - придётся перемещать инструкции в буфер. Так что это не ответ.

Из такого полиморфа этот мусор вычищается элементарно. У таких инструкций нет никаких зависимостей.

Добавлено спустя 8 минут
VOLKOFF

> 0F1F00 - трехбайтовый ноп

Он может быть произвольной длины. 0F 1F(опкод) + MODR/M. Modrm кодирует эффективный адрес, но выборка не происходит как и в LEA. нп nop D[eax][ebx*8][12345].

> add eax,0

Изменяет ведь контекст(флажки).

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

Создано: 16 декабря 2018 00:53 New!
Цитата · Личное сообщение · #11

Чо? Это какбе рандомные примеры, с таким же успехом мог бы написать

> mov eax,eax

Тут может быть произвольный регистр, а не только eax
Совсем заскучал?


Ранг: 2008.6 (!!!!)
Статус: Модератор
retired

Создано: 16 декабря 2018 04:50 · Поправил: Модератор New!
Цитата · Личное сообщение · #12

VOLKOFF пишет:
mov eax,eax

Занулит старшую часть регистра на х64.

Архитектура амд и подразумевается под x64, ибо интел 64, он же итаниум, практически помер. И сейчас x64, что амд, что интел, работают по системе команд амд.
Так что да, я про амд, там и занулит.

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

Создано: 16 декабря 2018 05:49 · Поправил: VOLKOFF New!
Цитата · Личное сообщение · #13

Archer пишет:
Занулит старшую часть регистра на х64


На АМД не должен занулить Ога, my bad, все таки обнуляет, факт.


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

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

VOLKOFF

> Тут может быть произвольный регистр, а не только eax
> Совсем заскучал?

Да, заскучал. Я просто вас поправил. Контекст это не только регистры, но и флажки. Если такую инструкцию вставить до использования флагов, то логика апп собьётся, тк есть зависимость контекста. Обычно такое делается на уровне графа, при этом проверяются изменяемые и используемые флажки - проход по ветвям от текущего места и поиск использования флажков.

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

Создано: 16 декабря 2018 11:02 New!
Цитата · Личное сообщение · #15

difexacaw пишет:
то логика апп собьётся, тк есть зависимость контекста

Это правда, но в контексте вопроса вполне полезно (при условном переходе на середину инструкции например).


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

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

VOLKOFF

> контексте вопроса вполне полезно (при условном переходе на середину инструкции например).

Не понимаю что это значит.

Допустим есть конструкция:

test r,n
...
jcc L

Если между этими инструкциями вставить add, это изменит часть контекста(флажки), тогда произойдёт утеря данных(результата test) и управление определит результат исполнения add.

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

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

Создано: 20 марта 2019 11:37 · Поправил: e_sergey New!
Цитата · Личное сообщение · #17

Всем привет , уважаемые форумчане .
Снова вопросы . Надеюсь можно продолжить ...
Про ничего не делающие команды и прерывания int 3 .

Насколько я понял, за инструкцию прерывания, которая может сбить с толку отладчик ( ida или x64dbg ) ,
если открыть отлаживаемый файл в хекс редакторе, отвечает значение байта CC .
Отсюда ( из прочитанного в нете или на форуме ) могу сделать заключение , если не прав - поправьте ,
перед тем как что то читать или смотреть или пробовать изменить в ida или x64dbg нужно открыть фаил в hex редакторе и заменить все CC на 90 ?

Вот пример того , что я вижу, открыв нужный мне файл в PSpad



По идее я могу заменить все CC на 90 ?

Возможно мне нужно искать и другие значения и менять их на 90 , что превратит прерывания в nopы ?

Ничего другого из кода я не испорчу , сделав подобные замены ?

Насколько я понимаю подобным образом нужно изменить все длл , которые загружаются в память при изучении нужного мне exe ?

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

Создано: 20 марта 2019 11:49 New!
Цитата · Личное сообщение · #18

СС может быть не только кодом команды но и операндом. Я так думаю если правильно понял

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

Создано: 20 марта 2019 11:55 · Поправил: e_sergey New!
Цитата · Личное сообщение · #19

вероятно вопрос поставлен не корректно
попробую спросить по другому

как , открыв файл в hex редакторе, найти все значения , которые отвечают за прерывания типа int 3 или
что то подобное , что может сбить с толку отладчик , и заменить их на 90 (nop)

или так - может нужно искать определённую последовательность байт в hex редакторе ( сигнатуру или как это правильно называется ) , которая говорит о том , что в коде используется прерывание типа int 3 ?

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

Создано: 20 марта 2019 12:10 New!
Цитата · Личное сообщение · #20

Ничего там отладчик не сбивает.
Оно для выравнивания может использоваться и не исполняется.
А если исполняется - приложение само обрабатывает.
Короче ничего делать не надо.

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

Создано: 20 марта 2019 12:17 New!
Цитата · Личное сообщение · #21

Да кто тебе в мозг вбил что INT 3 == NOP (пальцем покажи)

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

Создано: 20 марта 2019 12:18 · Поправил: e_sergey New!
Цитата · Личное сообщение · #22

Medsft пишет:
Да кто тебе в мозг вбил

друга - я читаю пока ещё , опыта мало , по честному практически нет
но все из литературы ...
вот например --> Link <--
калашников стр 165 - литература рекомендуемая на форуме

cppasm пишет:
Короче ничего делать не надо


Хорошо , исходя из этого след вопрос
Что за ошибка , которую я получаю в x64dbg
ExceptionCode: 80000004 (EXCEPTION_SINGLE_STEP)


Ранг: 1122.0 (!!!!)
Статус: Участник

Создано: 20 марта 2019 12:51 New!
Цитата · Личное сообщение · #23

e_sergey



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

Создано: 20 марта 2019 12:58 · Поправил: e_sergey New!
Цитата · Личное сообщение · #24

Gideon Vi пишет:

Что за отладчик - можно назвать ?
я не знаю , на данном этапе своего развития в вашем ремесле , пока ничего кроме ida и x64dbg
но и эти то - только начинаю изучать

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

Создано: 20 марта 2019 13:44 New!
Цитата · Личное сообщение · #25

OllyDbg похоже.
В x64dbg тоже есть эти настройки.
Чтоб тебе что-то ответили по сути надо не свои фантазии на тему описывать, а выложить файл и написать в чём проблема.
А так ты задаёшь мягко говоря очень странные вопросы, ответы на которые тебе всё равно не помогут.

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

Создано: 20 марта 2019 13:56 · Поправил: e_sergey New!
Цитата · Личное сообщение · #26

cppasm пишет:
надо не свои фантазии на тему описывать, а выложить файл и написать в чём проблема.


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

cppasm пишет:
задаёшь мягко говоря очень странные вопросы, ответы на которые тебе всё равно не помогут


в чем странность вопросов от ученика - в том что для гуру они очевидны ?

вполне себе сложные вопросы для меня , знаете ответ - подскажите ...

1. Как , открыв файл в hex редакторе, найти все значения , которые отвечают за прерывания типа int 3 или
что то подобное ?

2. На что влияют эти прерывания при исследовании фаила например в x64dbg или ida pro 7 ?

3. Можно заменить все CC на 90 ?

4. Может нужно искать определённую последовательность байт в hex редакторе помимо CC ?

5. Если я заменю все CC в hex на 90 - я не испорчу код ?

если есть ссылка, по которой можно что то конкретное понять про эти int 3, торните носом плиз , я с удовольствием почитаю ..

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

Создано: 20 марта 2019 14:07 · Поправил: TryAga1n New!
Цитата · Личное сообщение · #27

e_sergey пишет:
1. Как , открыв файл в hex редакторе, найти все значения , которые отвечают за прерывания типа int 3 или
что то подобное ?

Никак. Нужно дизасмить приложение, но дизасм при анализе порой допускает ошибки, особенно если софтина не стандартно написана.
e_sergey пишет:
2. На что влияют эти прерывания при исследовании фаила например в x64dbg или ida pro 7 ?

Нужно расматривать каждый частный случай индивидуально, потому как ответом может быть "на все" или же "ни на что"
e_sergey пишет:
3. Можно заменить все CC на 90 ?

нет
e_sergey пишет:
4. Может нужно искать определённую последовательность байт в hex редакторе помимо CC ?

здесь нужен дизассемблер, а не hex редактор
e_sergey пишет:
5. Если я заменю все CC в hex на 90 - я не испорчу код ?

однозначно испортишь

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


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

Создано: 20 марта 2019 14:13 New!
Цитата · Личное сообщение · #28

e_sergey пишет:
Отсюда ( из прочитанного в нете или на форуме ) могу сделать заключение , если не прав - поправьте ,
перед тем как что то читать или смотреть или пробовать изменить в ida или x64dbg нужно открыть фаил в hex редакторе и заменить все CC на 90 ?

Поправляют все уже на пол страницы: Заключение НЕверное!

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

Создано: 20 марта 2019 14:21 · Поправил: e_sergey New!
Цитата · Личное сообщение · #29

TryAga1n
спасибо !

Уважаемые модераторы - не закрываите плиз тему ,
чтоб не плодить по каждому вопросу новую .

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

Создано: 20 марта 2019 14:35 New!
Цитата · Личное сообщение · #30

e_sergey пишет:
друга это вопросы , которые возникают в процессе изучения

уморил! ))))
мам... это не я! это пацаны код отлаживали, я просто рядом гуглил!..

вот тебе ответы:
1)
а) гугли Intel® 64 and IA-32 Architectures Software Developer’s Manual, и ищи интересующие тебя опкоды
б) открой хелп хекс-редактора и почитай какой кнопкой осуществлять поиск (в идеале = regex)
в) ищи!

2) гугли Intel® 64 and IA-32 Architectures Software Developer’s Manual - там вся инфа есть

3) судять по твоим постам выше, "ничегонеделающие" int 3 - это заполнение гапов между кодом для выравнивая функций. Паддинг. Можешь чем угодно заполнять. Хоть nop-ами, хоть...
_h_t_t_p_s_://reverseengineering.stackexchange.com/questions/4084/why-ther-are-some-many-padding-leading-nop-instructions-in-my-binary-code
_h_t_t_p_s_://stackoverflow.com/questions/7912464/why-does-gcc-pad-functions-with-nops/7912617#7912617

4) может. все же от задачи зависит...

5) если речь о паддинге, то нет, не испортишь... но зачем?

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

у меня всё!

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

. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› Ничего не делающие команды ассемблера

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