ОБНАРУЖЕНИЕ ПЛАГИАТА НА ОСНОВЕ АНАЛИЗА СХОЖЕСТИ EXE-ФАЙЛОВ С ИСПОЛЬЗОВАНИЕМ МЕТОДА ПОТЕНЦИАЛОВ - Студенческий научный форум

IV Международная студенческая научная конференция Студенческий научный форум - 2012

ОБНАРУЖЕНИЕ ПЛАГИАТА НА ОСНОВЕ АНАЛИЗА СХОЖЕСТИ EXE-ФАЙЛОВ С ИСПОЛЬЗОВАНИЕМ МЕТОДА ПОТЕНЦИАЛОВ

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
  Введение

Идея выдать чужое за свое и не забивать голову, изобретая велосипед не нова. В общем, использование чужих идей или официально приобретенных продуктов не возбраняется. Но существует проблема нарушения авторских прав, незаконного использовании. В настоящее время, прежде всего, благодаря развитию Интернета, любой желающий может найти все, что угодно, и представить работу как свою собственную. Статьи, рефераты, курсовые «лежат» в  свободном доступе. Находи, скачивай, сдавай, только не забудь вписать себя в графу «автор». 

Проблемой заинтересовались давно, и на сегодняшний день существуют программные решения, анализирующие тексты работ и на основании степени схожести работ делать вывод, является ли рассматриваемая работа оригинальной. Несколько лет назад вузы начали внедрять такие системы «Антиплагиат» в образовательный процесс (ГУ ВШЭ 2008 г. [1], МГУ 2009 г., [2]). Тем самым, заставив студентов работать умом, а не поисковым сервером. Проблема копирования практически решена. И для филологов, экономистов и т.д. этого, возможно, вполне достаточно. Не хватает функциональности рассматриваемого программного обеспечения (ПО), когда речь идет о студентах, которые сдают «нетексты». Например, о студентах, обучающихся на направлениях в области информационных технологий (ИТ), иногда сдающих в качестве результатов выполнения заданий исполняемые exe-файлы.

Проблема требует скорейшего решения не только для ВУЗов, заинтересованных в качестве подготовки студентов, но, например, для органов, регистрирующих авторские права. Чтобы зарегистрировать программный продукт мог разработчик, а не вор, немного изменивший программный код (например, применив алгоритмы обфускации или наоборот - деобфускации, если обфускацию применил автор).

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

Обзор существующих решений

Первыми в области сравнения появились программы, анализирующие тексты. Сегодня существуют он-лайн сервисы [3, 4], позволяющие загрузить текстовый файл и провести поиск схожих работ в сети Интернет. Причем первый является бесплатным, требуется только зарегистрироваться, на втором Вы можете сделать 5 бесплатных запросов проверки текста, при этом максимальный объем каждого не должен превышать 5000 знаков. Стоимость платной проверки составляет 1.5 рубля за 1000 символов с пробелами. Но, как мы отметили ранее, сервисы не полностью удовлетворяют требованиям даже учебного процесса.

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

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

Arpoon Checksum - это программа для обнаружения изменения файлов и документов. Данная программа может быть использована удостоверения файлов или просмотр изменений ваших документов. Проверяемые контрольные суммы файлов: MD5, CRC32, Adler, SHA1, MD4, MD2, RIPE 160, SHA256, ELF.

Контрольная сумма изменяется при любых изменениях исходного файла (например, при изменении количества задействованных файлов). Сравнивая программу с ее немного измененной копией, получим контрольные суммы: 00012705h и 00016128h соответственно. Программы сравнивают ехе-файлы, но не обеспечивают необходимый результат.

Второй подход: «открыть» код, перевести exe-файл в текстовый и сравнивать программные коды. PE Explorer - программа для просмотра, анализа и редактирования внутреннего устройства исполняемых файлов. С помощью PE Explorer можно анализировать, редактировать или оптимизировать проблемные файлы, переводить интерфейсы на другие языки, распаковывать и восстанавливать сжатые файлы, изучать дизайн и алгоритмы, используемые в приложениях, после приведения к тексту, но сравнивать 2 файла придется вручную.  Программа отсутствует в свободном доступе.

Вариант три. В свободном доступе находится программа File Comparer, написанная на Delphi. Принцип действия не описывается. Загружаются 2 файла (рис. 2), после запуска выдается процент различия рассматриваемых exe-файлов.

Если программу сравнить с ее копией, то File Comparer верно определит 100%-ю схожесть входных файлов. После применения к копии «ручной» обфускации получим 45,83% различия. При таком результате можно лишь сказать, что файлы немного похожи.

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

Применение методов распознавания образов для обнаружения плагиата

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

Программа должна:

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

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

Стоит отметить, что наше программное решение выдает степень схожести в процентном соотношении, а не категоричное утверждение «плагиат»/«не плагиат».

Теперь рассмотрим собственно предлагаемый метод сравнения исполняемых файлов.

Рассмотрение самих exe-файлов (например, подсчет контрольной суммы) не обеспечивает достоверного результата, как мы видели ранее. Существует другой вариант рассмотрения - извлечь описание используемых структур данных и сравнивать их.

Распознавание образов предполагает упрощенное рассмотрение процесса восприятия путем сведения его к классификации по признакам простых объектов, рассматриваемых по отдельности.

Классическое распознавание образов обычно организуется как последовательный процесс, разворачивающийся «снизу вверх» (от изображения к пониманию). Этапу собственно распознавания должен предшествовать этап сегментации (разбиения) объекта  на части. Выполняются операции выделения элементов этого описания, например, признаков, или структурных элементов, части получают независимую интерпретацию, то есть отсутствует целостное восприятие, что в общем случае может приводить к ошибкам - рассматриваемый изолированно фрагмент часто можно интерпретировать совершенно по‑разному в зависимости от гипотезы восприятия, т. е. от того, какой целостный объект предполагается увидеть.

