Форум: "Прочее";
Текущий архив: 2014.05.18;
Скачать: [xml.tar.bz2];
ВнизТребуется небольшая вычитка статьи. Найти похожие ветки
← →
Rouse_ © (2013-10-30 20:57) [0]К релизу почти готова статья а карте памяти процесса и сегодня я закончил написание вводной и теоретической части (осталась только практическая и демки).
Требуется Ваше мнение о полноте материала и что нужно добавить (разъяснить - если какие-то моменты не доступны).
ВАЖНО!
Очепятки, орфографию/грамматику пока не тестируем - важна только полнота изложения материала и его доступность для обычного прикладного программиста.
К примеру если кому-то не понятно что такое TEB - так и пишите: "нужно разъяснить нафиг это нужно"...
http://rouse-debug.blogspot.ru/2013/10/blog-post.html
ЗЫ: статья может быть периодически не доступна (это значит что в этот момент ее правлю).
← →
Inovet © (2013-10-30 21:34) [1]И хотя к самому отладчику она непосредственно не будет иметь никакого отношения, но вот к самому процессу отладки - самое непосредственное...
Было бы удобно, как это обычно принято, при первом вхождениее аббревиатуры давать расшифровку для полноты.
Из этой структуры нас интересует только одно поле - TebBaseAddress, которое содержит адрес блока окружения потока, т.н. TEB.
Из этой структуры нас интересует только одно поле - TebBaseAddress, которое содержит адрес блока окружения потока, т.н. TEB (Thread Environment Block).
ExceptionList - в 32 битном процессе указатель на адрес текущего SEH фрейма (структуру EXCEPTION_REGISTRATION).
ExceptionList - в 32 битном процессе указатель на адрес текущего SEH (Structured Exception Handling - структурная обработка исключений) фрейма (структуру EXCEPTION_REGISTRATION).
Для SEH, может, и лишнее.
← →
Rouse_ © (2013-10-30 21:41) [2]Ага, это уже Пашка Голубь сегодня давал понять - это я дополню со ссылками, просто руки не дошли...
← →
все арамисы, а я Дартаньян (2013-10-30 21:45) [3]
> статья а карте памяти процесса
> ВАЖНО!Очепятки, орфографию/грамматику пока не тестируем
ололо затролел у меня баден-баден
По теме:
NtQueryInformationThread — этого же вроде в делфе "из коробки" нет, надо явно импортировать?
IntToHex((NativeUInt(ImageBase) + ImageSectionHeader^.VirtualAddress), 8) — вот тут 8 под вопросом, если уж озаботились NativeUInt
Что такое MapAndLoad? Статья разжигает аппетит, но не отвечает на этот вопрос :-)
← →
Rouse_ © (2013-10-30 22:00) [4]
> NtQueryInformationThread — этого же вроде в делфе "из коробки"
> нет, надо явно импортировать?
Не из коробки но документировано частично: http://msdn.microsoft.com/en-us/library/windows/desktop/ms684283(v=vs.85).aspx
> IntToHex((NativeUInt(ImageBase) + ImageSectionHeader^.VirtualAddress),
> 8) — вот тут 8 под вопросом, если уж озаботились NativeUInt
Демка 32- битная, хотя согласен, стоит правильный размер выставить.
> Что такое MapAndLoad? Статья разжигает аппетит, но не отвечает
> на этот вопрос :-)
Так-же документировано: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680353(v=vs.85).aspx
Впрочем принято - подумаю как раскрыть использование данных функций более подробно.
← →
Павиа (2013-10-31 09:14) [5]
> Было бы удобно, как это обычно принято, при первом вхождениее
> аббревиатуры давать расшифровку для полноты.Из этой структуры
> нас интересует только одно поле - TebBaseAddress, которое
> содержит адрес блока окружения потока, т.н. TEB.Из этой
> структуры нас интересует только одно поле - TebBaseAddress,
> которое содержит адрес блока окружения потока, т.н. TEB
> (Thread Environment Block).ExceptionList - в 32 битном процессе
> указатель на адрес текущего SEH фрейма (структуру EXCEPTION_REGISTRATION).
> ExceptionList - в 32 битном процессе указатель на адрес
> текущего SEH (Structured Exception Handling - структурная
> обработка исключений) фрейма (структуру EXCEPTION_REGISTRATION).
>
Ух безобразие какое получается.
Вы как будто на Delphi не программируете. Объявления удобно давать в начале перед изложением основного текста. При этом с литературной точке это лучше делать в описательном характере. Во введение описываешь основные понятия и даёшь определения. Что для чего и как и почему.
← →
Inovet © (2013-10-31 10:02) [6]> [5] Павиа (31.10.13 09:14)
> Вы как будто на Delphi не программируете
Мне Си++ больше нравится. А определения хотел предложить вывести списком по алфавиту в конце, но посчитал - лишнее будет для статьи такого объёма, а так-то можно бы. Но почему в начале?
← →
Rouse_ © (2013-11-03 20:54) [7]
> Павиа (31.10.13 09:14) [5]
> Вы как будто на Delphi не программируете. Объявления удобно
> давать в начале перед изложением основного текста. При этом
> с литературной точке это лучше делать в описательном характере.
> Во введение описываешь основные понятия и даёшь определения.
> Что для чего и как и почему.
Попробовал, ерунда какая-то получается. Только отпугнет читателя ИМХО.
Ну к примеру: В статье мы будем говорить о PEB, TEB, TIB, SEH, UNWIND и прочих страшных буквах, но пока вы еще не начали читать текст, щас я расскажу что это такое...
Так что-ли?
← →
Rouse_ © (2013-11-03 20:55) [8]Имхо проще как у меня, сначала показываешь фичу, а потом объясняешь при помощи чего это реализовывется... (или я не прав?)
← →
картман © (2013-11-03 21:25) [9]
> Rouse_ © (03.11.13 20:55) [8]
прав!
← →
Павиа (2013-11-03 22:18) [10]
> Попробовал, ерунда какая-то получается. Только отпугнет
> читателя ИМХО.
Согласен что отпугивает. Но как-то рассказывать надо. Понимаю что воды больше будет.
> Ну к примеру: В статье мы будем говорить о PEB, TEB, TIB,
> SEH, UNWIND и прочих страшных буквах, но пока вы еще не
> начали читать текст, щас я расскажу что это такое...Так
> что-ли?
Так связанность предложения теряется.
Кстати на авто тестах свои статьи гоните? каков процент научной тошноты(:D)? Стоп-слов?
← →
Rouse_ © (2013-11-03 22:32) [11]
> Павиа (03.11.13 22:18) [10]
> Согласен что отпугивает. Но как-то рассказывать надо. Понимаю
> что воды больше будет.
Ну дык в процессе и нужно рассказывать :)
Таблицу умножения ж не сразу дают, сначала учат складывать/отнимать а потом столбиком. Оть здесь как-то так-же стараюсь...
> Кстати на авто тестах свои статьи гоните? каков процент
> научной тошноты(:D)? Стоп-слов?
Что за авто-тесты?
← →
Rouse_ © (2013-11-03 22:36) [12]ЗЫ: и к примеру если взять пятую главу, там я даже кода не привожу, а просто обьясняю про структуру. Если ее вначало вынести, то у народа вообще переклин получится - мол, зачем мне сейчас это рассказывают, когда я даже не понимаю применительно к чему этот материал пойдет.
← →
Inovet © (2013-11-03 22:59) [13]Ещё раз
> [6] Inovet © (31.10.13 10:02)
> Но почему в начале?
← →
Rouse_ © (2013-11-03 23:18) [14]
> Inovet © (03.11.13 22:59) [13]
Андрюх, пардон, это мне вопрос?
← →
Inovet © (2013-11-03 23:41) [15]> [14] Rouse_ © (03.11.13 23:18)
Не, это к Павиа.
← →
Rouse_ © (2013-11-12 18:57) [16]Тэксь, если еще не устали от моих просьб, то статья завершена:
http://rouse-debug.blogspot.ru/2013/10/blog-post.html
Теперь нужна вычитка как с точки зрения орфографии, грамматики, так и общей стилистики.
Ну короче нужно превратить ее в то, что вам самим было бы приятно читать и иметь в закладках :)
Демопримеры еще не выкладывал, к завтрашнему вечеру все подготовлю...
← →
Rouse_ © (2013-11-12 18:59) [17]ЗЫ: раскрыть аббревиатуры через html теги attr не успел, завтра доделаю...
← →
картман © (2013-11-12 19:35) [18]В прошлых статьях я описывал работу отладчика, где производились модификации над памятью приложения, находящегося под отладкой. Эта статья будет очередным расширением данного материала. И хотя к самому отладчику она непосредственно не будет иметь никакого отношения, но вот к самому процессу отладки - самое непосредственное...
модификация памяти приложения, а над памятью можно издеваться))
Анафорическая ссылка на предыдущие статьи не совсем очевидна.
В одном предложении три раза одинаковое слово.
← →
картман © (2013-11-12 19:42) [19]
к сожалению
собственно
можно сказать
этим меньше надо грешить
← →
брат Птибурдукова (2013-11-12 19:43) [20]По введению, 1, 2:
2-3 гигабайта, это ваш лимит
вместо запятой тире
все-же
пробел
модификации над памятью приложения
модификации памяти
процессу отладки - самое непосредственное
замени дефис на тире
проще говоря при реверсе
запятая пропущена
Самое очевидное - самой частой операцие
тире
и к сожалению данный функционал
к сожалению с обеих сторон запятыми выделить
в Delphi отладчике
в отладчике Delphi. в Delphi-отладчике (хуже). твой вариант тоже широко используется последние лет двадцать, но не комильфо
чтобы понять тут ли происходит
запятая
Да собственно вариантов использования много
собственно запятыми выделить
более менее
дефис
но к сожалению она не отображает
запятые
VMMap от Марка Руссиновича к сожалению выполняет
запятые
ProcessHacker - собственно хороший инструмент
запятые
Ну, а к карте памяти
лишняя запятая
не все где может пригодится
запятая, тся
рассказать как самостоятельно
запятая
Грубо (если взять за основу MSDN) - это набор
дефис на тире. тут ссылка, двумя строчками выше весьма похожая фраза без сылки. добавить ссылку? добавить визуальное выделение ссылок?
К примеру изначально мы передали первым параметром адрес NIL
запятая. нил, наверное, в нижнем регистре
16 страницам идущим подряд начиная с адреса ноль
две запятые
К примеру у второго и третьего региона
запятая
что они хранят и начнем мы
запятая
нитей - кому как
дефис на тире
одно поле - TebBaseAddress
дефис на тире
Ну или вот так, если описывать чуть подробнее
в списке дефисы на тире позаменять
как - не нужны
то же
Кстати часть функций
запятая
так-же
слитно
на первую структуру EXCEPTION_REGISTRATION она
запятая
Правда в отличие от Delphi отладчика
запятая, отладчика делфи
← →
Rouse_ © (2013-11-12 20:02) [21]
> картман ©
Действительно, поправлю завтра :)
> брат Птибурдукова
Спасибо Дим, поправлю :)
← →
все арамисы, а я Дартаньян (2013-11-13 00:12) [22]по 3, 4:
элементов HeapEntry из которых
запятая
весь список создавая
запятая
Правда в той статье
запятая
принцип и нам
запятая
оздается буфер в котором
запятая
В принципе кучи я использую
запятая
о загруженных в адресное пространство процесса исполняемым файлам и библиотекам
исполняемых файлах и библиотеках
например проанализировав PEB.LoaderData
запятая
PEB.LoaderData) но поступим проще
запятая
ну по крайней мере я еще не встречался
по крайней мере выделяется запятыми
с таким чтобы PE образ был загружен
запятая
Грубо все сводится к вызову GetMappedFileName.
чё-то как-то… переформулировать бы.
посмотреть что у нас загружается
запятая
система Windows 7 x64, судя по тому
я бы точку поставил
становится понятно откуда
запятая
Теперь по хорошему нужно получить
по-хорошему. выделить запятыми
Все секции выравниваются к началу страницы
может, не "к", а "по"?
роизводит так-же выравнивание
слитно
процесса конечно вызов данной
запятые
процессами - то воспользуемся
запятая вместо тире
правда это не работает
запятая
32 битных
дефис
процессов) и в дальнейшем
запятая
Суть код такова, после
кода. двоеточие вместо запятой
TLoadedImage параметр
запятая
который является офсетом
офсет — это такой типографский термин…
с которого начинается описываемая структурой TImageSectionHeader секция
два "которых" в одном предложении. непонятно, о чём речь.
данные доступные для модификации
запятая
Правда с этим кодом
запятая
старый код постоянно применяемый
запятая
\SystemRoot\System32\ntdll.dll
а разве так будет работать? %systemroot% работало бы, а так разве поймёт?
получить фиксированный "\Device\HarddiskVolume1\WINDOWS\system32\ntdll.dll".
ээ! мы ж вроде c:\windows\... получить хотели?
путь в таком-же формате
пробел
сравниваются и при совпадении
запятая
собой желательно вывести так-же директории
запятая, пробел
разу где искать
запятая
искать к примеру таблицу
запятые
импорта где сидит
запятая
TLoadedImage мы можем
запятая
правда он будет
запятая
тмаплен PE файл, чтобы перевести его в реальный
точка
нужно от текущего адреса вычесть
из текущего вычесть (предпочтительно). от текущего отнять.
адрес по которому
запятая
отмаплен
отображён? спроецирован?
начала файла и уже его сложить
запятая
Сразу видно что к примеру в секции
три запятые
импорта и т.п. директория с ресурсами сидит в своей секции
запятая перед "директория"? вообще лучше бы фразу переформулировать
Да действительно
запятая
такова ей особенность
её
собенность что она обычно
запятая
"привязанного импорта" который встречается
запятая
рограмм и библиотек идущих
запятая
телодвижений бегая по таблице
запятая
завяленная
по Фрейду…
ривязанного импорта - приложение
запятая вместо тире
← →
картман © (2013-11-13 00:22) [23]зря он это затеял, надо было как есть выкладывать))
← →
все арамисы, а я Дартаньян (2013-11-13 00:35) [24]по 5:
данные о потоках кучах
запятая
исполняемых файлах уже прямо
запятая
ак минимум крайне
запятая
PROCESS_BASIC_INFORMATION у которой поле
запятая
запрашиваемого и о котором запрашиваем информацию
непонятно. может, запрашивающего?
Для того чтобы
запятая
(назовем его так) необходимо
запятая
нам вернется указатель
функция вернёт указатель
PEB из которого и
запятая
рубо говоря это не сильно
запятая
структура в большинстве своем
запятая
данных используемых
запятая
означает что она не интересна
запятая
полей таких как флаг
запятая
подключен ли к процессу отладчик или нет
или нет выкинуть
PEB_LDR_DATA в которой содержитс
запятая
приложения на который имеет
запятая
и так знаю что именно
знают
на некоторые из полей я заострю ваше внимание.
переформулировать
ереставала говорить на наличие отладчика
переформулировать
не совпадать с ImageBase передаваемому линкеру и прописанному в
запятая. передаваемым? прописанным?
указатели на данные о загруженных модулях
указатель? дальше идёт единственное число.
но к сожалению пока
запятые
откуда берет информацию
берут
причем т.к. PEB в действительности может быть два - то и Environment так-же не в одном экземпляре
не переварил. переформулировать бы.
системы не дергая реестр
запятая
продолжать можно пока поля
запятая. а по-хорошему фразу надо бы переписать или выкинуть
К примеру ProcessParameters
запятая
куч созданных загрузчиком
запятая
и веду) эти данные
запятая
системой и вы постоянно
запятая
вызывая тот-же GetTickCount
пробел
К примеру NtSystemRoot
запятая
в ней да и
запятая
опять-же зачем все перечислять
пробел, запятая
отите узнать что за процесс активен
запятая
версию Win чтобы отключилась часть
запятая
защиты не рассчитанная
запятая
пожалуй здесь мы
запятая
← →
все арамисы, а я Дартаньян (2013-11-13 01:10) [25]С теоретической частью будем считать закончили
переформулировать
Прежде всего нужно определиться
запятая
статье я написал
запятая
абор классов выделенных
запятая
неймспейс
наверное, всё же "пространство имён"
стеков потоков,
запятая не нужна? наверное, нет
к примеру путь к отмапленному
запятая. вышеизложенное фе по поводу "отмапленного"
регион в руте дерева
рута — это вроде трава такая? (вопрос к целому абзацу)
может быть когда нибудь
запятая, дефис
В случае если регион
запятая
параметр Heap представляющий
запятая
рамках региона размещаются
запятая
они так-же помещаются
слитно
Так-же эти данные
слитно
в случае если битности процессов
запятая
Общая схема такая
в следующем списке все Х-битные через дефис
простая, не позволит размер указателя
я бы заменил запятую на двоеточие, но необязательно
32-ум
не надо от тридцати двух отнимать ум…
То-же будет и в случае запроса
пробел
данные относящиеся к 64 битам
запятая
В частности доступ
запятая
можно получить считав адрес
запятая
мне не известно
слитно
По хорошему это нужно
дефис, запятая
данные в удаленном процессе, не изменились на неактуальные, в процессе их чтения
к чёрту запятые!
почему-бы
пробел
По сути TWorkset хранит
запятая
ледующие три бита количество процессов
тире
является флагом расшарена страница или нет
переформулировать. "флаг" заменить на "признак"?
ак видите все интересное
запятая
ну к примеру убирает
запятые
с не выделенной памятью
слитно
Как говориться, писал
ться
Ну к примеру во второй
запятые
получения описания имени функции, телу которой принадлежит требуемый
чё-то с телом как-то не в тему
адрес необходимо знать путь
запятая
не успешно
слитно
разбирался - но действительно
запятая вместо тире
Последний из нюансов
слишком много "в том" для одного предложения.
Сильно полезной нагрузки
переформулировать
адрес калбэка
функции обратного вызова
Более подробнее реализацию данного
более подробно
исключения и дампы
запятая
Private регионов
частных регионов?
лассами MemoryMap плюс добавляет
запятая
впрочем так и планировалось
запятая
изначально ибо такой
запятая
он-же
пробел
функционал в принципе присутствует
запятые
CPU-View
пробел
К примеру в случае просмотра
запятая
будет выводится данные
будут? а вообще эти будущие времена можно без ущерба выкинуть.
Delphi к сожалению отсутствуе
запятые
а так-же флаг указывающий
пробел, запятая
е отобразится. но вот
Заглавная буква
Так-же отсутствующий в отладчике Delph
слитно
А так-же быстрый поиск
слитно
достаточно и новый
запятая
Ну что-ж, надеюсь
пробел
Я конечно прошел
запятые
← →
все арамисы, а я Дартаньян (2013-11-13 01:13) [26]В целом замечания:
в качестве тире нужно использовать тире — а не минус.
букву ё или всюду добавить (лучше), или всюду убрать (проще)
ссылки бы выделять, даже если это сейчас немодно.
Ну а вообще по стилю изложения много лучше первой статьи, хотя расти ещё есть куда.
← →
Inovet © (2013-11-13 01:36) [27]Когда исправишь? Чтобы по правленному перечитать.
← →
Rouse_ © (2013-11-13 10:17) [28]
> Inovet © (13.11.13 01:36) [27]
> Когда исправишь? Чтобы по правленному перечитать.
На обеде либо вечером пос работы. Я отпишусь...
← →
Rouse_ © (2013-11-13 17:15) [29]
> все арамисы, а я Дартаньян (13.11.13 01:13) [26]
> В целом замечания:
> в качестве тире нужно использовать тире — а не минус.
> букву ё или всюду добавить (лучше), или всюду убрать (проще)
> ссылки бы выделять, даже если это сейчас немодно.
Ну зато с тире разобрался как его ставить :) "Alt + 1050"
По выделению ссылок, они на основном сайте выделяются, ну и на этом тоже подправил.
> Ну а вообще по стилю изложения много лучше первой статьи,
> хотя расти ещё есть куда.
Это хорошо :)
Спасибо за столь подробную вычитку :)
> Inovet © (13.11.13 01:36) [27]
Обновил, все что Дима нашел – поправил.
Демки еще не выложены, завтра доправлю...
← →
брат Птибурдукова (2013-11-13 19:45) [30]
> Ну зато с тире разобрался как его ставить
кастомные раскладки клавиатуры рулят ;-)
← →
Rouse_ © (2013-11-13 20:08) [31]О, респекты ж забыл добавить, в конец статьи :)))
Исправился :)
← →
Inovet © (2013-11-13 20:41) [32]как-же
как же
Код получения списка потоков простой, через CreateToolhelp32Snapshot.
Я бы тире поставил вместо запятой.
При помощи NtQueryInformationThread получаем адрес процедуры потока, с которой он начал работу и базовую информацию о потоке в виде структуры TThreadBasicInformation.
При помощи NtQueryInformationThread получаем адрес процедуры потока, с которой он начал работу, и базовую информацию о потоке в виде структуры TThreadBasicInformation.
которое содержит адрес блока окружения потока, т.н. TEB.
Не стал расшифровку писать? Я задумался.
которое содержит адрес блока окружения потока, т.н. TEB (Thread Environment Block).
представляющий из себя структуру NT_TIB
Данная структура представляет из себя следующее:
Точка после NT_TIB
Напиши что ли:
Данная структура определена так:
Основываясь на данной информации мы будем раскручивать всю цепочку SEH фреймов.
Основываясь на данной информации, мы будем раскручивать всю цепочку SEH фреймов.
что-то наподобие свободного TLS слота, грубо говоря
что-то наподобие свободного TLS слота. Грубо говоря
Нужны конечно, но пока что они для нас избыточны.
Нужны, конечно, но пока что они для нас избыточны.
Часть данных получили, но это не вся информация, доступная нам.
Часть данных получили, но это не вся информация доступная нам.
выводить их в более наглядном виде, с привязкой к региону.
выводить их в более наглядном виде - с привязкой к региону.
он будет выводить данные о процедурах для которых сгенерирован стековый фрейм,
он будет выводить данные о процедурах, для которых сгенерирован стековый фрейм,
необходимо указать параметры текущего кадра стека (EBP и ESP/ RBP и RSP для х64) и собственно текущий адрес кода (регистр EIP или RIP для х64).
необходимо указать параметры текущего кадра стека (EBP и ESP/ RBP и RSP для х64) и, собственно, текущий адрес кода (регистр EIP или RIP для х64).
поэтому взяв за основу код из первой главы и проверив данные первой страницы региона на соответствие PE файлу, получим
поэтому, взяв за основу код из первой главы и проверив данные первой страницы региона на соответствие PE файлу, получим
Судя по тому что отображено на картинке в нашем 32-битном процессе спокойно живут и работают
Судя по тому что отображено на картинке, в нашем 32-битном процессе спокойно живут и работают
но т.к. нам потребуется более универсальный код для работы и с другими процессами – то воспользуемся именно этим подходом.
но т.к. нам потребуется более универсальный код для работы и с другими процессами, то воспользуемся именно этим подходом.
Функции IsExecute и IsWrite проверяют характеристики секции и возвращают True в том случае если секция содержит исполняемый код (IsExecute) или данные, доступные для модификации (IsWrite).
Функции IsExecute и IsWrite проверяют характеристики секции и возвращают True в том случае, когда секция содержит исполняемый код (IsExecute) или данные, доступные для модификации (IsWrite).
После чего пути сравниваются и (при совпадении), к переданному пути подставляется соответствующая метка диска.
После чего пути сравниваются и (при совпадении) к переданному пути подставляется соответствующая метка диска.
Да, действительно, данная директория не располагается непосредственно ни в одной из секций библиотеки, такова ее особенность, что она обычно идет сразу за PE заголовком (хотя иногда может встречаться и в промежутках между секциями).
Да, действительно, данная директория не располагается непосредственно ни в одной из секций библиотеки, такова ее особенность. Она обычно идет сразу за PE заголовком (хотя иногда может встречаться и в промежутках между секциями).
До сюда одолел
5. Блок окружения процесса (PEB) + KUSER_SHARED_DATA
← →
Inovet © (2013-11-13 20:55) [33]Но это будет актуально только если битности процессов (запрашивающего и о котором запрашиваем информацию) совпадут.
Но это будет актуально, только если битности процессов (запрашивающего и о котором запрашиваем информацию) совпадут.
В частности данная структура содержит ряд интересных полей, таких как флаг BeingDebugged, указывающий подключен ли к процессу отладчик, указатель на PEB_LDR_DATA, в которой содержится информация о загруженных в процесс модулях, TLSCallBack, используемый в основном утилитами защиты приложения, на который имеет смысл смотреть до передачи управления на точку входа, ну и много остальной достаточно полезной для программиста информации, особенно для того, кто знает как ее применить в своих целях :)
В частности, данная структура содержит ряд интересных полей, таких как: флаг BeingDebugged, указывающий подключен ли к процессу отладчик; указатель на PEB_LDR_DATA, в которой содержится информация о загруженных в процесс модулях; TLSCallBack, используемый в основном утилитами защиты приложения, на который имеет смысл смотреть до передачи управления на точку входа; и много остальной достаточно полезной для программиста информации, особенно для того, кто знает как ее применить в своих целях. :)
те кто работают с PEB и так знают что именно им нужно
те кто работают с PEB и так знают, что именно им нужно
после чего функция IsDebuggerPresent, ориентирующаяся на данное поле, начинала возвращать False, говоря о том что отладчика она не обнаружила.
после чего функция IsDebuggerPresent, ориентирующаяся на данное поле, начинала возвращать False, говоря о том, что отладчика она не обнаружила.
Именно отсюда, здесь же сидит адрес переменных окружения.
Именно отсюда. Здесь же сидит адрес переменных окружения.
А еще мы можем узнать сервиспак системы, не дергая реестр, в этом нам поможет поле CSDVersion, да, впрочем, поля NtMajorVersion/NtMinorVersion/NtBuildNumber говорят сами за себя.
А еще мы можем узнать сервиспак системы, не дергая реестр, в этом нам поможет поле CSDVersion. Да, впрочем, поля NtMajorVersion/NtMinorVersion/NtBuildNumber говорят сами за себя.
Хотите проверить активацию локальной копии Windows, читайте поле ProductTypeIsValid :)
Хотите проверить активацию локальной копии Windows - читайте поле ProductTypeIsValid. :)
← →
все арамисы, а я Дартаньян (2013-11-13 20:59) [34]
> Код получения списка потоков простой, через CreateToolhelp32Snapshot.
> Я бы тире поставил вместо запятой.
тут тире, запятая и двоеточие практически равноправны… запятая наименее нарочита :-)
← →
все арамисы, а я Дартаньян (2013-11-13 21:00) [35]
> респекты ж забыл добавить
зато мой ник переврать не забыл %-)
← →
Rouse_ © (2013-11-13 21:04) [36]
> Inovet © (13.11.13 20:41) [32]
Пасиб, это уже утром, сегодня уже ниможу больше :)))
> все арамисы, а я Дартаньян (13.11.13 21:00) [35]
>
> > респекты ж забыл добавить
> зато мой ник переврать не забыл %-)
Не виноватое я, оно само :)))
Поправил :)
← →
Inovet © (2013-11-13 21:04) [37]6. TRegionData
Прежде всего, нужно определиться с тем, каким образом хранить информацию о регионах.
Прежде всего нужно определиться с тем, каким образом хранить информацию о регионах.
В нем можно хранить все что угодно, к примеру путь к отображенному PE файлу, если таковой присутствует, строковое описание ID потока и т.п.
В нем можно хранить все что угодно, к примеру: путь к отображенному PE файлу, если таковой присутствует; строковое описание ID потока и т.п..
Ну а параметр Parent хранит на себе ссылку на рута.
Ну а параметр Parent хранит ссылку на рута.
TotalRegionSize содержит в себе общий размер всех подрегионов включая рутовый.
TotalRegionSize содержит в себе общий размер всех подрегионов, включая рутовый.
← →
Inovet © (2013-11-13 21:06) [38]> [36] Rouse_ © (13.11.13 21:04)
> сегодня уже ниможу больше
Я, сжав провода зубами, ползу к финишу.
← →
Rouse_ © (2013-11-13 21:09) [39]
> Inovet © (13.11.13 21:06) [38]
> > [36] Rouse_ © (13.11.13 21:04)
> > сегодня уже ниможу больше
>
> Я, сжав провода зубами, ползу к финишу.
:))) Респект
← →
Rouse_ © (2013-11-13 21:11) [40]Да кстати, оно вообще как, читабельное?
Я сегодня раз 20 перечитывал стараясь абстрагироваться, мол типа новая инфа - для меня вроде как понятно.
А если смотреть со стороны?
← →
Inovet © (2013-11-13 21:22) [41]7. TMemoryMap
Получению списка всех выделенных регионов в памяти указанного приложения, данных по нитям/кучам/загруженным образам и т.п.
Получению списка всех выделенных регионов в памяти указанного приложения, данных по нитям/кучам/загруженным образам и т.п..
Примерный код процедур GetAllRegions/AddThreadsData/AddHeapsData и AddImagesData я приводил в первых четырех главах, и на нем я заострять внимание не буду
Примерный код процедур GetAllRegions/AddThreadsData/AddHeapsData и AddImagesData я приводил в первых четырех главах и на нем я заострять внимание не буду
Эти структуры хранятся в словаре, и каждая ассоциируется с конкретным адресом страницы.
Эти структуры хранятся в словаре и каждая ассоциируется с конкретным адресом страницы.
Данная функция возвращает массив ULONG_PTR, каждый элемент которого хранит данные следующим образом. Первые пять бит хранят в себе атрибуты защиты страницы, следующие три бита – количество процессов, которым доступна данная страница, еще один бит указывает общедоступность страницы, ну и далее идет адрес самой страницы.
Данная функция возвращает массив ULONG_PTR, каждый элемент которого хранит данные следующим образом: первые пять бит хранят в себе атрибуты защиты страницы; следующие три бита – количество процессов, которым доступна данная страница; еще один бит указывает общедоступность страницы; ну и далее идет адрес самой страницы.
← →
Inovet © (2013-11-13 21:25) [42]> [40] Rouse_ © (13.11.13 21:11)
> Да кстати, оно вообще как, читабельное?
Да, вполне читабельно. По-нормальному надо бы, конечно, вникать, сидючи в среде и пробуя что-нибудь делать.
← →
Rouse_ © (2013-11-13 21:32) [43]
> Да, вполне читабельно
Ну значит основная задача выполнена, и то слава богу.
Три месяца пыхтел, включая реализацию кода...
← →
Inovet © (2013-11-13 21:33) [44]7. TSymbols - работа с символами
Чё-то я не понял - 7 уже было.
повторный вызов функции SymLoadModule, без вызова SymUnloadModule.
повторный вызов функции SymLoadModule без вызова SymUnloadModule.
Более подробно реализацию данного класса, включая опущенные вызовы SymSetOptions и SymInitialize вы сможете увидеть в модуле "MemoryMap.Symbols.pas"
Более подробно реализацию данного класса, включая опущенные вызовы SymSetOptions и SymInitialize, вы сможете увидеть в модуле "MemoryMap.Symbols.pas".
← →
Rouse_ © (2013-11-13 21:37) [45]
> Inovet © (13.11.13 21:33) [44]
> 7. TSymbols - работа с символами
>
> Чё-то я не понял - 7 уже было.
Ну тут как - Аккело промахнулсо :)
Конечно 8. TSymbols и т.д. по нарастающей (странно что никто не заметил :)
Надо оглавление прикрутить, а то чет в последнее время у меня объемы текста какие-то не совсем правильные получаются что сам путаешся...
← →
Inovet © (2013-11-13 21:41) [46]> [43] Rouse_ © (13.11.13 21:32)
> Три месяца пыхтел, включая реализацию кода...
Да, работа большая, полезная.
← →
Rouse_ © (2013-11-13 21:45) [47]
> Inovet © (13.11.13 21:41) [46]
> Да, работа большая, полезная.
Угу...
© Алексей Максимович Пешков :)
← →
Inovet © (2013-11-13 21:56) [48]8. ProcessMemoryMap
Ну вот мы подошли и к заключительной части статьи.
Ураааа!
Интегрируя его в вывод EurekaLog, посредством перекрытия её обработчика OnAttachedFilesRequest, где добавляю текущую карту процесса, актуальную на момент возникновения исключения, и дампы всех Private регионов (страниц, не ассоциированных с определенными данными, имеющих флаг MEM_PRIVATE) и стеков потоков, плюс часть информации из PEB.
Интегрируя его в вывод EurekaLog посредством перекрытия её обработчика OnAttachedFilesRequest, где добавляю текущую карту процесса актуальную на момент возникновения исключения, и дампы всех Private регионов (страниц, не ассоциированных с определенными данными, имеющих флаг MEM_PRIVATE) и стеков потоков, плюс часть информации из PEB.
С интерфейсной части она практически один в один напоминает VMMap, впрочем, так и планировалось изначально, ибо такой интерфейс наиболее удобен для анализа.
С интерфейсной части она практически один в один напоминает VMMap. Впрочем, так и планировалось изначально, ибо такой интерфейс наиболее удобен для анализа.
Позволяет сохранить на диск содержимое памяти указанного региона, либо данные с указанного адреса.
Позволяет сохранить на диск содержимое памяти указанного региона либо данные с указанного адреса.
Её последний стабильный релиз всегда доступен по данной ссылке: http://rouse.drkb.ru/winapi.php#pmm2
Её последний стабильный релиз всегда доступен по ссылке: http://rouse.drkb.ru/winapi.php#pmm2
при этом автоматически будет собрана и подключена (в виде ресурса), 64-битная версия данной утилиты.
при этом автоматически будет собрана и подключена (в виде ресурса) 64-битная версия данной утилиты.
← →
Inovet © (2013-11-13 21:58) [49]9. В качестве заключения
Я конечно прошел только по самым вершкам, ибо если раскрывать весь материал более подробно, то объем статьи неимоверно увеличится.
Я, конечно, прошел только по самым вершкам, ибо, если раскрывать весь материал более подробно, то объем статьи неимоверно увеличится.
← →
Rouse_ © (2013-11-13 22:06) [50]
> Inovet © (13.11.13 21:58) [49]
Респект, Андрюх - с меня коньяк/пиво/ёрш :)
Только не заставляй меня выезжать лично, как это было в случае с Димычем :)
Приезжай - организую персональную ММР, как это было по приезду Сереги (Jeer), встретим так что уезжать не захочешь :)))
← →
все арамисы, а я Дартаньян (2013-11-13 22:08) [51]
> Inovet © (13.11.13 21:58) [49]
нафига там запятая?
← →
Inovet © (2013-11-13 22:14) [52]> [51] все арамисы, а я Дартаньян (13.11.13 22:08)
> нафига там запятая?
Я не помню, как это называется.
Я в меру сил внёс правки, и, если бы не внёс, в статье было бы больше, а, возможно, меньше, ошибок.
:)
← →
все арамисы, а я Дартаньян (2013-11-13 22:21) [53]
> Я не помню, как это называется.
Сложноподчинённое приложение, надо полагать. Только оно всё вместе с "ибо" подчинённое в данном случае. Прочти вслух с запятой и без, впечатлись :-)
> меньше, ошибок
маэстро, не шалите! не смущайте малых сих.
← →
Inovet © (2013-11-13 22:21) [54]> [50] Rouse_ © (13.11.13 22:06)
> Приезжай - организую персональную ММР, как это было по приезду
> Сереги (Jeer), встретим так что уезжать не захочешь :)))
Спасибо! Эх, далеко же ехать, а оказии всё нет. Но вдруг да будет, вот тогда я вспомню твои слова.:)
← →
Inovet © (2013-11-13 22:27) [55]> [53] все арамисы, а я Дартаньян (13.11.13 22:21)
> Только оно всё вместе с "ибо" подчинённое в данном случае.
Значит не так прочитал. Вот Розыч поправит, потом надо бы ещё кому-то перечитать.
← →
все арамисы, а я Дартаньян (2013-11-13 22:31) [56]ну вон Картмана назначим, даром ему благодарность штоле?
← →
картман © (2013-11-13 22:39) [57]
> все арамисы, а я Дартаньян (13.11.13 22:31) [56]
>
> ну вон Картмана назначим, даром ему благодарность штоле?
>
у меня и с работой так же: делаю капельку-капельку, а платят вполне рыночно))
← →
все арамисы, а я Дартаньян (2013-11-13 22:53) [58]я тебя ненавижу
← →
картман © (2013-11-13 23:08) [59]
> все арамисы, а я Дартаньян (13.11.13 22:53) [58]
>
> я тебя ненавижу
Искупай, Кайл, меня в лучах ненависти(с)
надо добавить: работаю дома и платят не за часы - определенную сумму в месяц)))
← →
Германн © (2013-11-14 01:53) [60]
> Rouse_ © (13.11.13 22:06) [50]
>
>
> > Inovet © (13.11.13 21:58) [49]
>
> Респект, Андрюх - с меня коньяк/пиво/ёрш :)
> Только не заставляй меня выезжать лично, как это было в
> случае с Димычем :)
> Приезжай
Зато я возможно в его край доберусь в следующем месяце. Есть в моей новой конторе несколько объектов в Красноярске. Так что давай коньяк/пиво/ёрш. Передам в лучшем виде. Не сомневайся. :)
← →
Rouse_ © (2013-11-14 16:01) [61]Ну все, всем спасибо :)
Результат тут: http://alexander-bagel.blogspot.ru/2013/11/pmm2.html
> Германн © (14.11.13 01:53) [60]
А ты когда едешь?
← →
брат Птибурдукова (2013-11-14 17:07) [62]
> Rouse_ © (14.11.13 16:01) [61]
2, 3 гигабайта – это ваш лимит
тут дефис нужен (а если совсем правильно — n-dash). перечисление из двух элементов — несолидно, да и выглядит как "две целых, три десятых"
и ещё странно выглядит содержание после введения, да к тому же включающее "заключение". имхо, содержание наверх, введение включить в содержание. перед содержанием можно разве что аннотацию впихнуть (стандарт — 3-4 предложения, насколько я помню из диплома).
← →
брат Птибурдукова (2013-11-14 17:09) [63]>Огромное СПАСИБО форуму "Мастера Дельфи" за неоднократную помощь в подготовке статьи.
Надо было прям на потрепалку давать ссылку :-D
← →
картман © (2013-11-14 17:33) [64]
> Надо было прям на потрепалку давать ссылку :-D
ага, на ветки архива с активным участием Копира))
> и ещё странно выглядит содержание после введения, да к тому
> же включающее "заключение". имхо, содержание наверх, введение
> включить в содержание. перед содержанием можно разве что
> аннотацию впихнуть (стандарт — 3-4 предложения, насколько
> я помню из диплома).
на мой взгляд удобнее как есть сейчас: нафик мне содержание, если я не знаю, о чем статья - может она мне не нужна?
← →
брат Птибурдукова (2013-11-14 17:33) [65]на то есть (бывает) аннотация
← →
брат Птибурдукова (2013-11-14 17:34) [66]хотя хз… всё-таки не публикация на бумаге ж…
← →
Rouse_ © (2013-11-14 19:09) [67]
> брат Птибурдукова (14.11.13 17:07) [62]
> тут дефис нужен (а если совсем правильно — n-dash). перечисление
> из двух элементов — несолидно, да и выглядит как "две целых,
> три десятых"
Поправил.
> брат Птибурдукова (14.11.13 17:09) [63]
> >Огромное СПАСИБО форуму "Мастера Дельфи" за неоднократную
> помощь в подготовке статьи.
> Надо было прям на потрепалку давать ссылку :-D
Ага, позорицо чтоль с моими запятыми? :))) Нафих-нафих :)
> и ещё странно выглядит содержание после введения
Оно под катом идет, поэтому на внешку его вынести не получится (эт я сразу с заточкой под хабру сделал)
← →
Rouse_ © (2013-11-14 19:10) [68]
> картман © (14.11.13 17:33) [64]
> ага, на ветки архива с активным участием Копира))
Это было-бы вообще жОстко :))
← →
брат Птибурдукова (2013-11-14 19:14) [69]Вот помню, что участник был… незаурядным… а вот в каком направлении — не помню. Ярче всего Pazitron Brain вспоминается.
← →
Rouse_ © (2013-11-14 19:18) [70]
> брат Птибурдукова (14.11.13 19:14) [69]
> Вот помню, что участник был… незаурядным… а вот в каком
> направлении — не помню. Ярче всего Pazitron Brain вспоминается.
>
Мне больше всех Дмитрий Олегович запомнился - классика, как есть :)
Кетмар жил в более абстрактном мире :)
← →
брат Птибурдукова (2013-11-14 19:20) [71]А чё Кетмар? Классный чел. Хотя под конец нашего аськообщения совсем скатился в линукс-евангелизм :-\
← →
Kerk © (2013-11-14 19:22) [72]
> брат Птибурдукова (14.11.13 19:20) [71]
Я даже не знаю что конкретно он сейчас евангелит. О чем не спросишь, все - г#но :)
← →
брат Птибурдукова (2013-11-14 19:25) [73]дзэн-буддизм же.
← →
брат Птибурдукова (2013-11-14 19:26) [74](в реале бы ещё и бамбуковой палкой по макушке стукнул, да)
← →
Kerk © (2013-11-14 19:46) [75]Он мог бы :)
← →
Германн © (2013-11-14 20:17) [76]
> Rouse_ © (14.11.13 16:01) [61]
> А ты когда едешь?
Смотря куда. В Самару на след. неделе. А дальше пока неизвестно.
← →
Rouse_ © (2013-11-14 21:17) [77]
> Германн © (14.11.13 20:17) [76]
> Смотря куда. В Самару на след. неделе. А дальше пока неизвестно.
Ну в районе краев Андрюхи. Действительно - состряпаю посылочку, чтоб ты ему передал, да и с тобой заодно посидим малеха :)
← →
Inovet © (2013-11-14 23:25) [78]> [77] Rouse_ © (14.11.13 21:17)
> Ну в районе краев Андрюхи.
Герман скорее всего в Кырск едет, а мне до туда 200 км, т.е. часов 7-8 в оба конца на автобусе, в зависимости от времени стоянок. Если вдруг Герман поедет поездом, то ближайшее пересечение с этим направлением в 30 км. Но поездом ему придётся ехать 3-е суток.
← →
картман © (2013-11-15 03:28) [79]
> Kerk © (14.11.13 19:22) [72]
>
>
> > брат Птибурдукова (14.11.13 19:20) [71]
>
> Я даже не знаю что конкретно он сейчас евангелит. О чем
> не спросишь, все - г#но :)
http://www.sp-fan.ru/episode/1507/?sphrase_id=267229
← →
брат Птибурдукова (2013-11-15 15:08) [80]на хабре последние две строчки совсем ни к чему, по-моему.
← →
Rouse_ © (2013-11-15 16:08) [81]
> брат Птибурдукова (15.11.13 15:08) [80]
Ок, убрал...
← →
Германн © (2013-11-16 01:55) [82]
> Rouse_ © (14.11.13 21:17) [77]
> Inovet © (14.11.13 23:25) [78]
Вот так гибнут мечты и пропадают благие намерения. А я то месяц назад размечтался что теперь поезжу, посмотрю, повстречаюсь.
:(
Ага. Всё что получил это только то, что несколько поездок в месяц заменяются самолетом или (очень редко) поездом. Смотреть некогда и не на что. Встречаться... Когда? На всё про всё 2.5 дня. Вот и Самару я на следующей неделе я скорее всего не увижу.
Проклятые Деньги! :)
← →
Eraser © (2013-11-16 07:49) [83]Небольшое замечание по скриншотам, в будущем их лучше делать какой-нибудь спец. утилитой типа snagit, которая правильно "обрезает" уголки у окон. ну или делать в windows 8, там углы без закруглений )
← →
Inovet © (2013-11-16 10:35) [84]> [82] Германн © (16.11.13 01:55)
> Вот так гибнут мечты и пропадают благие намерения. А я то
> месяц назад размечтался что теперь поезжу, посмотрю, повстречаюсь.
Тем не менее, если (когда) поедешь - сообщи.
← →
Германн © (2013-11-17 01:55) [85]
> Inovet © (16.11.13 10:35) [84]
>
> > [82] Германн © (16.11.13 01:55)
> > Вот так гибнут мечты и пропадают благие намерения. А я
> то
> > месяц назад размечтался что теперь поезжу, посмотрю, повстречаюсь.
>
>
> Тем не менее, если (когда) поедешь - сообщи.
>
Как? На почту в анкете?
← →
Inovet © (2013-11-17 03:46) [86]> [85] Германн © (17.11.13 01:55)
Можно и на почту.
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2014.05.18;
Скачать: [xml.tar.bz2];
Память: 0.75 MB
Время: 0.004 c