Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для Dexel
46 / 13 / 3
Регистрация: 29.09.2013
Сообщений: 290
NASM

Получить доступ к таблице GDT хотя бы для чтения

23.09.2020, 14:07. Показов 1915. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
%include "io64.inc"
; синтаксис NASM
 
section .data
.gdtr:   times 10 db 0x00 ; Первые два - размер GDT, следующие 4 - адрес начала GDT.
 
section .text
global CMAIN
CMAIN:
    mov ebp, esp; for correct debugging
    sgdt [main.gdtr]
    
;    mov eax, cr0 ; здесь вылетает по ошибке Segmentation fault.
;    mov eax, cr3 ; здесь вылетает по ошибке
;    mov eax, cr4 ; здесь вылетает по ошибке
 
    xor edx, edx
    
    mov dx, [.gdtr] ; Лимит
;    mov ebx, [.gdtr+2] ; Адрес.
    
    mov ds, [.gdtr+4] ; Из старшего DWORD. Здесь Segmentation fault. Если запись в ES - то же самое, аварийный выход.
    mov ax, [ds:0x0000] ; смещение 0. Первый не используется, но не важно, сюда не доходит.
Вобщем хочу получить доступ к таблице GDT хотя бы для чтения. Хоть по сути нужна IDT, но там примерно та же ситуация. При попытке считывания первого байта IDT в аккумулятор - выброс по Segmentation fault.

Ubuntu. Intel(R) Pentium(R) D CPU.
Компиляция: nasm -g -f elf32 ...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2020, 14:07
Ответы с готовыми решениями:

Как получить доступ к таблице в .mdb-файле
Не получается изменить данные в таблице Access, получается только извлечение данных. Подскажите, что не так?

HtmlAgilityPack.dll, не получается получить доступ к таблице
/// <summary>Получить информацию о документе включающую его тип</summary> public DocumentInfo SearchSign(string fileName) ...

Доступ только для чтения
Привет Текущий пользователь запускает приложение, на клиенте получаем SID текущего пользователя, ищем в базе данных ACCESS...

1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
23.09.2020, 19:33
Dexel, Ваш Pentium D не позволит Вашей программе под управлением linux записывать что попало в ds и другие сегментные регистры без прерывания по исключительной ситуации: #GP, #NP и т.д.
В Вашем примере linux обрабатывает эту ситуации, и, в свою очередь, signalизирует о ней Вашей программе.

В сегментные регистры можно безаварийно записывать или от 0 до 3 (в DS, ES, FS, и GS ), или селекторы присутствуюищих сегментов, описанных в GDT и LDT, если достаточно привилегий для доступа к соответствующему сегменту.

Добавлено через 15 минут
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mov %ds, %dx
mov %dx, %es
 
mov $0, %ax
mov %ax, %ds
 
inc %ax
mov %ax, %ds
 
inc %ax
mov %ax, %ds
 
inc %ax
mov %ax, %ds
 
mov %cs, %cx
mov %cx, %es
 
mov $12345, %ax
mov %ax, %ds  /* скорее всего, авария */ 
 
