Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

disable

 
 Функция            Запрещает прерывания.
 
 
 
 Синтаксис          #include <dos.h>
 
                    void disable(void);
 
 
 
 Файл, содержащий   dos.h
 
 прототип
 
 
 
 Описание           Данная макрокоманда разработана с целью обеспечения
 
                    программистов   гибким   средством   контроля   над
 
                    прерываниями на физическом уровне.
 
 
 
                    Макрокоманда disable        делает       прерывания
 
                    невозможными.  Разрешено только  прерывание  NMI  с
 
                    внешнего устройства (немаскируемое прерывание).
 
 
 
 Возвращаемое       Нет.
 
 значение
 
 
 
 Переносимость      Данная макрокоманда уникальна для архитектуры 8086.
 
 
 
 Смотрите также     getvect, enable.
 
 
 
 Пример:
 
 
 
 /* Замечание.
 
    Это программа  обработки прерывания.  Вы не cможете откомпилировать
 
    эту программу с включенной проверкой переполнения стека (Test Stack
 
    Overflow - On) и получить правильно работающую программу. */
 
 
 
 #include<stdio.h>
 
 #include<dos.h>
 
 #include<conio.h>
 
 
 
 #define INTR 0X1C  /* прерывание таймера */
 
 
 
 void interrupt (*oldhandler)(void);
 
 
 
 int count=0;
 
 
 
 void interrupt handler(void)
 
 {
 
    /* запрет других прерываний во время обработки этого */
 
    disable();
 
    /* увеличение глобального счетчика */
 
    count++;
 
    /* разрешение прерываний после обработки */
 
    enable();
 
    /* вызов старой программы обработки */
 
    oldhandler();
 
 }
 
 int main(void)
 
 {
 
    /* сохранить старый вектор */
 
    oldhandler = getvect(INTR);
 
    /* записать новый вектор */
 
    setvect(INTR,handler);
 
    /* цикл, пока счетчик не достигнет 20 */
 
    while(count < 20)
 
       printf("счетчик = %d\n",count);
 
    /* восстановить старый вектор */
 
    setvect(INTR,oldhandler);
 
    return 0;
 
 }

<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS