Перейти к содержанию

Взлом Witcher


Рекомендуемые сообщения

1 минуту назад, Xipho сказал:

Если  надумаешь писать с OBS, свяжись со мной в скайпе, я тебе помогу настроить ее для наилучшего качества записи видео и голоса.

Вот за это заранее - БОЛЬШОЙ Маглоб!!!:D

Ссылка на комментарий
Поделиться на другие сайты

Только что, Xipho сказал:

В субботу после 13 часов по МСК у меня будет время. Можем в это время заняться настройкой. 

Не получится, к сожалению - буду на работе, приеду только в лучшем случае к 21.00. А в воскресение у тебя не будет время?

Ссылка на комментарий
Поделиться на другие сайты

Только что, Garik66 сказал:

Не получится, к сожалению - буду на работе, приеду только в лучшем случае к 21.00. А в воскресение у тебя не будет время?

В воскресенье,  надеюсь, если ничего срочного не возникнет, будет тоже время с 13.00 по МСК. 

Ссылка на комментарий
Поделиться на другие сайты

Только что, Xipho сказал:

В воскресенье,  надеюсь, если ничего срочного не возникнет, будет тоже время с 13.00 по МСК. 

ОК!

Ссылка на комментарий
Поделиться на другие сайты

@krocki, если вдруг интересно, то регистр ESP - это вершинка стека. А штуковины вида "MOV EAX, [ESP+4]" - это чтение аргументов функции. Попробую примерно объяснить суть. Вызываешь ты функцию:

 

invoke Foo,1,2

 

Эквивалент:

 

PUSH 2

PUSH 1

CALL [Foo]

 

Как при этом работает PUSH? Допустим, что оба параметра у тебя - 32-битные. Стек изначально выглядит как-то так:

 

0000

0000

0000

 

Когда ты делаешь PUSH, стек сдвигается:

 

PUSH 2

 

0002

0000

0000

0000

 

А после вызова функции через стек передается адрес возврата, вместе с параметрами:

 

0x1234

0001

0002

0000

0000

0000

 

И вот ESP при этом будет указывать на 0x1234, [ESP+4] - 1, [ESP+8] - 2, типа того. Сама по себе команда push делает вот так:

 

PUSH arg - это:

 

SUB ESP,4

MOV [ESP], arg

 

Т.е. "отрезается" 4 байта на стеке и в них записывается аргумент, который на стек нужно положить.

 

PS: Я чуток дополню. Копирование ESP в EBP нужно для того, чтобы всегда знать, где изначально лежали параметры. Процедура, которую вызывают, обращается к аргументам на стеке через EBP, в который предварительно сохраняет ESP в прологе функции. Обычно даже в асме все стараются придерживаться сишного соглашения о вызовах.

  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.