bilka00
сам проэкт под нда
IB
сам проэкт под нда
белка не хочешь сходить в бар “NDA” ?
JeisonWi
MNDMA
bilka00
вот сразу как проэкт сдам )
bilka00
и язву вылечу
IB
­
/ban пидары тут не нужны.
Group Butler [beta]
H͚̓ü̺n̪̬̟ͣho͎̥͆wͧ banned Art!
Anonymous
/ban пидары тут не нужны.
а чё он натворил то?
­
а чё он натворил то?
в ReactOS отметился.
Ned
может он на сторону ровных парней захотел?
Ned
а ты его взял и прогнал
Ned
да и что вообще за подход?
Ned
человек только зашёл, а ты его сразу в бан
­
человек только зашёл, а ты его сразу в бан
Далеко не только зашёл. Во вторых, спам каналами "раскруток"
­
И своего анального друга.
електр🟢нік ✙🟠рчбеч ඞ
в ReactOS отметился.
реактос норм
bilka00
Руткит? :)
не малварь и не то что к ней относиться
bilka00
bilka00
везде есть единопроблемники
Eugene
Бля.... это пиздец!!!!!! 2 почти одинаковых кода. Читаю сектор через ReadFile. Один код работает, другой – выдаёт ошибку (GetLastError=87 - неверный параметр). Весь код ДО этого места ОДИНАКОВЫЙ !!! Да и ошибки не может быть никакой. Диск открывается успешно (так же, как и рабочем коде) и сразу же идёт ReadFile. Запускаю на виртуалке – оба кода работают!!!! На компе – один работает, другой нет. Наверное, час искал ошибку!!! Оказалось (ВНИМАНИЕ!!!) что в коде с ошибкой добавлена переменная, в результате чего буфер для чтения оказался НЕВЫРОВНЕННЫМ по 4-м (или сколько там ему нужно) байтам!!! Причём, код не на асме, а на ЯВУ (Delphi), где выравнивание по умолчанию стоит. Но так как там кое-где используется упокованная запись (несмотря на то, что эта запись потом ещё обёрнута в 2 record'а (структуры, короче)), варавнивание в этом место отключилось.
Eugene
Жесть какая-то! Просто выговориться хотел :))
s54820
Жесть какая-то! Просто выговориться хотел :))
Поэтому надо сразу NTSTATUS смотреть.
Eugene
Приму к сведению на будущее :))
Eugene
Не догадался
s54820
Приму к сведению на будущее :))
А ведь я не прав. В данном случае никак бы не помогло. Прошу прощения.
Eugene
Ну там когда проблема с выравниванием есть же код у NTSTATUS'а
Eugene
А, ну тогда х/з
Vladimir
Бля.... это пиздец!!!!!! 2 почти одинаковых кода. Читаю сектор через ReadFile. Один код работает, другой – выдаёт ошибку (GetLastError=87 - неверный параметр). Весь код ДО этого места ОДИНАКОВЫЙ !!! Да и ошибки не может быть никакой. Диск открывается успешно (так же, как и рабочем коде) и сразу же идёт ReadFile. Запускаю на виртуалке – оба кода работают!!!! На компе – один работает, другой нет. Наверное, час искал ошибку!!! Оказалось (ВНИМАНИЕ!!!) что в коде с ошибкой добавлена переменная, в результате чего буфер для чтения оказался НЕВЫРОВНЕННЫМ по 4-м (или сколько там ему нужно) байтам!!! Причём, код не на асме, а на ЯВУ (Delphi), где выравнивание по умолчанию стоит. Но так как там кое-где используется упокованная запись (несмотря на то, что эта запись потом ещё обёрнута в 2 record'а (структуры, короче)), варавнивание в этом место отключилось.
Вроде процессорам x86 глубоко срать на выравнивание. За ним нужно следить чисто из соображений производительности.
Eugene
Есть бит выравнивания во флагах и cr0 (или cr-каком-то регистре). И я подозреваю, что в ядре он включен.
Vladimir
Есть бит выравнивания во флагах и cr0 (или cr-каком-то регистре). И я подозреваю, что в ядре он включен.
в CR0 и ещё в EFLAGS. Второй - подконтролен юзеру, и если он то работает, то нет, то скорее всего мусор в EFLAGS
bilka00
Бля.... это пиздец!!!!!! 2 почти одинаковых кода. Читаю сектор через ReadFile. Один код работает, другой – выдаёт ошибку (GetLastError=87 - неверный параметр). Весь код ДО этого места ОДИНАКОВЫЙ !!! Да и ошибки не может быть никакой. Диск открывается успешно (так же, как и рабочем коде) и сразу же идёт ReadFile. Запускаю на виртуалке – оба кода работают!!!! На компе – один работает, другой нет. Наверное, час искал ошибку!!! Оказалось (ВНИМАНИЕ!!!) что в коде с ошибкой добавлена переменная, в результате чего буфер для чтения оказался НЕВЫРОВНЕННЫМ по 4-м (или сколько там ему нужно) байтам!!! Причём, код не на асме, а на ЯВУ (Delphi), где выравнивание по умолчанию стоит. Но так как там кое-где используется упокованная запись (несмотря на то, что эта запись потом ещё обёрнута в 2 record'а (структуры, короче)), варавнивание в этом место отключилось.
Я бы в первую очередь написал логер который залогает все передаваемые данные и снимет дамп стэка и регистров в момент вызова read file
bilka00
И тогда уже отталкивался
bilka00
Иногда винапи отказываеться работать если не выровнят стэк
bilka00
В х64 в смысле?
в х86 так то
bilka00
Даже в этом чате по этому поводу было обсуждение где то значительно выше
Eugene
А про какое выравнивание речь? 1, 2 байта вместо 4-х?
Dolphin
Иногда винапи отказываеться работать если не выровнят стэк
на пересылках префиксных насколько помню - исключение в защищенном
електр🟢нік ✙🟠рчбеч ඞ
😂
JeisonWi
Классный ник
Vyacheslav
Вопрос по MASM: Pos PROTO, lpStr:DWORD, cbStr:DWORD, lpSubStr:DWORD, cbSubStr:DWORD .CONST szRequestSep DB 13,10,13,10 slRequestSep = $-szRequestSep INVOKE Pos, EDI, EBX, OFFSET szRequestSep, slRequestSep MASM 12.00.40629.0 ругается на последний аргумент error A2070:invalid instruction operands MASM 6.14.8444 всё компилирует. Если подставить вместо slRequestSep 4, то компилится.
Vyacheslav
Запилил issue. Посмотрю на реакцию https://github.com/slavanap/MASM_bug_demo
Ask
в инвоках аддр надо, не?
Vyacheslav
в инвоках аддр надо, не?
Не работает так ADDR. Тут константа. Если вместо slRequestSep подставить 4, то всё гуд
Ask
а.. недоглядел(
Ask
а если вместо = dd?
Ask
или equ заюзай
Vyacheslav
а если вместо = dd?
Так работает
Vyacheslav
Но почему я должен память занимать под константу
Ask
тогда equ
Vyacheslav
Equ мало чем отличается от =
Vyacheslav
Ошибка с ним та же
Ask
попробуй)
Eugene
INVOKE Pos, EDI, EBX, OFFSET szRequestSep, sizeof szRequestSep
Vyacheslav
попробуй)
Пробовал
Eugene
А slRequestSep убрать
Vyacheslav
INVOKE Pos, EDI, EBX, OFFSET szRequestSep, sizeof szRequestSep
Можно поподробней, как masm догадается про размер, если у меня несколько строк, начинающихся с db может быть?
Ask
избавься от $, это текущий адрес, а у тебя дефайн, который неимеет адреса, соответственно он его посчитать не может, поэтому ошибка
Ask
хм, багу исправили?)
Vyacheslav
Вместо $ во время трансляции подставляется текущий адрес
Vyacheslav
хм, багу исправили?)
Скорее добавили)
Vyacheslav
Я попробую sizeof, как буду у компа
Aiwan \ (•◡•) / _bot
в инвоках аддр надо, не?
Эт если значение в памяти, а у него константа
Vyacheslav
Запилил issue. Посмотрю на реакцию https://github.com/slavanap/MASM_bug_demo
^ вот здесь можно поэкспериментировать
Ask
Эт если значение в памяти, а у него константа
я к тому что он оффсет в инвоке заюал
Ask
без следующей переменной имхо неопределит размер, но кто знает
Vyacheslav
я к тому что он оффсет в инвоке заюал
А там без разницы, потому что offset - это константа. ADDR по типу LEA работает