система и способ контроля за выполнением программ с помощью трассировки бинарных приложений
Классы МПК: | G06F11/34 запись (регистрация) или статистическая оценка рабочего времени вычислительного устройства, например длительности простоя, операций ввода-вывода G06F9/44 устройства для выполнения специальных программ |
Автор(ы): | Павлющик Михаил Александрович (RU) |
Патентообладатель(и): | ЗАО "Лаборатория Касперского" (RU) |
Приоритеты: |
подача заявки:
2008-07-29 публикация патента:
27.03.2010 |
Изобретение относится к способам и устройствам формирования и передачи файлов трассировки. Изобретение обеспечивают упрощение работы с файлом трассировки и позволяет скрыть информацию, которая раскрывает логику работы программного модуля. В соответствии с настоящим изобретением на стороне разработчика в скомпилированном программном модуле осуществляют замену текстовых строк трассировки на соответствующие идентификаторы. Программный модуль передается на сторону пользователя. После того как на стороне пользователя сформирован файл трассировки, этот файл передается на сторону разработчика, где осуществляется восстановление текстовых строк по идентификаторам, содержащимся в этом файле. В результате получается текстовый файл, который может быть легко проанализирован разработчиком. 2 н. и 8 з.п. ф-лы, 6 ил.
Формула изобретения
1. Способ формирования и передачи файла трассировки, содержащий этапы, на которых:
на стороне разработчика компилируют программу с формированием исполняемого программного модуля, который содержит данные, необходимые для трассировки работы этого модуля;
в сформированном программном модуле заменяют имеющиеся текстовые строки трассировки на соответствующие идентификаторы, пользователю передают упомянутую скомпилированную программу с программным модулем, в котором заменены строки трассировки на соответствующие идентификаторы,
во время исполнения программы упомянутый программный модуль сохраняет информацию о ходе работы модуля, формируя тем самым файл трассировки,
передают файл трассировки на сторону разработчика, где осуществляют замену идентификаторов строк в упомянутом файле трассировки на соответствующие текстовые строки, которые ранее были заменены на стороне разработчика после компиляции программы, после чего осуществляют анализ полученных замененных текстовых строк и упомянутой информации, сохраненной в упомянутый файл трассировки на стороне пользователя.
2. Способ по п.1, в котором текстовые строки и соответствующие им идентификаторы хранятся в базе данных.
3. Способ по п.2, в котором на этапе замены текстовых строк трассировки на соответствующие идентификаторы дополнительно осуществляют замену данных о форматировании строкой типов параметров.
4. Способ по п.3, в котором при замене идентификаторов строк в упомянутом файле трассировки на соответствующие текстовые строки дополнительно осуществляют форматирование данных их трассировки.
5. Способ по п.4, в котором упомянутая база данных содержит базу программных модулей и базу строк, при этом база программных модулей содержит по крайней мере идентификатор модуля и ассоциированные с ним имя файла модуля, дату компиляции модуля, количество строк трассировки, имя и версия продукта, в который входил модуль, и версия модуля, а база строк содержит идентификатор программного модуля, в котором была строка, идентификатор строки, уникальный для модуля, и текст строки.
6. Система формирования и передачи файла трассировки, содержащая средство, установленное на стороне разработчика, для компиляции программы и формирования исполняемого программного модуля, который содержит данные, необходимые для трассировки работы этого модуля;
базу данных для хранения текстовых строк трассировки и соответствующих им идентификаторов;
средство для замены имеющихся текстовых строк трассировки в скомпилированном программном модуле на соответствующие идентификаторы, хранящиеся в упомянутой базе данных;
средство передачи пользователю упомянутой скомпилированной программы с программным модулем, в котором заменены строки трассировки на соответствующие идентификаторы, средство формирования файла трассировки, которое предназначено для сохранения информации о ходе работы программного модуля в файл трассировки во время исполнения программы;
средство передачи сформированного файла трассировки на сторону разработчика,
средство замены идентификаторов строк в упомянутом файле трассировки на соответствующие текстовые строки, хранящиеся в базе данных и которые ранее были заменены на стороне разработчика после компиляции программы,
средство вывода разработчику полученных замененных текстовых строк и упомянутой информации, сохраненной в упомянутый файл трассировки на стороне пользователя, для осуществления анализа разработчиком этих текстовых строк и упомянутой информации.
7. Система по п.6, в которой упомянутые средства замены выполнены в виде одного средства.
8. Система по п.7, в которой упомянутое средство замены имеющихся текстовых строк трассировки на соответствующие идентификаторы дополнительно осуществляет замену данных о форматировании строкой типов параметров.
9. Система по п.8, в которой упомянутое средство замены идентификаторов на соответствующие текстовые строки дополнительно осуществляет форматирование данных их трассировки.
10. Система по п.8, в которой упомянутая база данных содержит базу программных модулей и базу строк, при этом база программных модулей содержит по крайней мере идентификатор программного модуля и ассоциированные с ним имя файла модуля, дату компиляции модуля, количество строк трассировки, имя и версия продукта, в который входил модуль, и версия модуля, а база строк содержит идентификатор программного модуля, в котором была строка, идентификатор строки, уникальный для модуля, и текст строки.
Описание изобретения к патенту
Область техники
Изобретение относится к способам и устройствам формирования и передачи файлов трассировки.
Уровень техники
В настоящее время активно развиваются и используются компьютеры, которые применяются в различных областях жизни. Однако в ходе работы компьютера могут возникать различные сбои. Поэтому возникает необходимость в определении причин сбоя.
В настоящее время существует множество способов определения причин сбоя. Одним из таких способов является формирование файлов трассировки.
Трассировка - протоколирование работы программы с целью анализа ее активности в случае каких-то проблем при работе программы. Как правило, файл трассировки делают в текстовом виде. В тексте программы указывается вызов функции, которая сохраняет указанные ей строки текста. Когда программа компилируется, эти строки попадают в файл программного модуля. Затем эти строки и программный модуль попадают к клиенту. Клиент в случае каких-то проблем включает режим трассировки (трассировка ведется по запросу клиента). Программа создает файл трассировки и записывает туда строки по ходу выполнения действий. Строки могут содержать разные параметры, например имена файлов, которые открываются, коды ошибок, возникшие при открытии.
Затем клиент передает полученный файл трассировки разработчику. Разработчик анализирует полученный файл и определяет причину возникновения ошибки или сбоя.
Однако в этом случае возникает проблема - клиент может видеть строки, которые рассказывают о том, что происходит во время работы программы. Это приводит к тому, что может быть раскрыто ноу-хау и другие сведения, которые не желательные для общего раскрытия.
Для устранения этой проблемы существуют следующие способы. Первый способ - минимизировать трассировку. Второй способ - маскировка, т.е. вместо явного описания действия пишется определенное слово или сокращение. Но в этом случае возникает проблема - впоследствии становится сложно расшифровать написанный текст.
На фиг.1 показана блок-схема формирования и передачи файла трассировки. На этом чертеже показаны две стороны - сторона разработчика (101) и сторона пользователя приложения (103). Разработчик на своей стороне разрабатывает продукт (105) и как результат собирает исполняемый модуль (107), который содержит данные (109), необходимые для трассировки работы этого модуля. Затем разработчик выпускает продукт или другим способом передает пользователю свои модули (111). На стороне пользователя данные трассировки видны в читабельном виде (113). Во время исполнения (115) модуль создает трассировку своей работы (117). Пользователь отсылает трассировку разработчику (119), где полученные данные (121) анализируются (123).
Такой способ формирования и передачи файла трассировки описан в патенте US 6988263, опубликованном 17.01.2006, и патенте US 6754890, опубликованном 22.06.2004.
Однако этот способ также имеет недостатки. На стороне пользователя данные для трассировки внутри модуля (113) видны в читабельном виде, что уже представляет вектор атаки по отношению к разработчику - пользователь может предполагать внутреннюю логику работы модуля, основываясь на этих данных. Данные трассировки (117) содержат не только информацию о действиях, выполненных во время работы модуля, но также и о последовательности их выполнения, и об объектах, над которыми производились действия во время работы. Анализ этого файла дает второй вектор атаки и предоставляет пользователю максимум информации о внутренней логике модуля.
Таким образом, имеется необходимость в создании способа и устройства формирования и передачи файла трассировки, который можно легко восстанавливать и в котором определенные данные не могли бы быть прочитаны клиентом или каким-либо другим третьим лицом.
Краткое изложение изобретения
Настоящее изобретение предназначено для формирования и передачи файла трассировки.
Способ формирования и передачи файла трассировки содержит этапы, на которых: на стороне разработчика компилируют программу с формированием исполняемого программного модуля, который содержит данные, необходимые для трассировки работы этого модуля; в сформированном программном модуле заменяют имеющиеся текстовые строки трассировки на соответствующие идентификаторы; пользователю передают упомянутую скомпилированную программу с формированным программным модулем, в котором заменены строки трассировки на соответствующие идентификаторы; во время исполнения программы сохраняют информацию о ходе работы модуля, формируя тем самым файл трассировки; передают файл трассировки на сторону разработчика, где осуществляют замену идентификаторов строк в упомянутом файле трассировки на соответствующие текстовые строки, которые ранее были заменены на стороне разработчика после компиляции программы, после чего осуществляют анализ полученных замененных текстовых строк и упомянутой информации, сохраненной в упомянутый файл трассировки на стороне пользователя.
В частном варианте текстовые строки и соответствующие им идентификаторы хранятся в базе данных.
В другом частном варианте на этапе замены текстовых строк трассировки на соответствующие идентификаторы дополнительно осуществляют замену данных о форматировании строкой типов параметров.
Еще в одном частном варианте при замене идентификаторов строк в упомянутом окончательном файле трассировки на соответствующие текстовые строки дополнительно осуществляют форматирование данных их трассировки.
В другом частном варианте упомянутая база данных содержит базу программных модулей и базу строк, при этом база программных модулей содержит по крайней мере идентификатор программного модуля и ассоциированные с ним - имя файла модуля, дату компиляции модуля, количество строк трассировки, имя и версия продукта, в который входил модуль, и версия модуля, а база строк содержит идентификатор программного модуля, в котором была строка, идентификатор строки, уникальный для модуля, и текст строки.
Система формирования и передачи файла трассировки, содержащая средство, установленное на стороне разработчика, для компиляции программы и формирования исполняемого программного модуля, который содержит данные, необходимые для трассировки работы этого модуля; базу данных для хранения текстовых строк трассировки и соответствующих им идентификаторов; средство для замены имеющихся текстовых строк трассировки в сформированном программном модуле на соответствующие идентификаторы, хранящиеся в упомянутой базе данных; средство передачи пользователю упомянутой скомпилированной программы с формированным программным модулем, в котором заменены строки трассировки на соответствующие идентификаторы; средство формирования файла трассировки, которое предназначено для сохранения информации о ходе работы программы в файл трассировки во время исполнения программы; средство передачи сформированного файла трассировки на сторону разработчика; средство замены идентификаторов строк в упомянутом файле трассировки на соответствующие текстовые строки, хранящиеся в базе данных и которые ранее были заменены на стороне разработчика после компиляции программы; средство вывода разработчику полученных замененных текстовых строк и упомянутой информации, сохраненной в упомянутый файл трассировки на стороне пользователя, для осуществления анализа разработчиком этих текстовых строк и упомянутой информации.
В частном варианте упомянутые средства замены выполнены в виде одного средства.
Еще в одном частном варианте упомянутое средство замены имеющихся текстовых строк трассировки на соответствующие идентификаторы дополнительно осуществляет замену данных о форматировании строкой типов параметров.
В другом частном варианте упомянутое средство замены идентификаторов на соответствующие текстовые строки дополнительно осуществляет форматирование данных трассировки.
Еще в одном частном варианте упомянутая база данных содержит базу программных модулей и базу строк, при этом база программных модулей содержит по крайней мере идентификатор программного модуля и ассоциированные с ним - имя файла программного модуля, дату компиляции программного модуля, количество строк трассировки, имя и версия продукта, в который входил программный модуль, и версия программного модуля, а база строк содержит программный модуль, в котором была строка, идентификатор строки, уникальный для модуля, и текст строки.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
фиг.1 показывает блок-схему алгоритма формирования, передачи и анализа файла трассировки, известного из уровня техники;
фиг.2 показывает блок-схему алгоритма формирования, передачи и анализа файла трассировки в соответствии с настоящим изобретением;
фиг.3 показывает блок-схему преобразования программного модуля для бинарной трассировки;
фиг.4 показывает блок-схему алгоритма восстановления данных трассировки в читаемый вид;
фиг.5 показывает структуру базы данных;
фиг.6 показывает структурную блок-схему системы формирования и передачи модуля трассировки в соответствии с настоящим изобретением.
Подробное раскрытие предпочтительных вариантов осуществления
Объекты и признаки настоящего изобретения и способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, определенная в описании, является ничем иным, как конкретными деталями, обеспеченными для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.
Для ясности изобретения необходимо отметить следующее. Существует две стороны. Первая сторона - разработчик, а вторая сторона - пользователь.
На обеих сторонах используются широко известные компьютеры. В общем случае эти компьютеры содержат соединенные через шину процессор (CPU) и память, а также дисплей для отображения различной информации. Память может быть различная, такая как ROM, RAM, EPROM, EEPROM и т.п. Компьютеры также содержат мышь и клавиатура для ввода и управления информации. Эти компьютеры могут содержать и другие известные устройства, такие, как модем, джойстик и т.д.
Компьютеры используют различные операционные системы, например операционная система WINDOWS, которая имеет различные версии, такие как WINDOWS 98, WINDOWS 2000, WINDOWS XP и т.п.; операционная система Linux, операционные системы DOS, Novell, Unix, MacOS, IBM OS/390 и т.д.
Компьютеры на стороне пользователя и компьютеры на стороне разработчика могут соединяться друг с другом через широко известные сети, таких как локальные вычислительные сети (LAN), региональные сети, WLAN, сеть Internet и т.д. Передача информации, в том числе скомпилированная программа и модуль файла трассировки, сформированный на стороне разработчика, может осуществляться по различным сетям с использованием модемов. Аналогичным способом передается информация, в том числе и окончательный модуль файла трассировки, сформированный на стороне пользователя, также может передаваться по сети с использованием модемов и локальных вычислительных сетей (ЛВС).
Однако здесь необходимо отметить, что модуль файла трассировки, сформированный на стороне разработчика, и скомпилированная программа может передаваться пользователю другим способом. Например, путем продажи на других носителях информации: CD, DVD и др.
На фиг.2 показана блок-схема формирования и передачи модуля файла трассировки в соответствии с настоящим изобретении. Есть две стороны - сторона разработчика (201) и сторона пользователя приложения (203). Разработчик на своей стороне разрабатывает программный продукт (205) и как результат собирает исполняемый программный модуль (207), который содержит данные (209), необходимые для трассировки работы этого программного модуля.
Далее модуль обрабатывается специальным образом (211), когда строки трассировки из модуля помещаются в базу данных (219). Строки заменяются идентификаторами строк, а данные о форматировании - строкой типов параметров (213). Этот процесс замены будет подробно описан далее со ссылкой на фиг.3.
Затем разработчик выпускает продукт или другим способом передает пользователю свои модули (215). Как выше отмечалось, такая передача может быть осуществлена, например, путем продажи пользователю этого модуля или путем передачи этого модуля по сети.
На стороне пользователя данные трассировки не видны в читабельном виде (217). Во время исполнения (221), программный модуль создает трассировку своей работы (227). Пользователь отсылает трассировку разработчику (225), где полученные данные (223) декодируются (229). На этом этапе по идентификаторам строк из базы данных (219) получаются оригинальные строки, данные их трассировки (223) форматируются и выводятся в читабельном виде (231). Этот процесс замены будет подробно описан ниже со ссылкой на фиг.4
Полученные читабельные данные анализируются (233) разработчиком.
Как видим, в этой схеме на стороне пользователя нет читабельных в программном модуле (217). В данных, полученных при трассировке (227), отсутствует описание действий, только объекты, над которыми выполнялись действия. Также стоит отметить, что в данных (227) числа сохраняются в бинарном виде. Таким образом единственные данные, которые остаются читабельными - это строковые параметры, например имена файлов, которые обычно составляют незначительную часть трассировки. Пользователь на основании этих данных не может предполагать внутреннюю логику работы модуля.
Следует также отметить, что такой способ формирования файла трассировки позволяет разработчику решать, нужно ли ему конвертировать программный модуль, и таким образом скрывать данные трассировки, либо не конвертировать программный модуль и иметь файл трассировки в читабельном виде. Последнее может использоваться при внутреннем тестировании продукта.
Далее со ссылкой на фиг.3 будет описана замена текстовых строк программного модуля на соответствующие идентификаторы для бинарной трассировки.
После начала обработки программного модуля (301) открывается файл модуля (303), в котором находятся все строки трассировки (305). Файл модуля регистрируется (307) в базе данных (309) и получает идентификатор модуля (311). Далее для каждой строки выполняется набор операций (313). Строка помещается (315) в базу данных (317) и получает идентификатор строки (319). Пара идентификаторов модуля и строки позволяют уникально определить строку. В строке выделяется форматирование параметров и формируется строка типов параметров (321). Далее формируется бинарная последовательность (323), которой заменяется (325) оригинальная строка в модуле. Эта процедура повторяется для каждой строки (327). После замены всех строк файл закрывается (329) и на выходе (331) получается программный модуль с бинарной трассировкой.
Теперь со ссылкой на фиг.4 будет подробно описан процесс восстановления данных трассировки в читабельный вид.
Полученные от пользователя данные бинарной трассировки открываются для чтения (403) и подготавливается вывод для текстовых данных (405). Далее начинается цикл (407). Из файла трассировки считывается блок данных (409) и разделяется на идентификатор модуля, идентификатор строки и параметры (411). По идентификаторам определяется (413) из базы строк (415) вынимается оригинальная строка (417), для которой выполняется форматирование с помощью параметров (419) и выводится полученная текстовая строка (421). Цикл (423) повторяется пока не обработаны все данные бинарной трассировки. По окончании входных данных файлы закрываются (425).
На фиг.5 представлена структура базы данных. Как видно из этого чертежа база данных состоит из двух баз данных - база программных модулей (TraceFiles) и база строк (TraceStrings).
База программных модулей содержит идентификатор модуля и ассоциированные с ним - имя файла модуля, дату компиляции модуля, количество строк трассировки, имя и версия продукта, в который входил файл, и версия модуля.
База строк содержит идентификатор модуля, в котором была строка, идентификатор строки, уникальный для модуля, и тест строки.
Отметим также, что база программных модулей используется реферативно и в процессе восстановления бинарной трассировки практически не участвует. Возможна реализация, когда база программных модулей не ведется. В таком случае идентификатор строки уникально определяет строку между всеми строками для всех модулей.
Описанный выше способ формирования и передачи файла трассировки реализуется с помощью системы формирования и передачи файла трассировки.
Эта система, как видно из чертежа (фиг.6), содержит взаимосвязанные между собой средство (610) для компиляции программы и формирования исполняемого программного модуля; базу данных (620) для хранения текстовых строк трассировки и соответствующих им идентификаторов; средство (630) для замены имеющихся текстовых строк трассировки в скомпилированном программном модуле на соответствующие идентификаторы, хранящиеся в упомянутой базе данных; средство передачи (640) пользователю упомянутой скомпилированной программы с программным модулем, в котором заменены строки трассировки на соответствующие идентификаторы; средство (650) формирования файла трассировки, которое предназначено для сохранения информации о ходе работы программы в файл трассировки во время исполнения программы; средство (660) передачи сформированного файла трассировки на сторону разработчика; средство (670) замены идентификаторов строк в упомянутом файле трассировки на соответствующие текстовые строки, хранящиеся в базе данных и которые ранее были заменены на стороне разработчика во время компиляции программы; средство (680) вывода разработчику полученных замененных текстовых строк и упомянутой информации, сохраненной в упомянутый окончательный модуль на стороне пользователя, для осуществления анализа разработчиком этих текстовых строк и упомянутой информации.
Здесь следует отметить, что средства 610, 620, 630, 640, 670, 680 устанавливаются на стороне разработчика. Все остальные средства устанавливаются на стороне пользователя.
Как было отмечено выше со ссылкой на фиг.2-4, разработчик с помощью средства 610 осуществляет компиляцию программы и программного модуля, содержащего текстовые строки. После чего средство 630 осуществляет замену текстовых строк на соответствующие идентификаторы. Для этого средство 630 обращается к базе данных 620, из которой это средство получает соответствующие идентификаторы заменяемых строк модуля файла трассировки. Этот процесс был подробно описан выше со ссылкой на фиг.3.
После того, как средство 630 осуществило замену текстовых строк на соответствующие идентификаторы, то оно передает сформированный программный модуль на средство 640 передачи. Это средство осуществляет передачу модуля на сторону пользователя.
На стороне пользователя средство 650 формирования файла трассировки осуществляет сохранение информации о ходе работы программы в файл трассировки во время исполнения программы. После того, как был сформирован файл трассировки средство 660 передачи осуществляет передачу сформированного файла трассировки на сторону разработчика.
Полученный файл поступает на средство 670 замены идентификаторов строк в упомянутом файле трассировки на соответствующие текстовые строки. Для этого это средство обращается к базе данных 620, из которой получает текстовые строки, хранящиеся в базе данных и которые соответствуют тем идентификаторам, которые содержатся в файле трассировке. Таким образом, осуществляется замена идентификаторов на строки, которые ранее были заменены на стороне разработчика во время компиляции программы. Этот процесс был подробно описан выше со ссылкой на фиг.4.
После этого полученная текстовая информация передается со средства 670 на средство 680 вывода. Это средство осуществляет вывод полученной текстовой информации (т.е. полученные замененные текстовые строки и упомянутая информация, сохраненная в упомянутый файл трассировки на стороне пользователя) на экран, в файл или на бумажный носитель. После чего разработчик может осуществлять анализ этих текстовых строк и упомянутой информации.
Следует также отметить, что средства замены 630 и 670 могут быть выполнены в виде одного средства.
В заключении следует отметить, что приведенные в описании сведения являются только примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.
Класс G06F11/34 запись (регистрация) или статистическая оценка рабочего времени вычислительного устройства, например длительности простоя, операций ввода-вывода
Класс G06F9/44 устройства для выполнения специальных программ