because a system call runs on its own stack, the number of arguments that can be passed to a system call is limited. The operating system linkage conventions specify that up to eight general purpose registers are used for parameter passing.
8 регистров для передачи параметров в syscall.. а какие именно и в каком порядке, на x64?
в rax идет SSN
а дальше как аргументы передаются ? стандартным фасткалл ?, но там 4 только... не могу чет нагуглить порядок этих 8 аргументов
rax : syscall ID
rcx : arg0
rdx: arg1
r8 : arg2
r9 : arg3
r10 : arg4
r11 : arg5
r12 : arg6
r13 :arg7
?? подскажите пожалуйста
https://stackoverflow.com/a/2489975
я это все читал, я достал через PEB систем сервис намберы, мне нужна только верная последовательность регистров через которые параметры передаются
Как насчёт попробовать вызвать из C кода, а потом дизассемблер P.S.: не знаю, как на винде устроено
если речь о сисколах, то это идея не сработает, компилятор сделает обычный вызов в библиотечную функцию, а уже внутри этой функции будет сискол
так ведь библиотечная функция вызовет в какой-то момент сам сисколл, в IDA можно по графу попробовать найти
так это можно и без си кода сделать
https://en.wikipedia.org/wiki/X86_calling_conventions#Microsoft_x64_calling_convention, первый абзац.
Обсуждают сегодня