![]() |
eXeL@B —› Вопросы новичков —› Локальные переменные (IDA) |
Посл.ответ | Сообщение |
|
Создано: 11 января 2012 03:46 · Поправил: VintProg · Личное сообщение · #1 Есть такой код: Code:
что тут именно происходит? какие-то значение из регистров ebx, esi, edi, ebp кидаются в стек, потом указатель стека мину суется esp-30h и обнуление... для чего такая ерунда делается? ![]() |
|
Создано: 11 января 2012 07:54 · Личное сообщение · #2 |
|
Создано: 11 января 2012 08:41 · Личное сообщение · #3 VintProg пишет: какие-то значение из регистров ebx, esi, edi, ebp кидаются в стек Состояния регистров сохраняются. Значит ниже регистры используются для работы функции. Потом состояние должно восстановиться путем извлечения сохраненных состояний со стека. VintProg пишет: потом указатель стека мину суется esp-30h Потом резервируется 30h (48d) байт на стеке. Для чего - нужно смотреть дальше по коду, видимо под локальные переменные, на которые не хватило регистров, или просто под небольшой буфер. VintProg пишет: и обнуление... Обнуляется младшие 8 бит регистра ebx VintProg пишет: для чего такая ерунда делается? Для пошагового управления процессором, для чего же еще. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 11 января 2012 11:40 · Личное сообщение · #4 |
|
Создано: 11 января 2012 17:16 · Личное сообщение · #5 |
|
Создано: 11 января 2012 17:19 · Личное сообщение · #6 |
|
Создано: 11 января 2012 17:27 · Личное сообщение · #7 VintProg пишет: Я хочу научится, понимать это глубоко. ![]() Найди книги - Ассемблер для процессоров Intel Pentium - Юрий Магда Assembler. Практикум - Юров В.И. Assembler. Учебник для вузов. Второе издание - Юров В.И. Пирогов В. - Ассемблер и дизассемблирование 2006 В сети есть) Ищи сам) Помогает в понимании ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
Создано: 11 января 2012 18:11 · Личное сообщение · #8 74 cb JZ rel8 Jump short if zero (ZF <-- 1). кстати вот что в мануалах нашел. Что означает это стрелка <--? Я не могу понять что происходит с ZF. написано прыжок если 0. а если такая конструкция? Code:
не могу понять, здесь же не ноль, значит прыжка не будет? ![]() |
|
Создано: 11 января 2012 18:38 · Поправил: neomant · Личное сообщение · #9 |
|
Создано: 11 января 2012 18:53 · Поправил: Hexxx · Личное сообщение · #10 будет прыжок. cmp делает вычитание т.е. 100-100=0 и будет установлен флаг Z mak пишет: Ассемблер для процессоров Intel Pentium - Юрий МагдаAssembler. Практикум - Юров В.И.Assembler. Учебник для вузов. Второе издание - Юров В.И.Пирогов В. - Ассемблер и дизассемблирование 2006 имхо полезнее прочитать главу "Шаг седьмой. Идентификация ключевых структур языков высокого уровня" в "Техника хакерских атак. Фундаментальные основы хакерства" Криса Касперски. А не читать книги про абстрактный ассемблер. Справочник по асму конечно нужен, но читать его... ----- Реверсивная инженерия - написание кода идентичного натуральному ![]() |
|
Создано: 11 января 2012 19:28 · Поправил: VintProg · Личное сообщение · #11 |
|
Создано: 11 января 2012 20:40 · Личное сообщение · #12 |
|
Создано: 11 января 2012 21:30 · Личное сообщение · #13 |
|
Создано: 12 января 2012 08:27 · Поправил: PE_Kill · Личное сообщение · #14 VintProg пишет: если так, то значит будет больше нуля, в флаге, если не рассматривать отрицательные числа У процессора нет знаковой арифметики, есть что то вроде ее эмуляции посредством флагов и спецкоманд. А у jz есть синоним - je. Прыжок если равно. Т.е. пример выше можно рассматривать или так: (jz) если eax - 100h равно нулю, то... или так (je) если eax равно 100h, то... VintProg пишет: да я имел введу вообще, может по глубине стека ориентирования лучше, в исследование... По глубине стека можно определить глубину стека ![]() ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 12 января 2012 10:28 · Личное сообщение · #15 |
![]() |
eXeL@B —› Вопросы новичков —› Локальные переменные (IDA) |