@rewqqwer

В чем разница между syscall setreuid в C/C++ и asm?

наткнулся на непонятную моему скудному уму проблему: при вызове setreuid(0,0) в asm ловлю (неясную мне) ошибку (скр. 1), при данном системном вызове в проге C++/C тоже возвращается -1, но при запуске с sudo (скр. 4) возвращается 0 (успешно), дизассемблирование файла показыает, что регистры и сискол те же (скр. 2-3), так в чем проблема то тогда, ведь asm файл я тоже от root запускаю?e73afe98f82d403099f64a065c0527b1.pngadac2839d5a7429292c8721257f27565.pngcaebbd5165f74f6884329a190bf0f786.png8bffad99641c4565b3b64d9ee1d28cd4.png
  • Вопрос задан
  • 623 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
в чем проблема то тогда

а по ходу нельзя из elf64 вызывать системные вызовы через int 0x80. Так что либо замени int 0x80 на syscall (и, кстати, _NR_exit для x86_64 -- это 60), либо используй nasm -static -f elf32 и ld -m elf_i386 (и тогда _NR_setreuid будет 70).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы