PE? (для format binary есть $%%)
format PE GUI 4.0 DLL at 7000000h on ’stub.exe’
На фасме можно создать PE вручную и иметь полный доступ к формату, включая любые поля и смещения, не уверен правда это ли тебя интересует. Что-то вроде этого
Можешь сам инкрементировать перед началом каждой секции на align_up($-$$, 512), можешь прямо макрос section сделать. А изначальное захардкодить в 512.
этот лучше) https://t.me/ChatAssembler/285082
я хотел сделать инициализацию своих локальных переменных, т.е local h dd ? - не обнулять, local h dd 0 - обнулять
Не понял, как это связано. И инициализация уже поддерживается в стандартных макросах.
virtual at ebp-4 loc dd ? s = $-$$ ; s = 4, а надо бы 0 end virtual
Это не так делается. Переопределяй дл, матчи ? матчем.
Всего 551 байт... Но по идее можно уменьшить до 260~
Да, точно. Если не изменяет память, это нижний лимит валидного PE файла
match $$,($$+4) { virtual at ebp-4 loc dd ? s = $-$$ end virtual } или так virtual at ebp-4 loc dd ? match $$,($$+4) { s = $-$$ } end virtual
тестил? s=0 всегда(
тестил. match $$,($$- (-4)) { virtual at ebp+ (-4) s = $-$$ if s=-4 display 'OK' end if loc dd ? s = $-$$ if s=0 display 'OK' end if loc2 dd ? s = $-$$ if s=4 display 'OK' end if end virtual }
а как же loc dd 0
позицию $ хоть dd 0 хоть dd ? смещают одинаково.
а в чем смысл тогда) мне нужно было $%%
зачем тебе нужен $%% практически? (предположим он у тебя известен, и с его помощью ты хочешь что?)
уже незачем, а так virtual at ebp-4 loc1 dd ? s = 0 end virtual virtual at ebp-8 loc2 dd 0 s = 4 end virtual mov dword [loc2],0 ; if s = 4
Зачем делать отдельные virtual-ы?
Обсуждают сегодня