Урок 10. Сделан по мотивам Iczelion и "main variants" от kero Создание диалога 6 способами: 1) CreateDialogParam+DlgProc 2) CreateDialogParam+DlgProc+WndProc 3) CreateDialogParam+WndProc+RegisterClassEx 4) DialogBoxParam+DlgProc 5) DialogBoxParam+DlgProc+WndProc 6) DialogBoxParam+WndProc+RegisterClassEx и переделанная динамическая загрузка иконок из dll'ки на nasmw без линкера и компилятора ресурсов
Урок 31. ListView на nasmw без линкера и компилятора ресурсов. 3 варианта по мотивам Iczelion, Sulaiman и driver
Урок 28. Конечный автомат на nasmw без линкера и компилятора ресурсов. Так как все сразу не крепится -- отправляю тремя частями, в аттачах сорц, картинки и курсор в папке Images и экзешник (продолжение следует...)
Mikl___ Термин "конечный автомат" в контексте данного произведения несколько похабен, так и задумано? Но пошто недотрога? пошто отпрыгивает от прикосновений? пущай реагирует соответственно хит-тесту эрогенных зон, XFORM для регионов тут был бы зело весьма
kero Наш ответ skomarovу. "Автомат", можно дорабатывать и дорабатывать... Хватит читать благоглупости
Не подливайте масло в огонь! он (ежели кодер) будет контр- дорабатывать и дорабатывать сию непотребную тамагочку
Урок 29. Пример обращение к портам из ring3 под WinXP на nasmw без линкера и компилятора ресурсов. Идея взята здесь В аттаче сорц, ехе и r0pc.sys by @L.chemist (Andrey A. Meshkov)
Урок 29 (переработанный). Пример непосредственного обращения к портам из ring3 из-под WinXP. По сравнению с предыдущим постом -- небольшая оптимизация и добавление возможности перезагрузки (будте осторожны -- при такой перезагрузке недолго и систему убить). Написано на nasmw без линкера и компилятора ресурсов. В аттаче сорц, ехе и r0pc.sys by @L.chemist (Andrey A. Meshkov)
Шаг четвертый. Минимизируем WndProc (продолжение) Способ восьмой -- самый быстрый идея взята здесь Пусть нам требуется обработать сообщения WM_CREATE=1, WM_DESTROY=2, WM_PAINT=0Fh и WM_TIMER=113h. Пусть сообщение WM_XX обрабатывается по адресу @@WM_XX. Максимальный номер у сообщения WM_TIMER Под таблицу адресов обрабатываемых сообщений отведем место среди неинециализированных данных, в памяти или в хипе Код (Text): .data? MsgTable DD WM_TIMER+1 DUP (?);Таблица адресов сообщений, которые обрабатывает ;наша процедура окна номер максимального сообщения + место под WM_NULL .code ; где-нибудь в самом начале программы заполняем таблицу адресов сообщений mov edi,offset MsgTable mov ecx,WM_TIMER mov eax,OFFSET @@default rep stosd ;заполняем таблицу адресами необрабатываемых сообщений ;а теперь поверх адреса обрабатываемых сообщений mov MsgTable[WM_CREATE*4],offset @@WM_CREATE mov MsgTable[WM_TIMER*4],offset @@WM_TIMER mov MsgTable[WM_DESTROY*4],offset @@WM_DESTROY mov MsgTable[WM_PAINT*4],offset @@WM_PAINT ... WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM mov eax,[uMsg] cmp eax,WM_TIMER ja @@default ;больше не тратим время на сравнения -- сразу на Вызов соответствующего обработчика jmp MsgTable[eax*4] @@default: leave jmp _imp__DefWindowProcA@16 @@WM_CREATE: ...
Похоже какие то проблемы с приаттаченными файлами. Всё битое.. PS. Удалось скачать только благодаря FireFox 3 (уж не сочтите за рекламу). IE6, 8, FireFox 2 failed... Mikl___ Ни один пример не работает в Windows 7 beta bld. 7000. Даже с использованием всяческих compatible mode. Пока ещё не разбирался где затык.
ALLeX Это проблемы сайта -- хотя все примеры можно найти начиная с сообщения#110 где к архивам добавлялась информация для восстановления, или здесь, или могу сбросить почтой. IMHO cкорее всего в Windows 7, так же как и в Windows Vista, align=4 не работает, либо проблемы в заголовке PE, сами примеры проверялись на Windows XP от Home Edition до SP3 и не будут работать на Win9X и Win2k о чем я честно предупреждал. К сожалению, пока под Windows 7 и Vista проверить не могу, буду рад подсказкам и замечаниям
Урок 29 (еще раз переработанный). Пример непосредственного обращения к портам из ring3 из-под WinXP. Учимся обходится совсем без драйвера! Проигрывает музыку системным динамиком, дает просмотреть содержимое CMOS'а, выводит из 60h порта скан-коды нажатых клавишь и возможность перезагрузки (будте осторожны -- при такой перезагрузке недолго и систему убить). Написано на masm. В аттаче сорц, ехе и r0pc1.sys by @L.chemist (Andrey A. Meshkov). Проверялось под Windows XP SP3, под Win9X и Win2k работать не будет! 1) Насчет доступа к портам из ring3 без драйвера -- это конечно шутка. Драйвер спрятан в ресурсах ехе и при запуске программы пишется в ту же папку, по завершению приложения драйвер автоматически удаляется. 2) Для проигрыша мелодии константу придется подбирать самим на слух: для Celeron 466 MHz она равна 400000h, а для Pentium 4 2.40 GHz = 3000000h
Еще больше сжимаем РЕ-заголовок Стандартно, массив директорий (IMAGE_OPTIONAL_HEADER.DataDirectory) состоит из 16 элементов, хотя нам требуется только IMPORT ну и иногда RESOURCE - в том случае, когда требуется только IMPORT указываем 2 элемента (export и import), учитываем что размер Debug таблицы (7й элемент) должен быть равен нулю и то, что можно заполнить мусором первый элемент -- вставляем код вместо Export RVA и Export SIZE (идея взята здесь у GoldFinch) в аттаче полупрозрачные часы (сорц и ехе и картинка цифирблата). Написано на nasmw без линкера и компилятора ресурсов.
Еще больше сжимаем РЕ-заголовок (continue) То же самое, но уже с RESOURCE - указываем 3 элемента (export, import, resource), учитываем что размер Debug таблицы (7-ой элемент) должен быть равен нулю и то, что можно заполнить мусором первый элемент -- вставляем код вместо Export RVA и Export SIZE. В аттаче переделанный 8-ой урок Iczelion'a (сорц и ехе). Написано на nasmw без линкера и компилятора ресурсов.