Quick Unpack v2.2 readme
========================

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

!EP (EXE Pack)
32Lite
ABC Crypter
ACProtect (old versions)
AHPacker
Alex Protector
AnslymPacker
ap2k
AREA51 Cryptor
Armadillo (минимальная защита)
AsdPack
AsCrypt
ASPack
ASProtect (старые версии)
AT4RE aSm Protecter
AverCryptor
BamBam
BeroEXEPacker
CD-Cops
Crunch
CRYPToCRACk's PE Protector
CryptX
DalKrypt
DDeM
depack
DragonArmor
Escargot
ExE Evil
Exe32Pack
EXECrypt
ExeCryptor (старые версии)
ExeFog
ExeSax
ExeShield
ExeStealth
eXPressor
EZIP
fEaRz Crypter
FishPE
FreeCryptor
FriCryptor
FSG
Fusion
G!X Protector
HidePE
HidePX
hmimys-Packer
ID Application Protector
JDPack
KByS
kkrunchy
LameCrypt
Manolo
MEW
Minke
MKFPack
MPress
NakedPacker
NeoLite
NME
NoNamePacker
NoodleCrypt
nPack
NsPack
Orien
Pack
PackMan
PECompact
PEDiminisher
PE-PACK
PEncrypt
Pepsi
Perplex PE-Protector
Pestil
PeTite
PEX
PI Cryptor
PKLite32
PollyBox
PolyEnE
Protection Plus
QrYPt0r NuTraL Poly
QuickPack
RCryptor
RLPack
Simple Pack
Sopelka
StealthPE
TeLock (не все версии)
The Best Cryptor
TheMida (минимальная защита)
unnamed Scrambler
UPack
UPolyX
UProtector
UPX
USSR
VCrypt
VPack
VPacker
WindOfCrypt
WinKrypt
WinUPack
WWPack32
X-Crypter
XComp
XcR
XXPack
Yoda Crypter
Yoda Protector
YZPack
YZPacker
------------------------------
112 известных пакеров и много других...

Quick Unpack пытается обходить всевозможные скрэмблеры/обфускаторы и восстанавливать перенаправленный импорт. С версии 1.0 добавлена возможность распаковки dll. С версии 2.0 добавлена возможность аттача к процессу, что позволяет использовать Quick Unpack как дампер и восстановитель импорта. Также в версии 2.0 добавлена возможность использования скриптов, что позволяет распаковывать ещё более сложные протекторы. Эти возможности делают Quick Unpack уникальным программным продуктом, который не имеет подобных аналогов в мире!

Галка Use force unpacking. Когда программа запускается, ожидается срабатывание бряка на OEP. Но может быть так, что адрес OEP исполняется несколько раз, а лишь затем уже происходит нужное нам выполнение. С использованием ForceMode данная проблема решается путём запуска программы, подсчёта числа исполнений кода на OEP и последующего бряка на последнем исполнении. Для DLL эта галка включена всегда и позволяет восстановить в библиотеке релоки.

Если у Вас есть предложения по развитию данной программы или Вы нашли какие-либо баги, просьба сообщить мне об этом. Их можно запостить на официальном сайте: http://qunpack.ahteam.org или найти меня на форуме CRACKLAB.rU или на форуме exetools.com или в ирке irc://irc.cracklab.ru на #tport или irc://irc.street-creed.com на #tport

Лицензия и права
----------------
Список исходников, использовавшихся при написании Quick Unpack:
stripper asprotect unpacker by syd
PEiDLL.dll by Bob
GenOEP.dll by Snaker
для остальных OEP finders автор указан в самой программе
скриптовый язык Lua взят с http://www.lua.org

История версий
--------------
v2.2
[!] исправлены многие ошибки и сделаны улучшения, например, ускорена обработка импорта
[+] дельта для RDTSC теперь влияет и на GetTickCount
[+] обновлен Lua до 5.1.3
[+] обновлен generic OEP finder от UsAr
[+] модифицирован generic OEP finder от Human для нахождения OEP в DLL
[+] модифицирован generic OEP finder от deroko для нахождения OEP в DLL
[+] добавлена возможность сохранять лог из главного меню
[+] добавлена поддержка разных языков, достаточно создать свой lng-файл и подключить его в окошке preferences
[+] добавлено восстановление таблицы инициализации для Delphi. Следует включать только при уверенности, что программа написана на Delphi
[+] добавлено несколько новых функций и переменных для скриптов

v2.1
[!] исправлены многие ошибки. например, падение при восстановлении ресурсов на некоторых программах
[!] многопоточные приложения теперь корректно обрабатываются
[+] добавлена возможность установить конец модуля при трассировке функций импорта. Когда найдено обращение к импорту, оно анализируется, ведёт ли оно за пределы модуля (чтобы не трассировать внутренние функции). Некоторые проты перенаправляют импорт в последнюю секцию файла. Чтобы убрать эту проблему и была введена данная возможность. Это RVA
[+] добавлена возможность класть таблицу импорта по указанному RVA вместо создания новой секции
[+] добавлена возможность установить дельту для хука RDTSC (см. rdtsc_delta в Scripts.rus.txt)
[+] добавлена опция Load libraries only к списку методов восстановления импорта. с этой опцией импорт в прямом смысле слова не восстанавливается, просто берётся по 1 функции импорта из каждой из загруженных библиотек. после этого дамп будет загружен со всеми нужными библиотеками, а для импорта будут использоваться старые адреса функций, записанные протектором. эту опцию можно использовать, когда перенаправление импорта уж слишком забористое, но дамп после установки сервис пака или серьёзного апдейта работать перестанет
[+] добавлена опция Execute functions while tracing import. по умолчанию во время трассировки импорта функции не исполняются, но некоторые протекторы используют результаты выполнения функций в своей работе, для них и добавлена эта опция
[+] добавлена опция Process call xxx/jmp xxx. некоторые протекторы переделывают обращения к импорту из call [xxx]/jmp [xxx] в call xxx/jmp xxx. эта опция позволяет обрабатывать также и такие обращения к импорту
[+] добавлено несколько новых функций и переменных для скриптов
[+] generic OEP finder от UsAr теперь поддерживает и DLL
[+] добавлен новый манифест для Висты

v2.0 final
[!] исправлены многие ошибки. например, пропуск функций импорта
[!] исправлены косяки в драйвере. например, который не позволял передавать некоторые исключения
[!] улучшенная возможность экспорта функций теперь поддерживает невалидные функции
[!] множество небольших улучшений (как новая 256х256 иконка для Висты, спасибо Feuerrader :)) и оптимизация (улучшенное управление памятью)
[!] теперь Force.dll не использует GenOEP.dll, хотя некоторый код и был позаимствован
[+] добавлена долгожданная возможность использовать скрипты. перед использованием скриптов строго рекомендуется сначала прочитать по ним мануал (файл Scripts.rus.txt). примеры скриптов можно посмотреть в папке Scripts (файлы *.txt), там же можно найти мануал по скриптовому языку Lua (Lua Manual.html), интерпретатор которого и был встроен в программу. кстати, я знаю, что кнопка Step работает не очень, но лучше сделать не смог
[+] добавлена возможность передавать параметры распаковываемому приложению
[+] добавлена возможность импорта функций из imprec (теперь Quick Unpack поддерживает экспорт и импорт функций импорта в imprec-совместимые файлы, что позволяет править функции руками или добавлять новые. однако следует помнить, что это дело работает с нормально созданными файлами, но если туда напихать мусор или по-извращенски файл отформатировать, всё может упасть :) потому что мне было лениво аккуратно парсить файл)
[+] добавлена возможность цепляться к уже запущенному процессу (эта возможность позволяет выбрать любой модуль в процессе для распаковки, но тут есть свои тонкости. если имя процесса в listbox полное с полным путём, то к процессу можно аттачиться, если же только имя файла, то для аттача прав не хватит. для данного метода нельзя указать руками OEP, за OEP считается инструкция, на которой программа стояла в момент аттача. для использования этого метода нужно загрузить интересующую программу в любой отладчик и руками дойти до OEP, а потом аттачиться к этому процессу Quick Unpack. следует помнить, что для использования опции smart import recovery необязательно отпускать програму на выполнение, можно оставить её стоять в отладчике на бряке. но для использования smart import recovery with tracer необходимо поставить программу в бесконечную петлю (EB FE) и отпустить на выполнение, потому что Quick Unpack использует текущий поток для трассировки импорта. если программа была поставлена в петлю, не забудьте в дампе поправить эти 2 байта обратно. ну и трассировка импорта при аттаче довольно ненадёжная и медленная, поэтому использовать её нежелательно). эта опция позволяет использовать Quick Unpack как отдельный дампер и восстановитель импорта (попытка заменить PETools и ImpRec в 1 флаконе :))
[+] добавлена поддержка плагинов imprec (эта вещь позволяет использовать плагины от imprec в Quick Unpack для восстановления функций импорта. следует помнить, что при использовании аттача к процессу, для корректной работы трейсера программа должна быть отпущена на выполнение)
[+] добавлен generic OEP finder от UsAr. Я его немного поправил
[+] добавлен generic OEP finder от Human. Я его немного поправил
[+] добавлен generic OEP finder от deroko. я его немного поправил и взял ГУЙ из generic OEP finder от Human. иногда работает медленно, но вещь мощная и предупреждаю, что этот finder использует драйвер, который нельзя выгрузить без перезагрузки. использует движок Dream of every reverser от deroko, поэтому несовместим с win2k3 и каспером. за информацией об этом движке топайте на его сайт http://deroko.phearless.org
[-] убраны старые не-generic OEP finder-ы

v1.0 final
К сожалению Feuerrader отошёл от данного проекта, поэтому теперь я (Archer) единственный разработчик.

[!] исправлены некоторые ошибки. например, возможное повреждение tls во время удаления секций или возможное падение программы при чтении неправильных релоков
[!] распознание dll теперь идёт по флагу в заголовке, а не на основании расширения
[!] улучшенный трассировщик импорта теперь не боится трейсить полностью эмулированные функции
[+] появилась возможность добавить оверлей в конец распакованного файла
[+] появилась возможность дизассемблировать функции импорта (если некоторая функция была эмулирована, можно использовать дизасм, чтобы её распознать)
[+] появилась возможность добавить новую библиотеку (во время правки импорта позволяет использовать функции из этой библиотеки. также во время загрузки библиотеки программа стоит на OEP, это позволяет подгрузить свою библиотеку и сделать что-нибудь с импортом или самой программой)
[+] появилась возможность править функции импорта (можно исправлять некоторые функции руками. можно не только выбирать нужную функцию из listbox, но и набирать имя функции на клавиатуре)
[+] появилась возможность добавлять в импорт подозрительные функции (добавляет в таблицу импорта возможно эмулированные функции, чтобы потом их можно было поправить руками пользуясь вышеуказанной новой возможностью правки. но стоит иметь в виду, что при этом могут появиться и ложные функции, которые необходимо будет удалить из импорта)
[-] убрана imprec.dll (этот метод восстановления импорта был довольно бажный да и другие методы посильнее его, поэтому я решил его убрать)

v1.0 RC1
[!] Отрезаются корректно секции
[+] Новая возможность ребилда ресурсов и восстановления импорта с трейсером (восстанавливает перенаправленный импорт)! Теперь берет даже простенькие протекторы. Например, Yoda Protector!!
[+] Сообщение о критических ошибках
[!] При падении программы всё корректно выгружается
[!] Оптимизирован код и исправлены некоторые баги
[!] Поправлен метод восстановления через импрек
[!] Исправлен Force Mode
[!] Переписан драйвер с улучшением эмуляции rdtsc и изменением точек останова

v1.0 beta8 [!] Пофиксен глюк с Always on top
	   [!] Пофиксен глюк с незавершающимися процессами и BSOD
	   [!] Оптимизирован код восстановления импорта по методу syd
	   [+] Добавлено сохранение импорта в дерево imprec
	   [+] Теперь используется обновленный engine.sys
	   [!] Пофиксены баги при распаковке dll
	   [!] Пофиксен баг с определением ОЕР у старых версий upx для dll
	   [!] Улучшена экстренная остановка процесса распаковки
	   [!] Изменен внешний вид таблицы импорта для метода syd
	   [+] Добавлено открытие директорий объектов

v1.0 beta7 [+] Улучшен интерфейс
	   [+] Поправлены ошибки

v1.0 beta6 [!] Тестовый внутренний билд

v1.0 beta5 [+] Добавлена поддержка UPX 2.0
	   [+] Обновлены сигнатуры
	   [+] Обновлен движок трейсера из stripper 2.13 b9

v1.0 beta4 internal [!] ряд ошибок пофиксены

v1.0   [+] Добавлена возможность распаковки длл
       [+] Возможность подключения плагинов и собственных OEP finders

v0.7   [!] Сделано на основе улучшенного движка stripper 2.11 rc3 => новые возможности
       [+] Force mode добавлен
v0.6   [!] Финальный билд
v0.5   [+] Quick Unpack теперь использует новый движок и работает через внешний engine.sys. Debug API не используются
       [+] После распаковки дамп и заголовок PE теперь чистые
       [+] Новые OEP finders для пакеров
v0.43. [+] Добавлена библиотека ImpREC.dll. Будет полезно, думаю
	[+] Добавлена защита от IsDebuggerPresent (галочка "Hide unpacker")
	[!] Эта версия последняя, думаю, т.к. возможности Debug API исчерпаны

v0.41. [!] Пофиксен баг с совместимостью распакованных прог на разных ОС (баг с RestoreLastError)

v0.4 final. Финальный билд. Всё досконально пофиксено

v0.3. [+] Полностью переделан движок работы с дампом
	  Теперь используется движок от PE Tools by NEOx [uinC]
      [+] Внедрена система "умной" перестройки дампа и уменьшения его размера
	  Использован движок перестройки дампа от PE Tools by NEOx [uinC]
      [!] Удалена картинка Quick Unpack :)
      [+] Поддерживаются упаковщики с запоротыми заголовками (например, FSG)
      [+] Пофиксены мелкие баги при работе с PE файлами

v0.2. Первая версия. Всё как есть

Благодарности и приветы
-----------------------
tPORt, AHTeam, TSRh, KpTeam, REVENGE, CRACKL@B, ICU members, CoaxCable^CPH, Wild-Wolf and all CPH members on #cph, LaFarge [ICU] for nice music, syd, lord_Phoenix, NCRangeR, Grim Fandango, Aster!x, MozgC, Sten, PolishOX, NEOx, WELL, GPcH, newborn, Funbit, sl0n, Ms-Rem, Bad_guy, dj-siba, =TS=, UsAr, Human, deroko, Errins, Bronco, HandMill, Executioner, 4kusN!ck, BiT-H@ck, Hellsp@wn, HoBleen...