
Быстрый поиск
Введите фрагмент названия статьи для поиска

Гогошары фаршированные сыром
09.09.2022 | Категория: А еще я туда ем! | Автор: ManHunter

Гогошары фаршированные сыром
Гогошары - разновидность сладкого перца с плотной мясистой мякотью и интересной почти шарообразной формой. Наконец-то это чудо молдавских селекционеров добралось до овощного рынка у нас на раёне. Из гогошар можно приготовить множество вкусных блюд, у меня это будет холодная закуска с сыром.
Читать статью целиком »
Просмотров: 261 | Комментариев: 3

Исследование защиты игры Peggle Deluxe
06.09.2022 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот игры Peggle Deluxe
Игра Peggle Deluxe - увлекательная смесь из арканоида, зумы и пинбола, отличная убивалка свободного времени. Авторство принадлежит знаменитой компании PopCap Games, так что и методы борьбы с первой линией защиты стандартные. Почему с первой? Потому что дальше, как в игре, начинается самое интересное.
Читать статью целиком »
Просмотров: 865 | Комментариев: 6

Получение размера динамической памяти приложения (Heap)
05.09.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter
Heap или куча - особая структура данных, с помощью которой приложению выделяется динамически распределяемая память. Крайне удобная штука, когда надо быстренько выделить немного памяти под сиюминутные нужды. Но при активной работе с кучей может возникнуть ситуация, когда надо узнать размер оставшейся памяти, общий размер кучи или максимальный размер непрерывных данных, которые туда можно записать. Что-то из этого можно узнать при помощи штатных функций, а что-то придется получать копанием в недрах системы. Но сперва несколько структур и констант для работы. Их нет даже в MSDN, не говоря уже о FASM.Code (Assembler) : Убрать нумерацию
- struct DEBUG_BUFFER
- SectionHandle dd ?
- SectionBase dd ?
- RemoteSectionBase dd ?
- SectionBaseDelta dd ?
- EventPairHandle dd ?
- Unknown rd 2
- RemoteThreadHandle dd ?
- InfoClassMask dd ?
- SizeOfInfo dd ?
- AllocatedSize dd ?
- SectionSize dd ?
- ModuleInformation dd ?
- BackTraceInformation dd ?
- HeapInformation dd ?
- LockInformation dd ?
- Reserved rd 8
- ends
- struct DEBUG_HEAP_INFORMATION
- Base dd ?
- Flags dd ?
- Granularity dw ?
- Unknown dw ?
- Allocated dd ?
- Committed dd ?
- TagCount dd ?
- BlockCount dd ?
- Reserved rd 7
- Tags dd ?
- Blocks dd ?
- ends
- PDI_HEAPS = 0x04
- PDI_HEAP_BLOCKS = 0x10
Code (Assembler) : Убрать нумерацию
- ; Зарезервировать буфер для отладочной информации
- invoke RtlCreateQueryDebugBuffer,0,FALSE
- mov [debug_buf],eax
- ; Получить информацию о кучах текущего процесса
- invoke GetCurrentProcessId
- invoke RtlQueryProcessDebugInformation,eax,\
- PDI_HEAPS+PDI_HEAP_BLOCKS,[debug_buf]
- mov eax,[debug_buf]
- ; Указатель на информацию о кучах
- mov eax,[eax+DEBUG_BUFFER.HeapInformation]
- ; Количество записей
- mov ecx,[eax]
- ; Пропустить заголовок
- add eax,4
- .loc_heap_scan:
- or ecx,ecx
- jz .loc_heap_done
- ; Это наша куча?
- mov edx,[eax+DEBUG_HEAP_INFORMATION.Base]
- cmp edx,[hHeap]
- jne .loc_heap_next
- ...
- ; В структуре DEBUG_HEAP_INFORMATION информация о куче
- ...
- jmp .loc_heap_done
- .loc_heap_next:
- add eax,sizeof.DEBUG_HEAP_INFORMATION
- dec ecx
- jmp .loc_heap_scan
- .loc_heap_done:
- ; Прибраться за собой
- invoke RtlDestroyQueryDebugBuffer,[debug_buf]
Читать статью целиком »
Просмотров: 383 | Комментариев: 0

Четырнадцатая годовщина сайта
01.09.2022 | Категория: Всякая всячина | Автор: ManHunter

Четырнадцатая годовщина сайта
Наступило очередное 1 сентября, на КДПВ прибавился очередной бокал пива, а это значит, что наступила четырнадцатая годовщина сайта. Несмотря на все сложности, жизнь продолжается, поэтому я буду и дальше стараться радовать посетителей и завсегдатаев разной интересной информацией. Спасибо вам за поддержку и пусть нечастые, но искренние добрые слова. Оставайтесь с нами!
С уважением, -
ManHunter / PCL
Просмотров: 244 | Комментариев: 15

Запуск задания cron с интервалом меньше 60 секунд
31.08.2022 | Категория: Web-мастеру и не только | Автор: ManHunter

Формат crontab
Как известно из документации, минимальный интервал запуска заданий в cron равен 1 минуте. Причина такого ограничения понятна, минутный интервал нужен, чтобы не перегрузить систему параллельными задачами в случае некорректных настроек. А мне понадобилось запускать определенный процесс каждые 20 секунд. Да, можно было бы написать промежуточный скрипт, который запускался бы раз в минуту по планировщику, а потом запускал процессы с нужными интервалами. Но есть более красивое решение средствами самого cron. Для того чтобы какое-либо задание запускалось каждые 20 секунд, в файле crontab нужно сделать 3 записи, что-то типа такого:
####################################################
# Запуск задания каждые 20 секунд
####################################################
* * * * * /usr/local/bin/php -f /path/to/script.php
* * * * * (sleep 20 ; /usr/local/bin/php -f /path/to/script.php)
* * * * * (sleep 40 ; /usr/local/bin/php -f /path/to/script.php)
Теперь каждую минуту будет запускаться пакет из трех заданий, но самое первое стартует незамедлительно, второе запустится через 20 секунд, а третье только через 40 секунд. Таким образом исходная задача будет решена. А, например, для запуска заданий с интервалом в 30 секунд понадобятся только две записи, и пауза перед вторым заданием, соответственно, будет 30 секунд.
Просмотров: 338 | Комментариев: 2