int3
Bash
1
2
3
as --32 seg.s -o seg.o
ld -melf_i386 seg.o -o seg
gdb -q seg
Code
1
(gdb) set disassemble-next-line on
Кликните здесь для просмотра всего текста
(gdb) i targ
Symbols from "/tmp/ds/seg".
Local exec file:
`/tmp/ds/seg', file type elf32-i386.
Entry point: 0x8048054
0x08048054 - 0x08048077 is .text
(gdb) b *0x8048054
Breakpoint 1 at 0x8048054
(gdb) r
Starting program: /tmp/ds/seg

Breakpoint 1, 0x08048054 in ?? ()
=> 0x08048054: 66 8c da mov %ds,%dx
(gdb) i r
eax 0x0 0
ecx 0x0 0
edx 0x0 0
ebx 0x0 0
esp 0xffffd1d0 0xffffd1d0
ebp 0x0 0x0
esi 0x0 0
edi 0x0 0
eip 0x8048054 0x8048054
eflags 0x202 [ IF ]
cs 0x23 35
ss 0x2b 43
ds 0x2b 43
es 0x2b 43
fs 0x0 0
gs 0x0 0
(gdb) ni
0x08048057 in ?? ()
=> 0x08048057: 8e c2 mov %edx,%es
(gdb)
0x08048059 in ?? ()
=> 0x08048059: 66 b8 00 00 mov $0x0,%ax
(gdb)
0x0804805d in ?? ()
=> 0x0804805d: 8e d8 mov %eax,%ds
(gdb)
0x0804805f in ?? ()
=> 0x0804805f: 66 40 inc %ax
(gdb)
0x08048061 in ?? ()
=> 0x08048061: 8e d8 mov %eax,%ds
(gdb) i r ds es fs gs cs ss
ds 0x0 0
es 0x2b 43
fs 0x0 0
gs 0x0 0
cs 0x23 35
ss 0x2b 43
(gdb) ni
0x08048063 in ?? ()
=> 0x08048063: 66 40 inc %ax
(gdb) i r ds es fs gs cs ss
ds 0x1 1
es 0x2b 43
fs 0x0 0
gs 0x0 0
cs 0x23 35
ss 0x2b 43
(gdb) ni
0x08048065 in ?? ()
=> 0x08048065: 8e d8 mov %eax,%ds
(gdb)
0x08048067 in ?? ()
=> 0x08048067: 66 40 inc %ax
(gdb) i r ds es fs gs cs ss
ds 0x2 2
es 0x2b 43
fs 0x0 0
gs 0x0 0
cs 0x23 35
ss 0x2b 43
(gdb) ni
0x08048069 in ?? ()
=> 0x08048069: 8e d8 mov %eax,%ds
(gdb) ni
0x0804806b in ?? ()
=> 0x0804806b: 66 8c c9 mov %cs,%cx
(gdb) i r ds es fs gs cs ss
ds 0x3 3
es 0x2b 43
fs 0x0 0
gs 0x0 0
cs 0x23 35
ss 0x2b 43
(gdb) ni
0x0804806e in ?? ()
=> 0x0804806e: 8e c1 mov %ecx,%es
(gdb) ni
0x08048070 in ?? ()
=> 0x08048070: 66 b8 39 30 mov $0x3039,%ax
(gdb) i r ds es fs gs cs ss
ds 0x0 0
es 0x23 35
fs 0x0 0
gs 0x0 0
cs 0x23 35
ss 0x2b 43
(gdb) ni
0x08048074 in ?? ()
=> 0x08048074: 8e d8 mov %eax,%ds
Code
1
2
3
4
5
6
7
8
(gdb) i r eax ds
eax            0x3039   12345
ds             0x0  0
(gdb) ni
 
Program received signal SIGSEGV, Segmentation fault.
0x08048074 in ?? ()
=> 0x08048074:  8e d8   mov    %eax,%ds
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2020, 19:33
Помогаю со студенческими работами здесь

Как получить доступ к содержимому ячеек в таблице на стороне сервера?
Таблица (HTML) построена так: <% For i = 0 to N %> <TR> <TD><asp:TextBox id='txtMeavteah' runat='server'...

Как можно получить доступ к отдельной таблице на страничке сайта
Есть страничка сайта http://abri.une.edu.au/online/cgi-bin/i4.dll?1=223D2B2A&2=2420&3=56&5=2B3C2B3C3A&6=5D5E5D235B272221&9=5A5D5A5D ...

Как запретить доступ для чтения с диска C для определенной программы?
День добрый ! Собственно, есть к примеру, утилита без настроек, которая ищет информацию по всему ПК. Нужно ограничить ей область...

Ошибка - доступ только для чтения. ( Color )
Доброго! При попытке записать коэффициент для цветового канала: tempCol.R = Convert.ToByte(Convert.ToDouble(color.R) * a); в...

Доступ НЕ только для чтения к документу из журнала
Господа знающие! Столкнулся с такой проблемой: Задача: Есть журнал документов. Добавляю к нему кнопочку. Хочу чтобы по этой кнопочке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru