Size: a a a

Ассемблер

2021 August 22

ВВ

Вячеслав Васютин... in Ассемблер
И все-таки, mov ebp, esp я до сих пор не могу понять, нужны ответы на вопросы: "Почему это нужно делать?" "Что, если сделать по-другому?", " Что, если этого не делать? ", а вот " Как это сделать?" - показано.
источник

E

Entusiast in Ассемблер
Ну это странный вопрос...
Смотри:

; Сохранить оригинальный ESP в EBP

; В ESP установить указатель на самописный стэк
push eax ; Теперь в нашем стэке [stack_start] будет значение EAX

; Восстанавливаем оригинальный стэк из EBP в ESP
источник

LG

Lena Golovach in Ассемблер
#Дизассемблирование  2022

GHIDRA. Полное руководство

Автор: Игл К., Нэнс К

Платформа Ghidra, ставшая итогом более десяти лет работы в Агентстве национальной безопасности, была разработана для решения наиболее трудных задач обратной разработки (Reverse Engeneering – RE). После раскрытия исходного кода этого инструмента, ранее предназначавшегося только для служебного пользования, один из лучших в мире дизассемблеров и интуитивно понятных декомпиляторов оказался в руках всех специа­листов, стоящих на страже кибербезопасности.

Эта книга, рассчитанная равно на начинающих и опытных пользователей, поможет вам во всеоружии встретить задачу RE и анализировать файлы, как это делают профессионалы.

СКАЧАТЬ 🗂
источник

ВВ

Вячеслав Васютин... in Ассемблер
У меня компа нет, я пользуюсь google cloud shell - Linux x86_64
источник

E

Entusiast in Ассемблер
Лучше сразу в описание файла закинь этот текст
И (хэштег)book сделай

А то как реклама, получается
источник

LG

Lena Golovach in Ассемблер
просто переслал ссылку
источник

ВВ

Вячеслав Васютин... in Ассемблер
На андроиде
источник

E

Entusiast in Ассемблер
Если не делать
mov ebp, esp

В данном случае - тогда как нам восстанавливать настоящий изначальный стэк? Нужен какой-то регистр, где будем хранить оригинальный указатель. Можно сделать и так:

mov edi, esp

mov esp, mystack
push eax

mov esp, edi
push eax

@lan219
Понял?
источник

ВВ

Вячеслав Васютин... in Ассемблер
Просто повытягивать от туда pop'oм в регистры и обнулить их
источник

E

Entusiast in Ассемблер
push/pop не будет работать, мы изменили адрес стэка, мы изменили ESP

А push/pop работают с ESP, какое-бы там значение ни было
источник

ВВ

Вячеслав Васютин... in Ассемблер
Ясненько... Значит, ни одна книга, на русском языке, по ассемблеру мне не помогает..😢. Есть английские только хорошие книги, в смысле, не просто описание инструкций и примеры их работы, а примеры программ, какие-нибудь практические задания и т.д. Ведь какой ЯП учат просто по описаниям функций? Знания не систематизированны, не показано как и зачем этим пользоваться и т.д
источник

ВВ

Вячеслав Васютин... in Ассемблер
И желательно для новичков..
источник

E

Entusiast in Ассемблер
mov ebp, esp   ; EBP = original stack

mov esp, mystack ; ESP = fake stack
push eax ; EAX -> mystack (fake stack)
push ebx ; EAX -> mystack (fake stack)

mov esp, ebp   ; ESP = original stack
push eax ; EAX -> ESP (original stack)
push eax ; EAX -> ESP (original stack)
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
источник

ВВ

Вячеслав Васютин... in Ассемблер
А... Вот оно, даже, что🤔
источник

d

disba1ancer in Ассемблер
ты должен выделить под него место, esp изначально настраивается на конечную часть этой области и когда твоей функции нужно место на стеке он сдвигает esp вниз, так она говорит всем, это место на стеке моё, не трогайте его, когда функция завершается, она освобождает стек, восстанавливая esp в предыдущее состояние
источник

ВВ

Вячеслав Васютин... in Ассемблер
Ну что? Есть ли какие-нибудь книги? Или свою продолжать читать?
источник

d

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

E

Entusiast in Ассемблер
Тебе же уже советовали - ставь задачу перед собой, и формулируй вопросы в Google.
На основе выданных результатов ты получаешь ещё одну формулировку, и так пока не дойдёшь до ответа, предварительно ещё вычитав кучу информации в интернете.
Это лучше книг, в наше время
источник

E

Entusiast in Ассемблер
Предлагаешь дать новичку пример с оптимизированным кодом?
источник