Size: a a a

Ассемблер

2020 September 28

ST

Saenro T in Ассемблер
http://247ctf.com
Рейтинговая система, Go! сюда)
источник

ST

Saenro T in Ассемблер
ELF формат файлов очень часто встречается, возникают некоторые неудобства в связи с этим.
источник

RG

R G in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
в процедуре
locals
myloc1 dd ?
myloc2 dw 7
endl
и вот во что оно превращается, просто ebp минус константы
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
R G
и вот во что оно превращается, просто ebp минус константы
я про то определены ли эти метки после парсинга fas? если определены то как выглядит адрес?
источник

RG

R G in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
я про то определены ли эти метки после парсинга fas? если определены то как выглядит адрес?
ну вот например тут у flags адрес ebp-56 . Имеешь ввиду, что может быть некий символ со значением 56 ?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
делая "свой" отладчик можно контролить содержимое локальных переменных через их метки, следя за стеком вызова
источник

s

s54816 in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
я про то определены ли эти метки после парсинга fas? если определены то как выглядит адрес?
[ebp-..var?xx] Хотя нет, там у самой ..var?xx значение относительно ebp.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
R G
ну вот например тут у flags адрес ebp-56 . Имеешь ввиду, что может быть некий символ со значением 56 ?
не, ты ответил
flsgs equ [ebp-56]
источник

RG

R G in Ассемблер
s54816
[ebp-..var?xx] Хотя нет, там у самой ..var?xx значение относительно ebp.
аа, значит смещения локальных переменных начинаются с двух точек, сейчас гляну
источник

s

s54816 in Ассемблер
R G
аа, значит смещения локальных переменных начинаются с двух точек, сейчас гляну
Нет, две точки — это просто способ фасма одновременно сделать глобальную метку, но при этом не изменить последнюю глобальную метку, к которой будут приклеиваться .локальные метки. Во многих макросах такое используется.
источник

RG

R G in Ассемблер
s54816
Нет, две точки — это просто способ фасма одновременно сделать глобальную метку, но при этом не изменить последнюю глобальную метку, к которой будут приклеиваться .локальные метки. Во многих макросах такое используется.
кстати там после ? вообще какой-то name mangling идет я заметил
источник

s

s54816 in Ассемблер
R G
кстати там после ? вообще какой-то name mangling идет я заметил
Это local макросов. macro foo { local bar } при каждом использовании макроса будет делать символ bar (чем бы он ни был) уникальным, путём добавления случайных символов. Только не нужно путать это с локальными переменными в proc, это не то, это именно препроцессор.

macro foo {
   local bar
   display `bar,13,10
   bar: ; bar?xyz, каждый раз уникальное имя.
}

foo ; displays bar?0
foo ; displays bar?1
foo ; displays bar?2
источник

RG

R G in Ассемблер
s54816
Это local макросов. macro foo { local bar } при каждом использовании макроса будет делать символ bar (чем бы он ни был) уникальным, путём добавления случайных символов. Только не нужно путать это с локальными переменными в proc, это не то, это именно препроцессор.

macro foo {
   local bar
   display `bar,13,10
   bar: ; bar?xyz, каждый раз уникальное имя.
}

foo ; displays bar?0
foo ; displays bar?1
foo ; displays bar?2
хм, все так интересно оказывается.. вроде понятнее стало, но надо макросы изучить
источник

RG

R G in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
делая "свой" отладчик можно контролить содержимое локальных переменных через их метки, следя за стеком вызова
насколько я понял, локальные переменные это задача самого отладчика их обнаруживать. А сам fas в этом плане не поможет, ибо ebp может меняться по ходу программы совершенно по разному
источник

RG

R G in Ассемблер
то есть максимум, что я найду это где-то найду символы со значением смещения относительно ebp и все, если вообще такие будут
источник

s

s54816 in Ассемблер
R G
насколько я понял, локальные переменные это задача самого отладчика их обнаруживать. А сам fas в этом плане не поможет, ибо ebp может меняться по ходу программы совершенно по разному
Нет, отладчик может взять инструкцию по адресу, ну допустим, 0x12345678, увидеть там mov eax,[ebp-123h], залезть в .fas, и во-первых, преобразовать строку в mov eax,[ebp-somelocalvar], а во-вторых, разрешить добавлять всякие там watches, показывать список локальных переменных и т. д. Это всё возможно, но неуниверсально, будет работать только с родными proc-макросами фасма. Для других макросов логику придётся менять. По крайней мере, я себе примерно так это представляю, я не пробовал локальные переменные делать.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
R G
насколько я понял, локальные переменные это задача самого отладчика их обнаруживать. А сам fas в этом плане не поможет, ибо ebp может меняться по ходу программы совершенно по разному
если в fas есть инфа о наличии таких меток локальных переменных с базой на ebp, то это облегчает жизнь
источник

RG

R G in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
если в fas есть инфа о наличии таких меток локальных переменных с базой на ebp, то это облегчает жизнь
да, надо это исследовать. Возможно утилита symbols выводит не всё..
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
кстати, а кто как определяет массив структур?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
я в свое время голову ломал чтоб исходники с масм переписать на фасм
источник