В нашем случае, на части стоит разбивать классы, описанные в программе. Если рассматривать объектно-ориентированную парадигму программирования, то  вся программа представляет собой множество классов, включающее и их взаимодействие. С этой точки зрения, достаточно рассмотреть все классы, представленные в программе, как совокупность образов. Мы можем разбить образы на отдельные части (поля, методы, классы), которые затем отобразить на некотором пространстве. Представление класса - множество точек. Тогда мы можем попробовать разделить классы одной программы от классов другой, используя метод потенциальных функций.

Суть метода с математической точки зрения заключается в следующем.

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

Метод потенциальных функций связан со следующей процедурой. В процессе обучения с каждой точкой пространства изображений, соответствующей единичному объекту из обучающей последовательности, связывается функция U(X, Xi), заданная на всем пространстве и зависящая от  Xi  как от параметра. Такие функции называются потенциальными, так как они напоминают функции потенциала электрического поля вокруг точечного электрического заряда. Изменение потенциала электрического поля по мере удаления от заряда обратно пропорционально квадрату расстояния. Потенциал, таким образом, может служить мерой удаления точки от заряда. Когда поле образовано несколькими зарядами, потенциал в каждой точке этого поля равен сумме потенциалов, создаваемых в этой точке каждым из зарядов. Если заряды, образующие поле, расположены компактной группой, потенциал поля будет иметь наибольшее значение внутри группы зарядов и убывать по мере удаления от нее.

Обучающей последовательности объектов соответствует последовательность векторов X1, X2, ..., в пространстве изображений с которыми связана последовательность U(X, X1), U(X, X2), ... потенциальных функций, используемых для построения функций f(X1, X2, ...). По мере увеличения числа объектов в процессе обучения функция f должна стремиться к одной из разделяющих функций. В результате обучения могут быть построены потенциальные функции для каждого образа:

 

В качестве разделяющей функции f(X) можно выбрать функцию вида:

 

которая положительна для объектов одного образа и отрицательна для объектов другого.

В качестве потенциальной функции рассмотрим функцию вида

 

где  14П†´> j(X) - линейно независимая система функций;  14О»´> j - действительные числа, отличные от нуля для всех j = 1, 2, ...; Xi - точка, соответствующая i-му объекту из обучающей последовательности. Предполагается, что 14П†´>j(X) и U(X, Xi) ограничены при

В процессе обучения предъявляется обучающая последовательность и на каждом n-м такте обучения строится приближение fn(X) характеризуется следующей основной рекуррентной процедурой:

 

Разновидности алгоритмов потенциальных функций отличаются выбором значений qn и rn, которые являются фиксированными функциями номера n. Как правило, qn 14в‰Ў´> 1, а rn выбирается в виде:

 

где S(fn, f) - невозрастающие функции, причем

 

Коэффициенты   14Оі´> n  представляют собой неотрицательную числовую последовательность, зависящую только от номера n. Кроме того,  14n=1в€ћОіn=в€ћ´>  и  14n=1в€ћОіn<в€ћ´>  (например,  14Оі´> n=1/n) или  14Оі´> n=const.

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

1. Будем считать, что f0(X)≡0 (нулевое приближение). Пусть в результате применения алгоритма после n-го шага построена разделяющая функция fn(X), а на (n+1)-м шаге предъявлено изображение Xn+1, для которого известно действительное значение разделяющей функции f(Xn+1). Тогда функция fn+1(X) строится по следующему правилу:

 

2. Во втором алгоритме также принимается, что f0(X)0. Переход к следующему приближению, т. е. переход от функции fn(X) к fn+1(X), осуществляется в результате следующей рекуррентной процедуры:

 

где   14О»´>  - произвольная положительная константа, удовлетворяющая условию   14О»´> =(1/2) 14Г-´> max(X, Xi) [5].

Если говорить о других парадигмах, то описанный подход не подойдет для его использования в той форме, в которой мы его рассмотрели. В рамках данной статьи мы рассматривать другие направления в программировании не будем, но планируем сделать это в будущем.

Заключение

В данной работе были проанализированы существующие методы сравнения exe-файлов и приложения, реализующие их; выявлены недостатки функциональности имеющихся программ и предложен способ решения поставленной задачи. В основе этого способа лежит метод распознавания образов с использованием потенциальных функций.  В дальнейшем планируется реализация приложения, базирующегося на предложенном методе анализа и сравнения exe‑файлов, и его внедрение в образовательный процесс на базе НИУ ВШЭ ‑ Пермь.

Библиографический список

  1. Как пользоваться системой «Антиплагиат» (НИУ ВШЭ) [Электронный ресурс] [Режим доступа: http://www.hse.ru/org/hse/antiplagiat_info] [Проверено: 31.01.2012]
  2. Система «Антиплагиат» в МГУ [Электронный ресурс] [Режим доступа: http://www.msu.ru/projects/antiplagiat.html] [Проверено: 31.01.2012]
  3. Система «Антиплагиат» [Электронный ресурс] [Режим доступа: http://www.antiplagiat.ru/index.aspx] [Проверено: 31.01.2012]
  4. Антиплагиат. Программа проверки текста на уникальность [Электронный ресурс] [Режим доступа: http://www.etxt.ru/antiplagiat/] [Проверено: 31.01.2012]
  5. Лекции 4-7. Системы распознавания образов (идентификации). Метод потенциальных функций [Электронный ресурс] [Режим доступа: http://www.iskint.ru/?xid=books/sotnik/-part3] [Проверено: 31.01.2012]
Просмотров работы: 21