169 похожих чатов

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно

переданных меток?
Просто .label1-.label2, и вернуть значение.

35 ответов

126 просмотров

Не понял, а что мешает просто написать label1-label2?

КТ315- Автор вопроса
The Bird of Hermes
Не понял, а что мешает просто написать label1-labe...

Потому что придётся писать это слииишком много)

КТ315
Потому что придётся писать это слииишком много)

Так тебе все равно надо будет в макрос метки передавать

КТ315
Потому что придётся писать это слииишком много)

эм, а наименования меток писать что не придётся что ли, а если так то разница не велика

КТ315
Потому что придётся писать это слииишком много)

Или у тебя метки по номерам? Типо label1, label2,... labelN?

КТ315- Автор вопроса
The Bird of Hermes
Так тебе все равно надо будет в макрос метки перед...

Это будет красивее. ebp+(off DATA_START) Вместо ebp+(DATA_START-.copierCode)

КТ315- Автор вопроса
Aiwan \ (•◡•) / _bot
var dd lbl1 - lbl2

и чем это не устраивает?

КТ315
Это будет красивее. ebp+(off DATA_START) Вместо ...

Распиши примерный синтаксис, как ты его видишь на примере его использования

КТ315- Автор вопроса
Aiwan \ (•◡•) / _bot
и чем это не устраивает?

Я пишу независимый код, и мне это вычисление смещения надо как раз чтобы находить мои переменные.

КТ315- Автор вопроса
The Bird of Hermes
Распиши примерный синтаксис, как ты его видишь на ...

Вот так: off DATA_START Внутри напрямую пропиши arglabel-.copierCode Потому что всё относительно неё адресоваться будет.

КТ315
Это будет красивее. ebp+(off DATA_START) Вместо ...

а чем подобное не устраивает default_http_connection: db 'Connection: ' .value = $ - default_http_connection db 'close ', 13, 10 ; or keep-alive .length = $ - default_http_connection

КТ315- Автор вопроса
КТ315- Автор вопроса
КТ315
Да.

Не получится, макросы не могут возвращать значение в фасме. Поэтому я постоянно говорю, что exitm нужен)

КТ315
Это вообще не про то))

а по моему то, по примеру выше можно и такое заюзать

КТ315- Автор вопроса
Mixail Frolov
а по моему то, по примеру выше можно и такое заюза...

start: call @f @@: pop eax sub eax, 5 mov ebx, dword[eax+(myvar1-start)] mov ebx, dword[eax+(myvar2-start)] mov ebx, dword[eax+(myvar3-start)] ret myvar1: myvar2: myvar3:

КТ315- Автор вопроса
The Bird of Hermes
virtual at eax используй

Я не разбираюсь в макросах вообще)

КТ315
Я не разбираюсь в макросах вообще)

virtual позволяет объявить динамическую метку относительно любого адреса

КТ315- Автор вопроса
The Bird of Hermes
virtual at eax используй

Ааа, не, не вариант. Там не всегда через eax адресация будет.

КТ315
Ааа, не, не вариант. Там не всегда через eax адрес...

Давай так, а что ты в принципе хочешь автоматизировать?

КТ315- Автор вопроса
КТ315
Ааа, не, не вариант. Там не всегда через eax адрес...

может сделаешь как у меня, через переменную и $ - base ? так красивее будет в самом коде

КТ315- Автор вопроса
Mixail Frolov
может сделаешь как у меня, через переменную и $ - ...

Дубликаты меток создавать надо, а у меня их примерно 30-40.

КТ315
Вычисление смещения относительно метки.

Относительно одной определённой метки?

КТ315- Автор вопроса
Aiwan \ (•◡•) / _bot
Lea eax, [metka + 5]

Я выгрузил код в другую память. Допустим, в стек. И metka указывает на 0x401000, а не на правильный новый адрес внутри кода в стеке, и код сломался. Как пример.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта