@ENERGY_STAFF
ты какой нашел?
Ask
алина четотам, толи для анализа толи еще чет, малварь для пос терминалов вродь
@ENERGY_STAFF
точно, она самая)
@ENERGY_STAFF
кстати не дизассемблирует когда линкуешь как данные, вот такая воть каша получается
Ask
Компиллер жжот))
@ENERGY_STAFF
изза компилятора?
Ask
изза компилятора?
А ты как обьявил?
@ENERGY_STAFF
ну как выше писал void(*f)(); f = (void(*)())&mthread; (void)(*f)();
@ENERGY_STAFF
https://github.com/xoreaxeaxeax/movfuscator ?
дык этож под линух только
Ask
ну как выше писал void(*f)(); f = (void(*)())&mthread; (void)(*f)();
Хз, у меня твой вариант норм компилит) оптимизацию включили/отключи
@ENERGY_STAFF
отключена, Disabled (/Od)
@ENERGY_STAFF
ты тоже в студии компилишь?
@ENERGY_STAFF
или может я че не так делаю(
Ask
Эх, удали лишние символы и пробелы, скопируй, в оле/х64 открой ченить и вставь
@ENERGY_STAFF
OllyDbg ты имеешь ввиду?
dukeBarman
дык этож под линух только
к тому же есть декомпилер под такое
@ENERGY_STAFF
кстати, если в хексредактор закинуть шестнадцатеричне значения то тоже должен отдизасемблить
@ENERGY_STAFF
в ольке норм открылось
Anonymous
incboth kernel32
Anonymous
а какая разница где писать говнокод
Anonymous
.data?
Anonymous
Anonymous
invoke LoadImage
Dmitry
чуваки, а научите меня парсить инструкции mov регистр, регистр в x64
Dmitry
я тут совсем запутался
Dmitry
может префиксоваться 48, 49, 4C, 4D
🦥Alex Fails
напиши грамматику, и построй парсер
Dmitry
ну короче, если 48, то опкод 89 или 8B - тут все как в х86
Dmitry
а вот если хитрые регистры (r8-r15), тогда все интереснее
Dmitry
префиксов дохуя
Dmitry
да ты мне дай доку, я напишу парсер
🦥Alex Fails
MovInstruction = <48h | 49h | 4ch | 4dh> <opts>...
Dmitry
я просто не хочу таблицей делать
Dmitry
я хочу парсить сам modr/m
Dmitry
потому что иначе таблица гигантская будет
🦥Alex Fails
Новенький, свеженький Intel's Software Developer Manual. Прямо с полки^W^W с сайта Intel #book #intel #softwaremanual
Dmitry
спасибо, сейчас поищу
Dmitry
так
Dmitry
где опкоды? :)
🦥Alex Fails
в оглавлении пдф-ки погляди
Dmitry
так, вижу REX.W + 89 - mov r/m64,r64 и REX.W + 8B - mov r64, r/m64
Dmitry
префикс нужно совместно с modr/m парсить?
🦥Alex Fails
конечно
Dmitry
я ищу сейчас спецификацию префикса
Dmitry
короче, задача-то у меня следующая: на вход даётся три байта и регистр нужно выяснить, являются ли эти три байта инструкцией mov заданный_регистр, другой_регистр и вернуть другой_регистр ну или ничего не вернуть в случае если это не мов
Dmitry
блядь, ну нигде не могу найти описалово префикса
Dmitry
а, всё, кажись проссал
Dmitry
так, я тут буду вслух рассуждать, окей? всё равно же я по теме чятика разговариваю
Dmitry
итак, REX.W состоит из: 0100 W R X B
Dmitry
0100 всегда фиксировано
Dmitry
W - показывает, что у нас 64-битные операнды
Dmitry
т.е. я конструирую его начиная с 01001 R X B. X - относится к SIB. мне не нужен SIB, поэтому у меня всегда будет там 0. т.е. я ищу паттерн 01001 R 0 B
Ruslan
насколько помню сиб юзается при екстендед регистрах
Ruslan
я имею виду 32 разряда
Ruslan
на 64 не знаю
Ruslan
не писал
Ruslan
когда писал генератор кода для подмножества асемблера находил таблицы в сети: там для всех команд быіли коды
Ruslan
так для мува там больше десяти не будет
Ruslan
если тебе надо выяснить мув ли ето
Ruslan
можно обычным сравнением смотреть
Dmitry
мне не просто нужно выяснить мов ли это
Dmitry
мне нужно... ну я см. выше расписал
Dmitry
у меня на входе три байта и регистр, скажем, eax и мне нужно выяснить, являются ли эти три байта инструкцией mov eax, другой_регистр и, если да, получить другой_регистр
Dmitry
так, ну значит дальше
Dmitry
байт R означает, что используется расширенный регистр в поле reg
Dmitry
ой
Dmitry
бит
Dmitry
а бит B означает, что используется расширенный регистр в поле rm
Dmitry
я генерирую две маски
Dmitry
итак, их начало
Dmitry
если регистр rax - rdi, то префикс в обеих масках 48
Dmitry
а если регистр r8-r15, то получаются две маски: 49 = 01001001 - новый регистр в modr/m в поле rm 4C = 01001100 - новый регистр в modr/m в поле reg
Dmitry
ой бля
Dmitry
наоборот
Dmitry
во, поправил.
­
Да
Ruslan
вот тут коди команд меняютс по порядку: http://ref.x86asm.net/coder32.html