R
Здравствуйте!
R
Кто юзает sasm?
R
помогите пожалуйста, через sasm тупо ниче не компилится, хотя этот же файл фасмом через командную строку спокойно компилится
R
кто юзает fasm и sasm помогите какие настройки надо выставить?
Anonymous
Anonymous
Я фасм в powershell использую а не в ide
R
короче я указал путь в настройках к нормальному фасму а не к дефолтному
Anonymous
И?
R
теперь компилится но gdb не рабоает
R
хм теперь с gdb разбираться
Anonymous
Используй x64dbg
Anonymous
Или windbg
R
ok
Anonymous
struc TSS {
.limit dw 0x100
.adrlow dw ?
.adrcenter db ?
.conffield1 db ?
.conffield2 db ?
.adrhigh db ?
}
set_task:
virtual at esi
.esi TSS
end virtual
test bl,bl
jnz .user
.kernel:
mov byte [esi.conffield1],10001001b
.user:
mov byte [esi.conffield1],11101001b
.continue:
mov word [esi.adrlow],dx
shr edx,16
mov byte [esi.adrcenter],dl
mov byte [esi.conffield2],10000000b
shr dx,8
mov byte [esi.adrhigh],dl
retn
Anonymous
пишет ошибку вот такую
Anonymous
mov byte [esi.conffield1],10001001b
processed: mov byte[esi.conffield1],10001001b
error: undefined symbol 'esi.conffield1'.
Anonymous
не понимаю почему структура находится наверху
я не использовал с virtual не разу esi
Anonymous
да даже если использовал можно переопределить
Anonymous
есть какие то идеи?
Anonymous
все равно ваш совет не рабочий ругается fasm
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
Anonymous
ага спасибо )
Aiwan \ (•◡•) / _bot
с virtual очень удобно работать с массивом структур. если же у тебя в памяти просто 1 структура лежит то лучше наверное (тут дело вкуса) [esi+nбайт]
Aiwan \ (•◡•) / _bot
хотя для понятности кода можно и virtual
Eugene
Eugene
R
привет это что за соглашение о вызове использует функция?
R
В одной статье вот это компильнули клангом и получили то что на фотке выше..
// Compile me with: clang -c mul.c -o mul.o
int mul (int a, int b) {
return a * b;
}
Anonymous
си соглашение
R
это не _cdecl точно
R
но не знаю что
kitsu
вообще выглядит как обычный system v abi, только почему-то на 32 битах
kitsu
в sys v параметры и идут через регистры
R
R
аа понял спасибо. Оказывается на 32 битном систем в аби параметры по стеку идут а в 64 битном по регистрам сначала
R
Eugene
В 64-битном одно соглашение (для каждой ОС).
Это в 32-битном их вагон.
kitsu
kitsu
ну и вообще кажется winapi на cdecl сидит, хотя либы в ms линкуются по другому соглашению
Eugene
Eugene
R
Anonymous
https://j00ru.vexillium.org/syscalls/win32k/64/
Anonymous
https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FProcess%2FNtTerminateProcess.html
Anonymous
вопрос такой как использовать sysenter куда класть в eax или в stack
Anonymous
в плане использовать функции ядра
Anonymous
а какие параметры
Anonymous
куд акласть
Anonymous
куда класть*
Vladimir
eax - номер сист. вызова, ebx, ecx, edx, esi, edi, ebp - параметры, ЕМНИП.
Anonymous
у меня ошибка
Anonymous
выходит о том что я не могу использовать
Anonymous
mov ax,0x0024
sysenter
Anonymous
0x0024 это NtTerminateProcess
Anonymous
да линукс это легко
Vladimir
В NT там же вроде сам чëрт ногу сломит в плане сисколлов
Vladimir
От версии зависит, даже от ревизии. Я в своë время ковырялся, потом плюнул
Eugene
Eugene
Писал я как-то статью про int 80h, sysenter, syscall в Linux.
https://www.cyberforum.ru/blogs/521524/blog5351.html
И даже include-ники в комплекте.
Eugene
А в винде — гуглить надо.
Как в eax кажется номер, а дальше через стек вроде.
Eugene
https://www.securitylab.ru/analytics/241543.php
eax = номер функции
edx = esp
адрес возврата — в стек, ибо sysenter его не сохраняет никуда
параметры — в стеке.
Eugene
А msr что, меньше?
Читай Intel SDM, там по любому всё написано.
Anonymous
я посмотрел так и у меня вопрос вот фрагмент кода
Anonymous
https://pastebin.com/TjP1jKcy
Anonymous
и когда я ставлю не правильный esp (не тот который я в начале выставил) и записываю в msr IA_SYSENTER_ESP то при прыжке в 3 кольцо у меня не правильные селекторы в cs и в ss почему ?
Anonymous
когда я ставлю правильный esp то cs и ss имеют правильные дескрипторы почему ?
Anonymous
в этом фрагменте кода все правильно
Anonymous
...
Anonymous
при прыжке в ring 3 когда происходит первый sysexit у меня загружаются не те селекторы в видимую часть cs ss вот код : https://pastebin.com/6ifRW2jU
Eugene
Всё то загружается, там 3 в младших двух битах задаёт кольцо, как раз sysexit туда 3 и пишет.
R
Здравствуйте, можете объяснить чем отличается резервирование (rb rd и тд) от определения (db dd и тд)? гуглил но не понял
Aiwan \ (•◡•) / _bot
rb резервирует место в памяти во время загрузки программы, резервируемая память не заносится в бинарник (только инфа о том сколько надо выделить). db определяет байты в бинарнике, и этот объем потом переносится в память. можешь поэесперементировать, rb 1000000, а потом измени на db 1000000, обрати внимание на объем бинарника
Aiwan \ (•◡•) / _bot
в обоих случаях программе будет доступен этот размер памяти
s54820