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

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

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

Создано: 14 мая 2010 19:28
· Личное сообщение · #1

Ребят, отлаживаю одно приложение и встречаю в отладчике вот такое абсурдный код:
Code:
  1. ADD EAX,4
  2. MOV DWORD PTR SS:[EBP-8],EAX
  3. MOV EAX,DWORD PTR SS:[EBP-8] 

или вот такой:
Code:
  1. MOV DWORD PTR SS:[EBP-4],-1
  2. CMP DWORD PTR SS:[EBP-4],0


Опыта у меня особого нет, отсюда и интерес, может быть наличие такого кода говорит о каких-то метаморфах? Я просто не представляю, что нужно написать на си (а на нём программа и написана), чтобы получился такой асм-код



Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 14 мая 2010 19:38
· Личное сообщение · #2

noph пишет:
Опыта у меня особого нет, отсюда и интерес, может быть наличие такого кода говорит о каких-то метаморфах?

ХЗ о чём оно там говорит......первый кусок ваще хрень, кроме ADD EAX,4 можно всё убрать.

Второй тоже не больно содержательный. Приведи побольше кода.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 14 мая 2010 19:48
· Личное сообщение · #3

Да это всё норм, ничего метаполиморфного тут нет.

-----
Stuck to the plan, always think that we would stand up, never ran.





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

Создано: 14 мая 2010 20:00
· Личное сообщение · #4

noph пишет:
или вот такой:
Code:
MOV DWORD PTR SS:[EBP-4],-1
CMP DWORD PTR SS:[EBP-4],0



Может на CMP есть переход стоящий выше, в обход mov?




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

Создано: 14 мая 2010 20:11
· Личное сообщение · #5

noph пишет:
Я просто не представляю, что нужно написать на си (а на нём программа и написана)

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

-----
Everything is relative...





Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 14 мая 2010 21:17 · Поправил: neomant
· Личное сообщение · #6

Вполне нормальный код. Второй пример может так выглядеть на Си:
Code:
  1. DWORD a;
  2. = -1;
  3. if (== 0)


-----
Следуй за белым кроликом





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 14 мая 2010 21:24
· Личное сообщение · #7

такие неосмысленные конструкции часто встречаются, причём несколько раз пробовал убирать такой мусор и всё нормально работает... В связи с чем компиляторы их не оптимизируют хз

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 14 мая 2010 21:35
· Личное сообщение · #8

Скорее всего это гавнокомпилятор дельфи.

-----
Shalom ebanats!





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 14 мая 2010 21:39
· Личное сообщение · #9

SLV скорее си, это он любит разбрасываться памятью

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 14 мая 2010 22:10
· Личное сообщение · #10

Не понял сути предложения про С.

-----
Shalom ebanats!





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 14 мая 2010 22:30
· Личное сообщение · #11

Скорее гомнокомпилятор Си

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 14 мая 2010 22:33
· Личное сообщение · #12

Суть в расточительстве памяти... Вот как-то сравнивал на примере простой проги


ef25_14.05.2010_CRACKLAB.rU.tgz - Fakul.pdf

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 67.4 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 14 мая 2010 23:24 · Поправил: Sunzer
· Личное сообщение · #13

Isaev интересный док, хоть какая то оптимизация в DevC++ включена была?
А вот непонятно зачем ассемблер было туда писать)) до и после одно и тоже ведь, для наглядности разве что.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 14 мая 2010 23:28
· Личное сообщение · #14

это спорил как-то с профессором, именно об ассемблере, поэтому он тоже там есть
в DevC++, как и в Delphi, всё по умолчанию было, ничего не трогал

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 15 мая 2010 03:07
· Личное сообщение · #15

скорее всетаки дельфи - сишные уже давно обучены не использовать фрейм-поинтер, если их спецально не заставить. даже убогий gcc умеет. а вобще такой код характерен для любого hll компилятора - у них чтобы совсем не тормозить при сборке есть ограничения на глубину оптимизации блоков, и на узлах появляются подобныве артефакты. se la vi ёба.



Ранг: 40.4 (посетитель), 3thx
Активность: 0.080
Статус: Участник

Создано: 15 мая 2010 11:31
· Личное сообщение · #16

Второе ещё можно как-то понять, а вот первое... Спрашивается: Какую траву курил автор проги???
Ну так и так ему сюды: Govnokod.ru




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 15 мая 2010 12:32
· Личное сообщение · #17

Да автор-то там причём? Он, что, должен каждую инструкцию в отладчике просмотреть?Это к разработчикам компилера вопросы...

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 15 мая 2010 14:33 · Поправил: Coderess
· Личное сообщение · #18

ZLOvar
Ну так и так ему сюды: Govnokod.ru
Улыбнуло, забавный рессурс




govnokod.ru/1520
Code:
  1. call LABEL
  2. LABEL: pop eax

Получение адреса текущей инструкции убийственным для производительности методом.
Очень убийственный метод

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 15 мая 2010 15:04 · Поправил: MasterSoft
· Личное сообщение · #19

Coderess пишет:
Очень убийственный метод

Ну на то он и http://govnokod.ru/

Не подскажешь менее убийственный? А лучше несколько

Magister Yoda
Не вкурил чёт.....




Ранг: 107.3 (ветеран), 5thx
Активность: 0.20.04
Статус: Участник

Создано: 15 мая 2010 15:05
· Личное сообщение · #20

govnokod.ru/2222 жгут



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 15 мая 2010 16:34
· Личное сообщение · #21

noph пишет:
наличие такого кода говорит о каких-то метаморфах

нет

ToBad пишет:
Может на CMP есть переход стоящий выше, в обход mov?

+1

neomant пишет:
Второй пример может так выглядеть на Си

+1

SLV пишет:
гавнокомпилятор дельфи

Coderess пишет:
гомнокомпилятор Си

скорее говнокодер автор или обфускация

Тема переходит в бесконтрольный флуд. Но чистить не буду, ибо изначально вопрос не требующий философии на три страницы. Ответ был дан, тема закрыта.


 eXeL@B —› Программирование —› вопрос по асм коду
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати