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

Запрет запуска нескольких копий программы
25.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Запрет запуска нескольких копий программы бывает полезен если может возникнуть конфликт из-за занятых системных ресурсов, монопольно открытых файлов или если задачи приложения подразумевают наличие только одного его экземпляра. Проверка наличия работающей копии программы реализуется несколькими способами в зависимости от поставленной задачи.Первый способ основан на том, что в приложении можно определить расшаренную секцию, данные из которой будут доступны для всех его запущенных экземпляров. Достаточно прописать в ней некоторую переменную и присвоить ей уникальное значение. При старте выполняется проверка, и если значение переменной равно начальному, то считается что это старт первой копии, иначе приложение является второй копией и должно завершить свою работу. Поэтому первая копия приложения сразу после запуска и проверки должна заменить значение переменной на другое.
Code (Assembler) : Убрать нумерацию
- ; Расшаренная секция, общая для всех копий данного приложения
- section '.shared' data readable writeable shareable
- started dd 1 ; Флаг первого запуска
- ; Сегмент кода
- section '.code' code readable executable
- cmp [started],1 ; Уже запущен экземпляр программы?
- jne already_started ; Да, на выход
- xor eax,eax
- ; Префикс LOCK и команда XCHG используются для предотвращения
- ; возможных конфликтов на многопроцессорных машинах
- lock xchg eax,[started] ; Сбросить флаг
- ; Нормальный запуск программы
- ...
- already_started:
- ; Выход из программы
- ...
Читать статью целиком »
Просмотров: 15231 | Комментариев: 7

Картофель запеченый с грибами
22.12.2008 | Категория: А еще я туда ем! | Автор: ManHunter

Картофель запеченый с грибами
Сегодня решил порадовать себя любимого и приготовил такой вот скромный холостяцкий завтрак :) Это печеный картофель с начинкой из жареных грибов. К вопросу количества я подошел как обычно с фанатизмом, так что еще и на обед осталось.
Читать статью целиком »
Просмотров: 5757 | Комментариев: 4

Исследование защиты программы BWMeter
19.12.2008 | Категория: Темная сторона Силы | Автор: ManHunter
BWMeter от DeskSoft - одна из лучших программ для подсчета трафика на локальном компьютере. При помощи BWMeter можно раздельно считать внутрисетевой или же исходящий/входящий интернет-трафик. Присутствуют настраиваемые фильтры, отчеты можно представлять как в цифровом, так и в графическом виде. Также BWMeter может служить в качестве ограничителя скорости при различных условиях. 
Скриншот программы BWMeter
Но при всех многочисленных достоинствах у программы есть один большой недостаток: она стоит $30 и работает в ознакомительном режиме 30 дней. Что ж, придется исправлять эту ошибку автора.
Читать статью целиком »
Просмотров: 6715 | Комментариев: 5

Концерт группы Lacuna Coil в "Точке"
16.12.2008 | Категория: Жизнь в оффлайне | Автор: ManHunter

Концерт группы Lacuna Coil
Давно не был на хороших концертах, поэтому сегодня с радостью отправился на Lacuna Coil. Несмотря на мировой кризис, клуб был полон народа. Я дополнил присутствующий электорат своей тушкой и приготовился получать кайф. Как ни странно, концерт начался практически вовремя, 30 минут задержки вообще не в счет. Горячие итальянцы стартанули вообще без разогрева, но он был и не нужен. С первых же аккордов вверх взметнулся целый лес рук, который не опускался до самого окончания концерта. После пары затравочных песен со сцены хлынул просто водопад хитов - "Closer", "Swamped", "Daylight Dancer"... Очаровательная Кристина и Андре выкладывались на сцене на полную, благодарные зрители радостно подпевали, кричали и хлопали. Кавер на песню Depeche Mode "Enjoy The Silence" вместе с Кристиной пел практически весь зал. После этого группа как-то резво свалила в полном составе за кулисы, оставив публику в легком недоумении. Большинство начали скандировать "Lacuna! Lacuna!", другие пожимали плечами "И это все что ли?". Но через несколько минут музыканты вернулись на сцену, Кристина обрадовала, что в программе есть еще парочка песен, и шоу продолжилось. Красивую точку в этом незабываемом зрелище поставила забойная композиция "Our Truth" с их последнего альбома. Уходя со сцены, музыканты побросали в зал мелкие денежки из карманов, бутылки с водой и даже барабанные палочки (почему-то их оказалось аж целых три).
Сказать что я остался доволен концертом - не сказать ничего. Это просто супер!!! В общей сложности Lacuna Coil отыграли около полутора часов. Было очень вкусно, но очень мало. Но очень вкусно!
Читать статью целиком »
Просмотров: 3929 | Комментариев: 2

Задача на применение логических инструкций
16.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Когда-то кому-то помогал с решением задачи на ассемблере, формулировка задания была такая:
Дан массив из 5 байт. Рассматривая его как массив из восьми 5-битных слов, посчитать количество слов с четным числом единиц в слове.
Алгоритм хитровывернутый, комментарии специально не прописывал, чтобы тупая и ленивая школота не смогла объяснить преподу, откуда взялось такое решение и как оно работает.
Code (Assembler) : Убрать нумерацию
- ;---------------------------------------------------------------
- ; Задача на применение логических инструкций
- ;
- ; Дан массив из 5 байт. Рассматривая его как массив из восьми
- ; 5-битных слов, посчитать количество слов с четным числом
- ; единиц в слове.
- ;
- ; Решение: ManHunter / PCL
- ;---------------------------------------------------------------
- format PE GUI 4.0
- entry start
- include 'win32a.inc'
- ;---------------------------------------------------------------
- section '.data' data readable writeable
- xbytes db 00111000b ; Данные для задачки, взяты с потолка :)
- db 11111110b
- db 01010101b
- db 00001001b
- db 00000110b
- mask db 'Count: %i',13,10,13,10
- db '%i%i%i%i%i - %i%i%i%i%i - %i%i%i%i%i - %i%i%i%i%i',13,10
- db '%i%i%i%i%i - %i%i%i%i%i - %i%i%i%i%i - %i%i%i%i%i',13,10
- db 0
- title db 'Solution',0
- tmp rb 100
- ;---------------------------------------------------------------
- section '.code' code readable executable
- start:
- mov esi,xbytes+4
- loc_1:
- lodsb
- mov ecx,8
- loc_2:
- xor edx,edx
- test al,00000001b
- jz loc_3
- inc edx
- loc_3:
- push edx
- shr al,1
- loop loc_2
- dec esi
- dec esi
- cmp esi,xbytes
- jnb loc_1
- xor eax,eax
- xor esi,esi
- loc_4:
- xor edi,edi
- mov ecx,5
- loc_5:
- add edi,[esp+eax*4]
- inc eax
- loop loc_5
- test edi,edi
- jz loc_6
- test edi,1
- jnz loc_6
- inc esi
- loc_6:
- cmp eax,40
- jb loc_4
- invoke wsprintf,tmp,mask,esi
- add esp,12+(8*5*4)
- invoke MessageBox,HWND_DESKTOP,tmp,title,MB_OK
- invoke ExitProcess,0
- ;---------------------------------------------------------------
- section '.idata' import data readable writeable
- library kernel32,"KERNEL32.DLL",\
- user32,"USER32.DLL"
- include "apia\kernel32.inc"
- include "apia\user32.inc"
Читать статью целиком »
Просмотров: 5549 | Комментариев: 3
