Форум программистов, компьютерный форум, киберфорум
Низкоуровневое программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/30: Рейтинг темы: голосов - 30, средняя оценка - 4.63
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,297
Записей в блоге: 12

Исследование способов сброса процессора

11.10.2017, 08:19. Показов 6355. Ответов 10

Лучший ответ Сообщение было отмечено ФедосеевПавел как решение

Решение

Студворк — интернет-сервис помощи студентам
Занимался на днях сабжем. Использовать 4,5 способа:
  1. Аппаратный сброс процессора (Intel) через регистр управления сбросом (порт 0CF9h).
  2. Аппаратный сброс процессора через регистр инициализации и линии A20 (порт 92h).
  3. Аппаратный сброс процессора через контроллер клавиатуры (порт 64h).
  4. Простая перезагрузка через BIOS (jmp 0F000h:0FFF0h).
  5. Перезагрузка через int 19h (плохой метод).

Реализованы варианты сброса с перезагрузкой и возвратом обратно в программу.
В варианте с возвратом есть вывод значений регистров после возврата.
Там же представлены результаты тестов в DOS, DOSBox и разных версиях Windows (от 3.11 до 7).

Кому интересно, качайте и изучайте, в общем
Вложения
Тип файла: zip CPUReset.zip (12.3 Кб, 11 просмотров)
5
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2017, 08:19
Ответы с готовыми решениями:

Исследование способов адресации операндов
Доброго времени суток! Пытаюсь делать лабораторную и понимаю, что что-то идет не так. Прикрепляю задание и свой попыточный код. В методичке...

Исследование способов адресации операндов
Доброго вечера, есть здание Операция| 1-й операнд или получатель| 2-й операнд или источник пересылка|1-й элемент блока данных...

Исследование способов формирования случайной величины
Добрый день у меня такая проблема, мне нужно сделать задание в среде Matlab, в которой я вообще 0. Помогите кому не трудно. Разработать...

10
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
11.10.2017, 20:18
На старых дисках попадался reboot.com с антиотладочными трюками - примерно на 100-200 байт. Вернусь домой - поищу. Интересно, к какому способу он относится. Но тогда - 10 лет назад я не смог понять даже близко, что там происходит.

Добавлено через 1 минуту
Почему-то моя закачка не учлась в счётчике - потом учтётся.
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,297
Записей в блоге: 12
12.10.2017, 01:05  [ТС]
Я тут как раз антиотладкой страдал...
Если кому интересно...
Вложения
Тип файла: zip antidebug.zip (1.0 Кб, 9 просмотров)
2
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
07.01.2019, 20:58
Нашёл этот старый reboot. Не помню точно его происхождение - скорее всего, с какого-то LiveCD. Хотя настоящий компьютер (i486dx) у меня перегружался, DOSBox сейчас не отреагировал, значит что-то не соответствует в эмуляторе.

Его листинг после дизассемблирования в онлайн дизассемблере
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
.data:00000100 0e                               push   cs
.data:00000101 e8 02 00                         call   0x00000106
.data:00000104 cd 20                            int    0x20
.data:00000106 b0 1d                            mov    al,0x1d
.data:00000108 0e                               push   cs
.data:00000109 e8 08 00                         call   0x00000114
.data:0000010c b0 38                            mov    al,0x38
.data:0000010e 0e                               push   cs
.data:0000010f e8 02 00                         call   0x00000114
.data:00000112 b0 53                            mov    al,0x53
.data:00000114 66 50                            push   eax
.data:00000116 06                               push   es
.data:00000117 2e a2 51 01                      mov    cs:0x151,al
.data:0000011b 6a 00                            push   0x0
.data:0000011d 07                               pop    es
.data:0000011e fa                               cli
.data:0000011f 0e                               push   cs
.data:00000120 68 43 01                         push   0x143
.data:00000123 66 58                            pop    eax
.data:00000125 66 26 87 06 04 00                xchg   DWORD PTR es:0x4,eax
.data:0000012b fb                               sti
.data:0000012c 66 50                            push   eax
.data:0000012e 9c                               pushf
.data:0000012f 0e                               push   cs
.data:00000130 68 6b 01                         push   0x16b
.data:00000133 9c                               pushf
.data:00000134 58                               pop    ax
.data:00000135 0d 00 01                         or     ax,0x100
.data:00000138 25 ff fd                         and    ax,0xfdff
.data:0000013b 50                               push   ax
.data:0000013c 66 26 ff 36 24 00                push   DWORD PTR es:0x24
.data:00000142 cf                               iret
.data:00000143 53                               push   bx
.data:00000144 1e                               push   ds
.data:00000145 83 c4 04                         add    sp,0x4
.data:00000148 5b                               pop    bx
.data:00000149 1f                               pop    ds
.data:0000014a 81 3f e4 60                      cmp    WORD PTR [bx],0x60e4
.data:0000014e 75 04                            jne    0x00000154
.data:00000150 b0 00                            mov    al,0x0
.data:00000152 eb 0c                            jmp    0x00000160
.data:00000154 81 3f e6 20                      cmp    WORD PTR [bx],0x20e6
.data:00000158 74 06                            je     0x00000160
.data:0000015a 81 3f e6 61                      cmp    WORD PTR [bx],0x61e6
.data:0000015e 75 03                            jne    0x00000163
.data:00000160 83 c3 02                         add    bx,0x2
.data:00000163 1e                               push   ds
.data:00000164 53                               push   bx
.data:00000165 83 ec 04                         sub    sp,0x4
.data:00000168 1f                               pop    ds
.data:00000169 5b                               pop    bx
.data:0000016a cf                               iret
.data:0000016b fb                               sti
.data:0000016c 66 58                            pop    eax
.data:0000016e 66 26 a3 04 00                   mov    es:0x4,eax
.data:00000173 fa                               cli
.data:00000174 07                               pop    es
.data:00000175 66 58                            pop    eax
.data:00000177 cb                               retf
Видны противоотладочные трюки и попытки избежать модификацию команд, уже начавших конвейеризацию.

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

И сам бинарик приаттачиваю.
Вложения
Тип файла: 7z REBOOT.COM.7z (255 байт, 8 просмотров)
0
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 849
14.01.2019, 13:23
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Видны противоотладочные трюки и попытки избежать модификацию команд, уже начавших конвейеризацию.
Я вижу только скармливание обработчику INT9 сканкодов Ctrl, Alt и DEL. Ну и обход команд "in al, 60h" (с подменой AL), "out 20h, al", "out 61h, al" в обработчике клавиатуры с помощью его трассировки.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
14.01.2019, 13:39
Argogo, а расскажите подробнее, пожалуйста. Из-за отсутствия опыта, я даже близко не могу разглядеть очевидные вещи.
Вижу перехват прерывания int 01h. Второй iret не могу к чему либо соотнести.
0
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 849
14.01.2019, 13:57
Лучший ответ Сообщение было отмечено ФедосеевПавел как решение

Решение

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
;
; г=========================================================================¬
; ¦    This file is generated by The Interactive Disassembler (IDA)        ¦
; ¦    Copyright (c) 2010 by Hex-Rays SA, <support@hex-rays.com>       ¦
; ¦             Licensed to: Freeware version              ¦
; L=========================================================================-
;
; Input MD5   : A1F1A66A43EF6AF8147949CAECD9C31F
 
; File Name   : E:\DOWNLOAD\REBOOT.COM\Common\REBOOT.COM
; Format      : MS-DOS COM-file
; Base Address: 1000h Range: 10100h-10178h Loaded length: 78h
 
        .686p
        .mmx
        .model tiny
 
; ===========================================================================
 
; Segment type: Pure code
seg000      segment byte public 'CODE' use16
        assume cs:seg000
        org 100h
        assume es:nothing, ss:nothing, ds:seg000, fs:nothing, gs:nothing
 
; --------------- S U B R O U T I N E ---------------------------------------
 
 
        public start
start       proc near
        push    cs
        call    sub_10106
        int 20h     ; DOS - PROGRAM TERMINATION
start       endp            ; returns to DOS--identical to INT 21/AH=00h
 
 
; --------------- S U B R O U T I N E ---------------------------------------
 
 
sub_10106   proc near       ; CODE XREF: start+1p
        mov al, 1Dh
        push    cs      ; ^^CTRL
        call    near ptr sub_10114
        mov al, 38h     ; ALT
        push    cs
        call    near ptr sub_10114
        mov al, 53h     ; DEL
sub_10106   endp
 
 
; --------------- S U B R O U T I N E ---------------------------------------
 
 
sub_10114   proc far        ; CODE XREF: sub_10106+3p sub_10106+9p
        push    eax
        push    es
        mov byte ptr cs:loc_10150+1, al ; mov al, code
        push    0
        pop es
        assume es:nothing
        cli
        push    cs
        push    offset NewInt1
        pop eax
        xchg    eax, es:4   ; hook int 1
        sti
        push    eax     ; old int 1
        pushf
        push    cs
        push    offset post_INT9
        pushf
        pop ax      ; flags
        or  ax, 100h    ; set TF (call INT 1 for each instruction)
        and ax, 0FDFFh  ; reset IF (CLI)
        push    ax
        push    large [dword ptr es:24h] ; int 9 (IRQ1 - KBD)
        iret
