Blog. Just Blog

Быстрый поиск

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

Установка и настройка Flat Assembler (FASM)

01.11.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter

Установка и настройка Flat Assembler (FASM)

Программирование на Ассемблере я начинал с Turbo Assembler (TASM) под MS-DOS, сейчас пишу на Flat Assembler (FASM) под Windows. Это очень удобный и мощный пакет для разработки, бесплатный для любого использования. Написан полностью на самом себе, исходники прилагаются. Мне он нравится тем, что позволяет хранить код и описания ресурсов в одном ASM-файле, поддерживает макросы, генерит чистый машинный код без всякой незаявленной самодеятельности, не требует лишней рутинной работы типа прописывания каждой задействованной функции в секцию импорта и еще множество приятных мелочей, облегчающих жизнь программисту. Единственным недостатком является отсутствие достаточного количества готовых исходников, например по сравнению с тем же MASM'ом, а портирование исходников с других платформ на FASM иногда вызывает затруднения. Но на мой взгляд портирование, в отличие от копирования, помогает гораздо лучше изучить язык. Несколько исходников-примеров есть в самом дистрибутиве FASM, еще несколько примеров можно скачать с офсайта или поискать в Интернете. Ответы на многие возникающие вопросы можно найти на официальном форуме FASM. Форум англоязычный, но на нем немало наших соотечественников. К новичкам на форуме относятся хорошо и отвечают даже на самые глупые вопросы.

Читать статью целиком »
Просмотров: 66112 | Комментариев: 55

Готовим жульен с грибами и курицей

30.10.2008 | Категория: А еще я туда ем! | Автор: ManHunter

Готовим жульен

Жульен - одна из моих самых любимых горячих закусок. Готовить его можно из множества компонентов - курица, креветки, мясо, даже рыба. Рецепт простой, блюдо вкусное, одно плохо, что жульен очень быстро заканчивается :) Сегодня я расскажу как готовить традиционный жульен с грибами и курицей. Для приготовления потребуется 300 грамм куриного мяса, 400 грамм грибов, 200 грамм твердого сыра, 3 столовые ложки сметаны, 2 столовые ложки муки.

Читать статью целиком »
Просмотров: 55359 | Комментариев: 39

Создание прозрачных окон в Windows

29.10.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Еще один простой в реализации, но красивый эффект для ваших программ - прозрачные диалоговые окна. Для этого надо, чтобы диалоговое окно было прописано в ресурсах или создавалось с расширенным стилем WS_EX_LAYERED, а при его инициализации вызывалась функция SetLayeredWindowAttributes. Значение коэффициента прозрачности может быть от 0 (полностью прозрачное окно) до 255 (непрозрачное окно). Рекомендуется значение 240-245, при этом эффект прозрачности уже заметен, а содержимое окна еще легко читается и не сливается с перекрываемыми окнами. Этой же функцией можно динамически менять прозрачность уже созданного окна, например чтобы создать эффект его плавного появления или исчезновения.
  1. ; Сегмент кода
  2. section '.code' code readable executable
  3. ...
  4. ; Процедура обработчика окна
  5. proc DialogProc hwnddlg,msg,wparam,lparam
  6.         ...
  7.         ; Инициализация окна?
  8.         cmp     [msg], WM_INITDIALOG
  9.         je      wminitdialog
  10.         ; Закрытие окна?
  11.         cmp     [msg], WM_CLOSE
  12.         je      wmclose
  13.         ...
  14. wminitdialog:
  15.         ; Установить первоначальную прозрачность окна 245
  16.         invoke  SetLayeredWindowAttributes, [hwnddlg], 0, 245, LWA_ALPHA
  17.         ...
  18. wmclose:
  19.         ; Плавное исчезновение окна при его закрытии
  20.         mov     ecx,245
  21. fade_dialog:
  22.         push    ecx
  23.         ; Установка нового атрибта прозрачности
  24.         invoke  SetLayeredWindowAttributes, [hwnddlg], 0, ecx, LWA_ALPHA
  25.         ; Небольшая пауза
  26.         invoke  Sleep,2
  27.         pop     ecx
  28.         loop    fade_dialog
  29.         ...
  30.  
  31. ; Секция ресурсов
  32. section '.rsrc' resource data readable
  33.  
  34. ; Описание диалогового окна в ресурсах.
  35. ; В расширенных стилях должен быть прописан атрибут "WS_EX_LAYERED"
  36. dialog demo, 'Demo', 70, 70, 190, 175,\
  37.         WS_CAPTION + WS_POPUP + WS_SYSMENU + DS_MODALFRAME,\
  38.         WS_EX_LAYERED
  39.         ...
Не забывайте вызывать функцию SetLayeredWindowAttributes при инициализации диалогового окна со стилем WS_EX_LAYERED, иначе после открытия его вообще не будет видно. Также помните, что эффект прозрачности не поддерживается в Windows 9x. Пример программы с плавным появлением и исчезновением окна прилагается.

Читать статью целиком »
Просмотров: 9580 | Комментариев: 4

Деобфускация скриптов PHP и JavaScript

26.10.2008 | Категория: Темная сторона Силы | Автор: ManHunter
Одним из наиболее надежных на сегодняшний день способов защиты скриптов от изучения и модификации является обфускация.


Обфускация (от лат. obfuscare, "затенять, затемнять") - запутывание кода программы, то есть приведение исходного текста к виду, сохраняющему функциональность программы, но затрудняющему анализ, понимание алгоритмов работы и модификацию.


В отличие от однозначно обратимого шифрования и упаковки, обфускация представляет собой необратимое действие. Это значит, что восстановить код скриптов до первоначального вида не представляется возможным. Все без исключения обфускаторы PHP и JavaScript работают двумя способами: из исходного текста удаляются переносы строк и незначимые пробелы, а имена классов, переменных и функций заменяются на бессмысленный набор символов. Эти действия могут как комбинироваться, так и выполняться независимо.

Как я уже и говорил, при деобфускации привести код в первоначальный вид невозможно. Но вполне можно "облагородить" его до такого состояния, когда можно без особого труда разобраться в алгоритме и внести необходимые изменения. Например, после деобфускации можно сломать защиту некоторых PHP-скриптов, убрать привязку JavaScript к домену, вырезать принудительную рекламу или еще что-нибудь подобное.

Читать статью целиком »
Просмотров: 31859 | Комментариев: 17

Плоды прогресса (приключенческая повесть)

21.10.2008 | Категория: Всякая всячина | Автор: ManHunter
Нашел на компе в залежах фидошных приколов такой вот текст. Литературной ценности он не представляет, но он интересен тем, что все слова в нем начинаются на букву "П". К сожалению, авторство неизвестно. Навеяло вот этой цитатой с баша.

Плоды прогресса
(приключенческая повесть)

Посреди пустыни произрастала пальма. Под пальмой племя папуасов, пораженное проказой, попивало портвейн. Пальма плодоносила плохо, папуасы прозябали, питались падалью, пожирали попугаев, протухших пятнистых питонов. Процветали полиомиелит, паранойя, псориаз, понос, паркинсонизм.

Пытаясь предотвратить полную погибель папуасов, подкомитет помощи первобытным племенам прислал полпреда Попова. Попов, подобно Прометею, принес папуасам плоды прогресса: полупроводники, пылесос, плетизиограф, прочее. Получку Попов получал по пятницам, покупал пиво, пирожки, папайю, повидло - подкармливал проституток, пробуя поддержать популяцию папуасов. План Попова позорно провалился - подлые проститутки применяли противозачаточные пилюли. Племя подыхало. Пронырливые португальцы продавали портвейн по пятьдесят песо, получая пятьсот процентов прибыли. Папуасы пропивали последние плавки.

Пустыня приглянулась преуспевающему плантатору Педро Перейре. "Полью почву, посажу помидоры, пшеницу, перец" - планировал плантатор. Под пасху Педро пригласил Попова пообедать.

- Прогони папуасов, - предложил Перейра, подливая Попову пульке, пунш, пльзеньское пиво, подкладывая печеночный паштет. - Поделюсь прибылью. Пошли подальше поручение подкомитета - получишь парагвайское подданство, поместье, пеонов, пост посла.

- Пшел прочь, паскуда! - пробормотал Попов, пожирая поросенка.

- Подумай. Подарю полотно Пикассо, платиновую пепельницу, Пиночету представлю, - пообещал плантатор.



Читать статью целиком »
Просмотров: 5574 | Комментариев: 7

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2019
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 2 (0.0356 сек.) / Память: 5 Mb
Наверх