Size: a a a

Ассемблер

2020 December 19

АМ

Алексей Маринченко... in Ассемблер
Код из учебника. Досбокс выдает не совсем то что надо и зависает. В чем причина?
источник

АМ

Алексей Маринченко... in Ассемблер
источник

АМ

Алексей Маринченко... in Ассемблер
Тут лучше видно код, на всякий случай
источник

A

Aleksandr in Ассемблер
В том, что код для COM
источник

A

Aleksandr in Ассемблер
А ты формируешь EXE
источник

АМ

Алексей Маринченко... in Ассемблер
Aleksandr
В том, что код для COM
Ах, да
источник

АМ

Алексей Маринченко... in Ассемблер
И как собрать в ком?
источник

A

Aleksandr in Ассемблер
Кажется, tlink /t
источник

A

Aleksandr in Ассемблер
Но точно не помню
источник

АМ

Алексей Маринченко... in Ассемблер
Попробую
источник

АМ

Алексей Маринченко... in Ассемблер
Да, спасибо, заработало 😅
источник

D

Den in Ассемблер
Den
инжектить шеллкод - это пока непонятно вообще я буду с потоками в линуксе пока работать там немного по другому выглядит, вроде даже попроще
Я так понял, в этом сэмпле 3 потока с, контекстом уже и можно прям полноценно с регистрами отдельных ядер работать?
источник

D

Den in Ассемблер
А тут вы вот обсуждали получение контекста, я сначала не понял ничего а когда разобрался, думаю как в nasme уже все для людей, прям как в c++, там тоже чтобы с потоками работать есть уже библиотека threads вроде и не надо все эти структуры с регистрами описывать самостоятельно.
источник

D

Den in Ассемблер
Aleksey Kislitsa
Я тут изучаю линуксовый модуль, Интел архитектура, 64 бита, то есть параметры передаются через регистры и первый должен через rdi идти. А тут смотрю дизассемблерный листинг и буквально вторая инструкция это занести в rdi некий адрес. Это как может такое быть?

Листинг в отладчике
0xffffffffc0845006 <+6>: mov $0xffffffffc0847160,%rdi
в rdi нельзя просто параметр записать это же регистр-указатель, туда только адрес и можно положить, или уже данные по адресу если rdi указывает уже на нужный адрес тогда указывать нужно в квадратных скобках или я не знаю как там в gnu асме
источник

АМ

Алексей Маринченко... in Ассемблер
Всех с праздником, кстати
источник

M

Max in Ассемблер
Алексей Маринченко
Всех с праздником, кстати
День святителя Николая Чудотворца?
источник

AK

Aleksey Kislitsa in Ассемблер
Den
в rdi нельзя просто параметр записать это же регистр-указатель, туда только адрес и можно положить, или уже данные по адресу если rdi указывает уже на нужный адрес тогда указывать нужно в квадратных скобках или я не знаю как там в gnu асме
Для прцессора то точно разницы нет, это 64 бита число или адрес, это когда попытаешся использовать эти биты как адресс то узнаешь.
В интеловском синтаксе это - mov rdi, offset lock (IdaFree так показывает)
А вот так ghidra показывает - MOV        param_1=>lock,lock
А вот так radare2 с ATT синтаксисом - movq $0, %rdi, здесь ноль, потому что radare2 статически дизассемблировал, а GDB показал с учетом KASLR

В общем понял я как это может быть и что это значит. Первый параметр в INTEL64 передается через RDI, но если ты первый параметр не используешь в функции, то компайлер использует регистр под локальную переменную.
источник

ST

Saenro T in Ассемблер
Повезло что вообще вывело на экран message, но вместе с этим ещё и весь код программы и то что перед ним, из-за смещения на 256 байт.
источник

DR

Dima Richev in Ассемблер
^ это что на асме?
источник

s

s54816 in Ассемблер
Dima Richev
^ это что на асме?
То же, что и везде. Зависит от языка. Скорее всего ксор.
источник