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

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

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

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

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




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

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

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

-----
2 оттенка серого




Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 14 декабря 2018 09:36
· Личное сообщение · #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


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



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

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

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

-----
PGP key <0x1B6A24550F33E44A>




Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

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

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

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


Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

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

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


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

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




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

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

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



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

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

--> Link <--

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

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

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

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


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




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

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

XN210

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

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

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

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

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

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

> add eax,0

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

-----
vx




Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

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

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

> mov eax,eax

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




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

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

VOLKOFF пишет:
mov eax,eax

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

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



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

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

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


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




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

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

VOLKOFF

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

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

-----
vx




Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

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

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

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




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

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

VOLKOFF

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

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

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

test r,n
...
jcc L

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

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

-----
vx




Ранг: 13.6 (новичок), 1thx
Активность: 0.080
Статус: Участник

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

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

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

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



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

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

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

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



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

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

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



Ранг: 13.6 (новичок), 1thx
Активность: 0.080
Статус: Участник

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

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

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

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



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

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

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



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

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

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



Ранг: 13.6 (новичок), 1thx
Активность: 0.080
Статус: Участник

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

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

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

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


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




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

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

e_sergey






Ранг: 13.6 (новичок), 1thx
Активность: 0.080
Статус: Участник

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

Gideon Vi пишет:

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



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

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

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



Ранг: 13.6 (новичок), 1thx
Активность: 0.080
Статус: Участник

Создано: 20 марта 2019 13:56 · Поправил: e_sergey
· Личное сообщение · #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, торните носом плиз , я с удовольствием почитаю ..



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 20 марта 2019 14:07 · Поправил: TryAga1n
· Личное сообщение · #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.6 (постоянный), 50thx
Активность: 0.040.02
Статус: Участник

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

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

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



Ранг: 13.6 (новичок), 1thx
Активность: 0.080
Статус: Участник

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

TryAga1n
спасибо !

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



Ранг: 21.5 (новичок), 4thx
Активность: 0.010.03
Статус: Участник

Создано: 20 марта 2019 14:35
· Личное сообщение · #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 —› Вопросы новичков —› Ничего не делающие команды ассемблера
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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