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

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


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

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



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

Функция Загружает файл со шрифтом (.CHR), который не встроен в BGI-систему.

 
 Синтаксис          #include <graphics.h>
 
                    int far installuserfont(char far *name);
 
 
 
 Файл, содержащий   graphics.h
 
 прототип
 
 
 
 Описание           name -  полное  имя шрифтового файла,  содержащего
 
                    векторные шрифты.    Одновременно    может    быть
 
                    добавлено до двадцати шрифтов.
 
 
 
 Возвращаемое       installuserfont возвращает     ID-номер    шрифта,
 
 значение           который затем может  передаваться  в  settextstyle
 
                    для    выбора    соответствующего   шрифта.   Если
 
                    внутренняя   таблица   шрифтов    заполнена,    то
 
                    возвращаемое значение равно -11 (grError).
 
 
 
 Переносимость      Функция уникальна  для  Borland  C++.  Эта функция
 
                    пригодна  только  для   компьютеров   IBM   PC   и
 
                    совместимых   с   ними,   оснащенных   дисплейными
 
                    адаптерами, поддерживающими   графический   режим.
 
                    Функция не совместима с Windows.
 
 
 
 Смотри также       settextstyle
 
 
 
 Пример:
 
 
 
 #include<graphics.h>
 
 #include<stdlib.h>
 
 #include<stdio.h>
 
 #include<conio.h>
 
 
 
 /* прототипы функций */
 
 void checkerrors(void);
 
 
 
 int main(void)
 
 {
 
    int gdriver = DETECT,gmode;
 
    int userfont;
 
    int midx,midy;
 
 
 
    /* инициализация графики и локальных переменных */
 
    initgraph(&gdriver,&gmode,"");
 
    midx = getmaxx()/2;
 
    midy = getmaxy()/2;
 
    /* проверить на ошибки инициализации */
 
    checkerrors();
 
    /* инсталлировать шрифт, написанный пользователем */
 
    userfont = installuserfont("USER.CHR");
 
    /* проверить на ошибки инсталляции */
 
    checkerrors();
 
    /* выбрать пользовательский шрифт */
 
    settextstyle(userfont,HORIS_DIR,4);
 
    /* вывести некоторый текст */
 
    outtextxy(midx,midy,"Тест");
 
    /* очистка */
 
    getch();
 
    closegraph();
 
    return 0;
 
 }
 
 /* проверка и сообщение о появлении ошибок */
 
 void checkerrors(void)
 
 {
 
    int errorcode;
 
    errorcode = graphresult();
 
    if(errorcode != grOk)
 
    {
 
       printf("Ошибка графики %s\n",grapherrormsg(errorcode));
 
       printf("Для завершения нажмите любую клавишу... ");
 
       getch();
 
       exit(1);
 
    }
 
 }
 
 
 
 ---------------------------------------------------------------------
 
 int86
 
 ---------------------------------------------------------------------
 
 Функция            Генерирует программное прерывание процессора 8086.
 
 
 
 Синтаксис          #include <dos.h>
 
                    int int86(int intr_num, union REGS *inregs,
 
                              union REGS *outregs);
 
 
 
 Файл, содержащий   dos.h
 
 прототип
 
 
 
 Описание           Функция генерирует     программное      прерывание
 
                    микропроцессора   8086,  причем  номер  прерывания
 
                    определяется    аргументом     intr_num.     Перед
 
                    выполнением прерывания,  функция копируют значения
 
                    регистров из объединения inregs в сами регистры.
 
 
 
                    После возврата  из  прерывания,  функция  копируют
 
                    текущие значения регистров в параметр  outregs,  а
 
                    состояние флага системного переноса в поле x.cflag
 
                    параметра outregs,  а содержимое регистра флагов в
 
                    поле x.flags.  Если флаг переноса установлен,  это
 
                    обычно означает что произошла ошибка.
 
 
 
                    Примечание: параметры  inregs  и   outregs   могут
 
                    указывать на одну и туже структуру.
 
 
 
 Возвращаемое       Функция int86 возвращает значение регистра AX после
 
 значение           завершения прерывания. Если флажок переноса
 
                    установлен (outregs-->x.cflag!=0),     то     есть
 
                    произошла  ошибка,  данная   функция   присваивает
 
                    глобальной переменной _doserrno код ошибки.
 
 
 
 Переносимость      Функция уникальна семейства микропроцессоров 8086.
 
 
 
 Пример:
 
 
 
 #include <dos.h>
 
 #include<conio.h>
 
 #include<stdio.h>
 
 
 
 #define VIDEO 0x10
 
 
 
 void movetoxy(int x, int y)
 
 {
 
    union REGS regs;
 
    regs.h.ah = 2; /* установить позицию курсора */
 
    regs.h.dh = y;
 
    regs.h.dl = x;
 
    regs.h.bh = 0;  /* страница 0 */
 
    int86(VIDEO, &regs, &regs);
 
 }
 
 
 
 int main(void)
 
 {
 
    clrscr();
 
    movetoxy(35,10);
 
    printf("Привет\n");
 
    return 0;
 
 }


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

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




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



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


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