sub_10114   endp ; sp = -16h
 
 
; --------------- S U B R O U T I N E ---------------------------------------
 
 
NewInt1     proc far        ; DATA XREF: sub_10114+Co
        push    bx
        push    ds
        add sp, 4
        pop bx
        pop ds
        cmp word ptr [bx], 60E4h ; check for "in al, 60h"
        jnz short loc_10154 ; check for "out 20h, al"
 
loc_10150:              ; DATA XREF: sub_10114+3w
        mov al, 0       ; mov al, code
        jmp short loc_10160
; ---------------------------------------------------------------------------
 
loc_10154:              ; CODE XREF: NewInt1+Bj
        cmp word ptr [bx], 20E6h ; check for "out 20h, al"
        jz  short loc_10160
        cmp word ptr [bx], 61E6h ; check for "out 61h, al"
        jnz short loc_10163
 
loc_10160:              ; CODE XREF: NewInt1+Fj NewInt1+15j
        add bx, 2
 
loc_10163:              ; CODE XREF: NewInt1+1Bj
        push    ds
        push    bx
        sub sp, 4
        pop ds
        pop bx
        iret
NewInt1     endp
 
 
; --------------- S U B R O U T I N E ---------------------------------------
 
 
post_INT9   proc far        ; DATA XREF: sub_10114+1Co
        sti
        pop eax     ; old INT 1 vector
        mov es:4, eax   ; restore INT 1 vector
        cli
        pop es
        assume es:nothing
        pop eax
        retf
post_INT9   endp ; sp =  0Ah
 
seg000      ends
 
 
        end start

Добавлено через 5 минут
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Argogo, а расскажите подробнее, пожалуйста. Из-за отсутствия опыта, я даже близко не могу разглядеть очевидные вещи.
Вижу перехват прерывания int 01h. Второй iret не могу к чему либо соотнести.
немного откаментил, возможно недостаточно, но я сейчас на работе - подробнее не могу.
1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
14.01.2019, 13:57
Спасибо, и этих комментариев достаточно для понимания.
0
222 / 19 / 0
Регистрация: 15.08.2016
Сообщений: 47
15.12.2021, 08:50
Еще один рабочий способ для CPU 386+ (придумал не я):

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
; Function causes a triple fault by destroying the IDT and then
; causing a GPF. Whether this actually reboots depends on the motherboard's
; capability to identify shut down mode.
 
; 32-битный код, CPL=0
; (если процессор находится в 16-битном режиме - надо немного подправить:
; ESP -> SP и перед lidt, возможно, префикс замены размера операнда/адреса)
 
        cli
        sub  esp,6                  ; выделить в стеке 6 байт для указателя на IDT
        mov  word ptr [esp],0       ; предел = 0
        mov  dword ptr [esp+2],0    ; физический адрес начала IDT = 0
        lidt fword ptr [esp]        ; загрузить 32 бита базы и 16 битов предела в регистр IDTR
        mov  ax,-1                  ; FFFF
        mov  ss,ax                  ; that should kill him!
        jmp  $                      ; бесконечный цикл
1
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,297
Записей в блоге: 12
15.12.2021, 11:07  [ТС]
Интересно.

Цитата Сообщение от XRS Посмотреть сообщение
Assembler
10
11
12
sub  esp,6                  ; выделить в стеке 6 байт для указателя на IDT
        mov  word ptr [esp],0       ; предел = 0
        mov  dword ptr [esp+2],0    ; физический адрес начала IDT = 0
Не проще ли 2 раза выполнить push?
0
222 / 19 / 0
Регистрация: 15.08.2016
Сообщений: 47
15.12.2021, 23:15
Цитата Сообщение от Jin X Посмотреть сообщение
Не проще ли 2 раза выполнить push?
Я думаю, что вот это тут не главное. А главное то, каким способом вызвать в процессоре тройное нарушение, что и приведет к сбросу. Использую для встраиваемых систем. Я проверял - работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2021, 23:15
Помогаю со студенческими работами здесь

Полное исследование функции.Исследование функции на непрерывность и график
Помогите решить. Препод прикалывается с такими уравнениями y=3е^arctgx

Полное исследование функции.Исследование функции на непрерывность и график
Всем привет.Кому нетрудно проверьте 2 пункта.С остальными шестью вообще беда.Не знаю как решать,функция сложная.Благодарю за любую помощь. ...

Полное исследование функций. Исследование функций на непрерывность.
1. Виды области определения некоторых возможных типов функций. 2. В особых точках, найденных в п.1 (точек, в которых значение...

после сброса BIOS
сбросил биос,упала резко скорость установки винды.по долгу лумает перед каждым этапом.Так раньше около 20мин ход установки,а сейчас около...

После сброса CMOS
и при попытке войти в BIOS выводится данное сообщение&gt; Что можно предпринять? P.S. Если что я не программист, а обычный...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru