Aiwan \ (•◡•) / _bot
👆 вот сюда ассуме вставляю\заменяю
Eugene
А, ну да, есть момент такой. mov eax,[eax.hdr] выдаёт ошибку, но и mov edx,eax тоже
Eugene
Замени assume eax:none на purge eax
Eugene
@Aiwan, ну что молчишь, работает?
Aiwan \ (•◡•) / _bot
ща попробую, не видел сообщение
Aiwan \ (•◡•) / _bot
да, работает. так и оставлю
Eugene
Короче, purge ничего не меняет. Можно его убрать, будет то же самое. И даже если оставить, всё равно можно к структура обращаться через eax.hdr...
Eugene
А вот assume eax:none запарывает всё.
Aiwan \ (•◡•) / _bot
мож ,с учетом того что у меня всего лишь 1 раз определяются виртуальные данные, оставить первоночальный вариант?
Eugene
Короче, вот так работает... Определяешь 1 раз где-то вверху struct none dword dd ? ends потом пишешь assume eax:none Можно обратиться к [eax.dword], но это будет то же самое, что и [eax]. Собственно, dword можно заменить на что угодно, хоть на точку.
Eugene
К сожалению, совсем убрать эту строку нельзя (dword dd ?)...
Aiwan \ (•◡•) / _bot
Собственно, dword можно заменить на что угодно, хоть на точку. это и есть в определении none
Aiwan \ (•◡•) / _bot
struc none { label . }
Eugene
Да, но там struc, а тут struct.
Eugene
Пора бы Томашу переработать библиотеку макросов...
s54820
Короче, purge ничего не меняет. Можно его убрать, будет то же самое. И даже если оставить, всё равно можно к структура обращаться через eax.hdr...
Вот я поигрался, и похоже, что правильный синтаксис: assume eax: безо всяких none. И всё работает. Вроде бы. @Aiwan, проверь, пожалуйста? Фактически, оно там делает не purge, а restore.
Eugene
Хм, я eax: пробовал, ничего не менялось. Как реагирует на: mov eax,[eax.hdr] ?
s54820
Eugene
Но я бы проверил в цикле в большом кол-ве потоков :) На всякий случай.
bilka00
В документации маек много не написано
Aiwan \ (•◡•) / _bot
#book макросредства языка MASM с wasm.in
Vyacheslav
Спорное утверждение
вполне логичное. Если они явно не промисали многопоточность, то потом могут что угодно про неё написать, в том числе и запретить её. Поэтому безопаснее всегда писать потокобезопасный код в тех случаях, когда не указана возможность обратного.
bilka00
Так что чуточку моей подливки сверху не будут сильно мешать
bilka00
(А на деле я сделал потокобезопасно но в текущем случае не была важна скорость настолько что бы заморачиватся но для себя пометочку что так все работает сделал)
JeisonWi
Классный никнейм
­
ЧО?
­
А ты внимание на закреплённое сообщение обрати.
електр🟢нік ✙🟠рчбеч ඞ
0h-1fh зарезервированы
Eugene
Это в DOS'е только.
Eugene
Сишные функции доступны?
Vyacheslav
Тут по WinAPI вопросы задавать норм? Кто-нибудь знает, как служба RDP сервера взаимодействует с ядром? В частности, как создаётся интерактивная сессия для пользователя? И можно ли эмулировать её создание?
Vyacheslav
Если будешь дёргать из ассемблера. Иначе тебе лучше спросить в чатик по %языкнейм%.
У меня вариант залезть в ассемблер Windows RDS. Вот интересуюсь, может, кто-то туда уже залезал.
Vyacheslav
Кстати, где последняя версия OllyDbg x64 лежит? Он ещё популярен?
Vyacheslav
Хватит насиловать труп
Я не это спрашивал.
bilka00
Тут по WinAPI вопросы задавать норм? Кто-нибудь знает, как служба RDP сервера взаимодействует с ядром? В частности, как создаётся интерактивная сессия для пользователя? И можно ли эмулировать её создание?
Я как то пытался это исследовать, но увы тогда меня отвлекли. Документации по этому поводу я не нашел, так что windbg в зубы и смотреть внутренности
Vyacheslav
Откуда цитата?
JeisonWi
Вакансия на какую-то малварную позицию, не помню.
bilka00
Я не это спрашивал.
Ну ало оля дефакто устарела. x64dbg отличная альтернатива. Тут и олиподобный язык для скриптинга и питон для этих же целей. А сам отладчик уже достаточно стабильный, достаточная база плагинов
bilka00
И отзывчивые разрабы
Если его не посадят)) то да, комьюнити отладчика часто помогает решать вопросы сложные
Eugene
В телеге есть чат по x64dbg с разрабами. А Оля 64 же так и не вышла, разве нет?
Aiwan \ (•◡•) / _bot
кто нить бачит в макросах fasm??? include 'win32ax.inc' struc db [data] { common . db data .size = $ - . } macro GetSize data { common local sz if data in <al,ah,bl,bh,cl,ch,dl,dh> sz=1 display sz+48 mov al,data cbw cwde ;mov [dwNum],eax else if data in <ax,bx,cx,dx,si,di,sp,bp> sz=2 display sz+48 mov ax,data cwde else if data in <eax,ebx,ecx,edx,esi,edi,esp,ebp> sz=4 display sz+48 mov eax,data else ;if data eqtype [0] sz=data.size ;выдает ошибку display sz+48 mov eax,data.size end if } .data fff db 3 db 12 ddd db 'abcdef',0 .code start: GetSize fff ;mov eax,ddd.size ;если size использовать вне макроса - ошибки нет invoke ExitProcess,0 .end start цель сделать макрос который по параметру определяет его размер. для регистров все понятно, а вот как сделать если использовать значение памяти или значение по адресу в памяти???
Eugene
Ну если только ты не придумаешь что-нибудь через virtual, хотя в голову ничего конкретного не приходит.
Eugene
Можно ещё определить макросы-аналоги db, dw, rb, rw... и там создавать имя label.size. Но это костяли опять же. Но если чисто для себя, то можно как вариант, если уж очень надо.
Aiwan \ (•◡•) / _bot
от части решил этот вопрос else if data eqtype byte[0] ... GetSize byte [fff]
Aiwan \ (•◡•) / _bot
сам макрос это прилюдия к общему макросу
Aiwan \ (•◡•) / _bot
проверка делается на сам размер в параметре в вызове на ячейку памяти
Aiwan \ (•◡•) / _bot
и еще подсказали
Aiwan \ (•◡•) / _bot
Может уже ответили, но sz=data.size ;выдает ошибку внутри макроса должно быть sz=data#.size, тогда препроцессор сможет подставить вместо data параметр макроса, и всё заработает.
Eugene
А, у тебя параметр - это элемент структуры?
Aiwan \ (•◡•) / _bot
нет
Aiwan \ (•◡•) / _bot
точнее не всегда
Aiwan \ (•◡•) / _bot
может быть как и регистр так и участок памяти
Aiwan \ (•◡•) / _bot
но в любом случае есть идея все по другому сделать, без этих size
Aiwan \ (•◡•) / _bot
macro PrintDec data,[size] { if size eq if data in <al,ah,bl,bh,cl,ch,dl,dh> display "регистр 1 байт" mov al,data else if data in <ax,bx,cx,dx,si,di,sp,bp> display "регистр 2 байта"" mov ax,data else if data in <eax,ebx,ecx,edx,esi,edi,esp,ebp> display "регистр 4 байта" mov eax,data end if else if data eqtype [0] & size eq BYTE display "ячейка памяти 1 байт" movsx eax, byte data movzx ebx, byte data else if data eqtype [0] & size eq WORD display "ячейка памяти 2 байт" movsx eax,word data movzx ebx,word data else if data eqtype [0] & size eq DWORD display "ячейка памяти 4 байт" mov eax,dword data mov ebx,dword data end if end if } .data fff db -3,9 db 12 ddd db 'abcdef',0 .code start: PrintDec [fff],word вот так все работает
Serhii
Ребят где можно скачать visual masm а то оф сайт не работает
Aiwan \ (•◡•) / _bot
она глучная если что
Aiwan \ (•◡•) / _bot
вот, месяца два назад скачивал
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
или...
Serhii
Все я на git нашел странно что у них с офф сайтом
Aiwan \ (•◡•) / _bot
An optimization guide for assembly programmers and compiler makers (2018)
Eugene
#book
Что, лучше Агнера? :)
Aiwan \ (•◡•) / _bot
Что, лучше Агнера? :)
Вроде это и есть от него
Aiwan \ (•◡•) / _bot
Screenshot (14 февр. 2019 г. 18:09:06)
Eugene
А, ну тогда xk8.ru/agneroptasm xk8.ru/agneroptcpp