![]() |
|
![]() ![]() ![]() |
|
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Приветствую!
Вот код:
В чем смысл этого кода? И если он есть, то как эту процедуру вызывать (имеется в виду какие действия нужно выполнить до ее вызова)? -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
rsm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: 3 Всего: 62 |
Особого смысла в этом коде нет: - возврат из функции происходит по адресу на 8 байт дальше оригинального адреса возврата; - возвращаемое значение это лишь сумма байт, составляющих машинный код, расположенный по адресу возврата плюс следующие за ним 4 байта; Есть мнение, что появление этого кода есть либо результат оптимизации компилятором, либо замысел разработчика, имеющий цель и смысл только для него. Никаких особых условий по вызову нет - аргументов функция не имеет, локальных переменных в ней тоже нет. Это сообщение отредактировал(а) rsm - 4.6.2006, 18:37 |
|||
|
||||
DrLazy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.7.2005 Репутация: нет Всего: нет |
Все проще
![]() int YourFunction( int *ptr ) { return *ptr++ + *ptr++; } Added: Виноват, ошибся. вот если бы было 6[ebp] , тогда да.... Это сообщение отредактировал(а) DrLazy - 4.6.2006, 18:47 |
|||
|
||||
rsm |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: 3 Всего: 62 |
И даже не 6, а 8. Потому что первый аргумент функции начинается с ebp+8. neutrino, как вариант, функцию можно использовать для контроля целостности кода примерно так:
Это сообщение отредактировал(а) rsm - 4.6.2006, 19:04 |
||||
|
|||||
DrLazy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.7.2005 Репутация: нет Всего: нет |
Ну в обем да
![]() ![]() Причем я так предполагаю что адрес вызова + 8 окажется гдето посередине инструкции. Опять таки защита от дизасма ![]() |
|||
|
||||
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Спасибо всем за ответы! Не знал, что у нас в этом форуме так быстро стали реагировать
![]() Да, это я понимаю. Я вот ломал голову на кой черт это писать в программе...
Вот, чего я ожидал. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |