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

Создание выпадающего списка (Combobox)
13.11.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Выпадающий список ComboBox описывается через ресурсы, но заполняется элементами отдельно, на этапе инициализации родительского окна. Для удобства заполнения выпадающих списков я написал и использую такой код.Code (Assembler) : Убрать нумерацию
- ; Идентификатор списка в ресурсах
- ID_LIST = 104
- ; Сегмент данных
- section '.data' data readable writeable
- ; Элементы списка в формате ASCIIZ
- items db 'item 0',0
- db 'item 1',0
- db 'item 2',0
- db 'item 3',0
- db 0 ; Признак окончания списка
- CtrlID dd ? ; Хэндл списка
- ; Сегмент кода
- section '.code' code readable executable
- ...
- ; Процедура обработчика окна
- proc DialogProc hwnddlg,msg,wparam,lparam
- ...
- ; Инициализация окна?
- cmp [msg], WM_INITDIALOG
- je wminitdialog
- ...
- wminitdialog:
- ...
- ; Заполнение списка строками
- invoke GetDlgItem,[hwnddlg],ID_LIST
- mov [CtrlID],eax
- mov esi,items ; Указатель на список элементов
- fill_list:
- invoke lstrlen,esi ; Длина строки
- or eax,eax
- jz fill_end
- push eax
- ; Добавить строку в список
- invoke SendMessage, [CtrlID], CB_ADDSTRING, 0, esi
- pop eax
- add esi,eax ; Следующий элемент списка
- inc esi
- jmp fill_list
- fill_end:
- ; Установить пункт ID=2 дефолтным, нумерация ID начинается с 0
- ; По умолчанию дефолтный первый пункт с ID=0
- invoke SendMessage, [CtrlID], CB_SETCURSEL, 2, FALSE
- ...
- ; Секция ресурсов
- section '.rsrc' resource data readable
- ...
- ; Определение выпадающего списка в ресурсах
- ; 200 - максимальный вертикальный размер раскрываемой области списка,
- ; высота самого элемента расчитывается автоматически и в ресурсах
- ; изменить ее невозможно
- dialogitem 'COMBOBOX', '', ID_LIST, 2, 10, 150, 200,\
- WS_VISIBLE+CBS_DROPDOWNLIST+CBS_HASSTRINGS+WS_VSCROLL
- ...
Читать статью целиком »
Просмотров: 11400 | Комментариев: 3

Поздравляю с Днем милиции!
10.11.2008 | Категория: Всякая всячина | Автор: ManHunter

Поздравляю с Днем милиции
Всех действующих и бывших сотрудников милиции, а особенно сотрудников подразделений специального назначения МВД, сердечно поздравляю с нашим профессиональным праздником! Желаю крепкого здоровья, счастья и мирного неба! Берегите себя!
Инженер саперного отделения ОМОН
капитан милиции - ManHunter
Просмотров: 8164 | Комментариев: 6

Преобразование строки в число
10.11.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Для конвертирования строки в число я использую две функции. Первая предназначена для конвертирования строки десятичных цифр в число:Code (Assembler) : Убрать нумерацию
- ;----------------------------------------------------------
- ; На входе: указатель на строку
- ; На выходе: EAX = число или 0 если не получилось
- ;----------------------------------------------------------
- proc str2dec lpStr:dword
- push ebx edx esi
- xor eax,eax
- mov esi,[lpStr]
- .str2dec_loop:
- movsx ebx,byte [esi]
- sub bl,'0'
- ; Для системы счисления с другим основанием замените следующую
- ; строчку на cmp bl,основание_системы
- cmp bl,10
- jnb .str2dec_ret
- ; Для системы счисления с другим основанием замените следующую
- ; строчку на imul eax,основание_системы
- imul eax,10
- add eax,ebx
- inc esi
- jmp .str2dec_loop
- .str2dec_ret:
- pop esi edx ebx
- ret
- endp
Читать статью целиком »
Просмотров: 15647 | Комментариев: 5

Отправка сообщений на ICQ из PHP-скриптов
09.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Для отправки сообщений на ICQ из PHP-скриптов очень удобно использовать готовый класс WebIcqPro от автора Сергея Акудовича. Этот класс может послужить основой для создания ICQ-роботов, системы оповещения о различных событиях с сайтов, удаленного администрирования через ICQ и многого другого. WebIcqPro не требует установки на сервере дополнительных компонентов и библиотек. Достаточно подключить через include сам класс в ваш PHP-скрипт и воспользоваться его методами и свойствами. Для работы WebIcqPro требуется PHP 5.2.0 и выше. Класс активно развивается и скоро будет включать в себя практически все функции протокола Oscar. Если по каким-либо причинам на сервере установлена более старая версия PHP, то можно воспользоваться облегченной версией класса WebIcqLite. В ней есть только функции отправки и получения сообщений, но обычно этого вполне достаточно. Класс неплохо документирован, все описания на русском языке, методы и свойства приведены с примерами использования. Очень хороший скрипт, пользуюсь сам и другим рекомендую.Помните, что на сервере ICQ установлена защита от брутфорса, и при частых подключениях аккаунт блокируется на несколько десятков минут. Поэтому если для вашего проекта критично, чтобы все сообщения были отправлены, то зарегистрируйте несколько ICQ-аккаунтов и отправляйте сообщения с них по очереди или выбирая один случайным образом. Количество необходимых аккаунтов определяется опытным путем в зависимости от нагрузки.
Просмотров: 15035 | Комментариев: 16

Распаковка и расшифровка скриптов JavaScript
04.11.2008 | Категория: Темная сторона Силы | Автор: ManHunter
Эта статья - дополнение к статье про деобфускацию скриптов. Здесь будут рассмотрены основные принципы шифровки и упаковки, слабые места защит, способы ручного снятия, а также универсальные инструменты для автоматического снятия упаковщиков и навесной защиты со скриптов JavaScript. В последнее время все чаще исходный код скриптов шифруется или пакуется. Этим начали увлекаться Яндекс, DLE и другие популярные проекты, а красивые байки про "заботу о пользователях", "экономию трафика" и прочую чушь выглядят очень смешно. Что ж, если кому-то есть что скрывать, значит наша задача вывести их на чистую воду.Начнем с теории. Из-за особенностей выполнения JavaScript все шифровщики и упаковщики, несмотря на их разнообразие, имеют всего два варианта алгоритма:
Code (JavaScript) : Убрать нумерацию
- var encrypted='зашифрованные данные';
- function decrypt(str) {
- // функция расшифровки или распаковки
- }
- // Выполнить расшифрованный скрипт
- eval(decrypt(encrypted));
Code (JavaScript) : Убрать нумерацию
- var encrypted='зашифрованные данные';
- function decrypt(str) {
- // функция расшифровки или распаковки
- }
- // Вывести на экран расшифрованные данные
- document.write(decrypt(encrypted));
Читать статью целиком »
Просмотров: 91784 | Комментариев: 81
