Инструменты пользователя

Инструменты сайта


bb:devpackernohost

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
bb:devpackernohost [2016/04/06 20:17]
prospero78 [Проблема.]
bb:devpackernohost [2016/04/06 20:23]
prospero78 [Дальнейшее преобразование]
Строка 12: Строка 12:
  
 ===== Герметизация. ===== ===== Герметизация. =====
-При взаимодействии //DevPacker// с пользователем создаётся список файлов (его тип - платформонезависимая структура //FileList//), который передается записывателю.+При взаимодействии ''DevPacker'' с пользователем создаётся список файлов (его тип - платформонезависимая структура ''FileList''), который передается записывателю.
  
-Создадим отдельную подсистему //Packed//. Процедуры записи (их логика зависит от структуры исполняемого файла [[http://ru.wikipedia.org/wiki/Portable_Executable|PE EXE]]) отделим в модуль //PackedExeWriter//. Команды упаковки вынесем в модуль //PackedCmds//. Структуру //FileList// переместим в модуль //PackedCore//. Там же объявим записыватель, чей абстрактный метод //PackList// реализуется в //PackedExeWriter//.+Создадим отдельную подсистему ''Packed''. Процедуры записи (их логика зависит от структуры исполняемого файла [[http://ru.wikipedia.org/wiki/Portable_Executable|PE EXE]]) отделим в модуль ''PackedExeWriter''. Команды упаковки вынесем в модуль //PackedCmds//. Структуру //FileList// переместим в модуль ''PackedCore''. Там же объявим //записыватель//, чей абстрактный метод ''PackList'' реализуется в ''PackedExeWriter''.
  
-Таким образом, функциональность //DevPacker// отделилась от платформозависимых модулей. Модуль //PackedCore// представляет для модуля //PackedCmds// герметичный прикладной слой. +Таким образом, функциональность ''DevPacker'' отделилась от платформозависимых модулей. Модуль ''PackedCore'' представляет для модуля ''PackedCmds'' герметичный прикладной слой. 
  
 ===== Модернизация HostPackedFiles. ===== ===== Модернизация HostPackedFiles. =====
-Модуль //HostPackedFiles// имеет неявную зависимость от алгоритмов //DevPacker// и опирается на эталонный интерфейс //HostFiles//, реализации файловых абстракций //BlackBox//+Модуль ''HostPackedFiles'' имеет неявную зависимость от алгоритмов ''DevPacker'' и опирается на эталонный интерфейс ''HostFiles'', реализации файловых абстракций ''BlackBox''
 Это делает его уязвимым как при смене платформы, так и при смене формата записи. Поэтому указания на конкретные особенности имеет смысл отделить от остальной логики. Это делает его уязвимым как при смене платформы, так и при смене формата записи. Поэтому указания на конкретные особенности имеет смысл отделить от остальной логики.
  
-Создадим модуль //PackedWinConst//, который будет содержать необходимую информацию для работы с форматом записи (для эталонной реализации это константы версии и тэга). Эти же константы используем внутри модуля //PackedExeWriter//.+Создадим модуль ''PackedWinConst'', который будет содержать необходимую информацию для работы с форматом записи (для эталонной реализации это константы версии и тэга). Эти же константы используем внутри модуля ''PackedExeWriter''.
  
 ===== Дальнейшее преобразование ===== ===== Дальнейшее преобразование =====
-Модуль PackedExeWriter реализует функции записи файлов, которые описаны типом PackedCore.FileList. Этот тип описывает значение даты и времени последней модификации файла, которые затем использует PackedExeWriter. На различных платформах (а так же при использовании пользовательских реализаций Files.Directory) способы получения информации о времени последнего изменения могут различаться. Следовательно, модуль PackedExeWriter не должен зависеть от конкретной реализации файловой подсистемы BB, согласно принципа "черного ящика". Для изоляции PackedExeWriter опишем в модуле PackedCore хук для получения нужной информации, который реализуем в модуле PackedOldWinSelector (для работы в эталонном ББ). Данный модуль одновременно будет устанавливать и реализацию записывателя.+Модуль ''PackedExeWriter'' реализует функции записи файлов, которые описаны типом ''PackedCore.FileList''. Этот тип описывает значение даты и времени последней модификации файла, которые затем использует ''PackedExeWriter''. На различных платформах (а так же при использовании пользовательских реализаций ''Files.Directory'') способы получения информации о времени последнего изменения могут различаться. Следовательно, модуль ''PackedExeWriter'' не должен зависеть от конкретной реализации файловой подсистемы BB, согласно принципа "черного ящика". Для изоляции ''PackedExeWriter'' опишем в модуле ''PackedCore'' хук для получения нужной информации, который реализуем в модуле ''PackedOldWinSelector'' (для работы в эталонном ББ). Данный модуль одновременно будет устанавливать и реализацию //записывателя//.
  
 ===== Результаты ===== ===== Результаты =====
bb/devpackernohost.txt · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)