|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
|
Преобразование адресов19.12.2023, 21:04. Показов 3427. Ответов 3
Метки нет (Все метки)
Есть приложение, я смотрел в IDA его адресация начинаеться с 0x10000.
Функция main() этого приложения в IDA по адресу 0x00038460 Я отнял 38460 - 10000 (hex) и получил линейный адрес 28460 - как этот линейный адрес преобразовать в СЕГМЕНТ:СМЕЩЕНИЕ? То есть xxxx:xxxx. Добавлено через 13 минут Так же для этой программы IDA в заголовке пишет Program Entry Point (CS:EIP) 1:0003A574h Как перевести адрес в сегмент- смещение?
0
|
|
| 19.12.2023, 21:04 | |
|
Ответы с готовыми решениями:
3
Вычисление адресов Преобразование списка адресов
|
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 859
|
|||
| 19.12.2023, 22:01 | |||
|
вы походу запутались в режимах работы процессора. CS:EIP это для 32х битного защищённого режима работы. этот адрес нельзя просто так преобразовать в сегмент:смещение
1
|
|||
|
Модератор
|
|||||||||||||
| 22.12.2023, 10:43 | |||||||||||||
relocation base address в таблице объектов LE/LX файла?
Кликните здесь для просмотра всего текста
Если загрузчику удастся загрузить все объекты по тем адресам, которые указаны в таблице объектов, то загрузчик может копировать содержимое страниц программы из файла без изменений. Если адреса в итоге будут другие, то загрузчик должен модифицировать ссылки по таблице Fixup, чтобы адреса соответствовали фактическим.
0
|
|||||||||||||
|
Эксперт Hardware
|
|||||||||||||||||||||||||||||||||||||
| 22.12.2023, 20:51 | |||||||||||||||||||||||||||||||||||||
Сообщение было отмечено Mikl___ как решение
Решение• в 16-бит реальном(RM) CS:IP = сегмент:смещение. Память физическая. Всего 16 сегментов по 64КБ = 1МБ памяти. • в 32-бит защищённом(PM) CS:EIP = селектор:смещение. Память виртуальная, адрес логический/линейный. Адресация с нуля и до 232 байт = 4ГБ. Всё линейное пространство считается одним вирт.сегментом, который делится на 4-КБайтные страницы. В сегментных регистрах хранятся "селекторы" (а не номера сегментов как в RM), которые указывают на дескрипторы в глобальной таблице GDT. Защита регионов памяти 2-уровневая - это биты в дескрипторах (воздействуют на весь сегмент), и биты в записях отдельных страниц PTE (Page Table Entry). Когда CPU переходит в PM, система создаёт служебные таблицы для поддержки вирт.памяти. Эти таблицы использует позже "транслятор адреса" в блоке управления памятью MMU (Memory Management Unit в процессоре). Если режим х32, то таких таблиц всего 2: PageDirectoryTable(PDT) и PageTable(PT). Каждая из них имеет свои записи "Entry", PDE и PTE соответственно. Таблица PDT одна и в её 1024 записях PDE лежат указатели на 1024 таблиц PT, в которых (в свою очередь) тоже по 1024 записи PTE, каждая из которых описывает уже конкретный фрейм физ.памяти. Младшие 12-бит вирт.адреса выделяются под смещение байта внутри указанного фрейма. Размеры вирт.страниц и фреймов физ.памяти ОЗУ всегда одинаковы, и в дефолте равны 4КБ. Таким образом, именно на уровне записей PTE адрес вирт.страниц превращается в номер-фрейма PFN физ.памяти "Physical Frame Number". Обслуживаящие MMU процедуры имеют базу всех фреймов, где ведётся их учёт на предмет занят/свободен. Когда в базе PFN заканчиваются свободные фреймы, занятые могут временно выгружаться на диск в файл подкачки "Pagefile" - собственно это и создаёт иллюзию наличия 4ГБ памяти, хотя в реале ОЗУ может быть меньше, например 512МБ. Отладчик WinDbg имеет несколько расширений для просмотра структур вирт и физ.памяти. Например !memusage с ключом(8) дампит базу PFN по такой схеме:
dt (DisplayType) имеет пару интересных ключей: -b рекурсивно раскрывает все вложенные структуры, а –v возвращает кол-во элементов и размеры структур:
• Hard – описывает типичный фрейм в физ.памяти, • Proto – прототип PFN для расшаренных фреймов, • Soft – фрейм выгружен в файл-подкачки на диск. Чтобы определить тип записи PTE, диспетчер проверяет в каждой из этих структур бит(0) "Valid". Он может быть выставлен в единицу только в одной из 8-ми структур, а в остальных будет сброшен – так диспетчер понимает, с фреймом какого типа имеет дело:
!pte. В качестве аргумента, команда ожидает вирт.адрес страницы, а из выхлопной трубы выдаёт нам детали связанного с ней фрейма. В данном случае TC интересует EntryPoint 0x0003A574, который и отправим аргументом:
0x0003A574 отводятся под смещение внутри 4КБ страницы, значит обнулив их получим номер вирт.страницы 0x0003A000, которая отображается во-фрейм 0x644b3 (см.последний столбец PTE).Или ещё эксперимент.. Запустим любое приложение (у меня pass.exe) и запросим у WinDbg инфу о нём. Далее, получив адрес каталога процесса "DirBase", отправим его расширению !vtop, что подразумевает "Virtual-To-Physical". В хвосте можно запросить и конкретный адрес внутри тестового приложения, пусть это будет дефолтная база РЕ-файлов в памяти 0x00400000:
0х0040000 соответствует физ.адрес 0x71068000. Если-же закрыть прожку и запустить её вновь, то с вероятность 99% физ.адрес уже изменится. Теперь можно запросить дамп памяти по физ.адресу, для чего предусмотрена команда отладчика !dc - упс.. и вправду попали в заголовок РЕ с сигнатурой "MZ":
3
|
|||||||||||||||||||||||||||||||||||||
| 22.12.2023, 20:51 | |
|
Помогаю со студенческими работами здесь
4
Преобразование сетевых адресов NAT Преобразование сетевых адресов NAT Преобразование сетевых адресов nat Преобразование сетевых адресов NAT Слишком строгий NAT (преобразование сетевых адресов). Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
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
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|