книги хакеры / журнал хакер / специальные выпуски / Специальный выпуск 57_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
||||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
||
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
89 |
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
A N T I ) C R A C K I N G |
|
Помимо знаменитого AsProtect, Алексей Солодовников |
|
||
( |
|||
написал также упаковщик AsPack |
|||
|
|
||
|
|
|
|
|
|
|
|
2.3. Предоставление служебных |
|
Dotfix.net – настоятельно рекомендуется к прочтению |
|
|||||
функций для проверки регистрацион- |
|
|||||
ми, обычно реверс-инженерами) авто- |
действительно мощную систему за- |
|
||||
ных ключей (в данном протекторе ис- |
|
|||||
распаковщики, которые исполняют |
щиты. Основные преимущества этого |
пользуется плохой алгоритм - были |
|
|||
свои обязанности пусть и хуже, чем |
протектора: |
найдены "дыры", а после этого были |
|
|||
распаковщики от авторов (например, |
1.1. Защита кода программы с по- |
"закейгенены" приложения, защи- |
|
|||
недавно мной был написан распаков- |
мощью очень стойких криптоалго- |
щенные Armadillo и использующие |
|
|||
щик для UPX), но распаковывают |
ритмов. |
функции проверки регистрационных |
|
|||
файлы, после чего можно начать ис- |
1.2. Защита таблицы импорта (в |
ключей) и многих других. |
|
|||
следовать код с целью его "заимство- |
последних версиях протектора защи- |
2.4. Упаковка файла. |
|
|||
вания" или просто взлома программы. |
та позаимствована из Obsidium). |
2.5. Применение технологии |
|
|||
Опытные люди распаковывают фай- |
1.3. Предоставление служебных |
CopyMem II, которая ни за что не поз- |
|
|||
лы "руками", берется отладчик, дам- |
функций для проверки регистрацион- |
волит реверс-инженеру получить |
|
|||
пер процессов и программа для вос- |
ных ключей и для многого другого. |
весь код программы (сразу :), а только |
|
|||
становления импорта, после чего все |
|
1.4. Использование виртуальной |
если докопировать недостающие кус- |
|
||
"смешивается в нужных пропорциях". |
машины, при помощи которой защи- |
ки программы по мере надобности. |
|
|||
При ручной распаковке во время за- |
щается главная ветвь кода программы. |
2.6. Применение технологии |
|
|||
пуска любое приложение оказывает- |
1.5. Упаковка файла. |
Nanomites. При защите эта опция яв- |
|
|||
ся распакованным (когда этот код уже |
|
1.6. Хорошая техническая под- |
ляется самой мощной. Очень немно- |
|
||
распакован и способен нормально ра- |
держка. |
гие реверс-инженеры, умеющие сни- |
|
|||
ботать, отслеживается передача уп- |
|
1.7. Сильная интеграция в код |
мать Armadillo почти со всеми опция- |
|
||
равления из кода протектора/упаков- |
программы, очень серьезно мешаю- |
ми, умеют снимать с этой опцией. Эта |
|
|||
щика в код оригинальной программы, |
щая при распаковке – приходится |
опция затирает все переходы в прог- |
|
|||
после чего весь файл скидывается из |
изощряться любыми способами и вос- |
рамме (пределы помечены програм- |
|
|||
памяти на жесткий диск и правится). |
станавливать недостающий код. |
мистом), заменяя из специальной от- |
|
|||
|
|
|
|
|
ладочной командой int 3, и при попыт- |
|
ДЛЯ ТЕХ, КТО МОЖЕТ |
|
2. Armadillo – довольно старый про- |
ке их выполнения защита вставляет |
|
||
|
|
Люди, имеющие деньги, защища- |
тектор, содержащий некоторые рево- |
их обратно (затирая, когда нужда в |
|
|
|
|
|
||||
|
|
|
||||
ют свои программы с помощью друго- |
|
люционные технологии. Его основные |
них пропадает). Снятие этой защиты |
|
||
го подкласса упаковщиков – протекто- |
преимущества: |
со всеми опциями занимает примерно |
|
|||
ров. Эти защитные системы специали- |
2.1. Защита кода программы с при- |
îäèí-äâà ÷àñà… Armadillo – ìîÿ ëþáè- |
|
|||
зируются на защите, а не на упаковке |
менением очень стойких криптоалго- |
мая защита. |
|
|||
(хотя тоже упаковывают). Многие |
ритмов. |
|
|
|||
программисты считают, что защитные |
2.2. Защита таблицы импорта. |
3. ExeCryptor 2 – по словам авторов, |
|
|||
механизмы, написанные реверс-инже- |
|
|
данная защита неломаема :). Как на- |
|
||
нерами (пусть даже бывшими) прине- |
|
|
|
|
||
сут только зло и что реверс-инжене- |
|
|
|
|
||
ры будут их ломать сами… Это боль- |
|
|
|
|
||
шая ошибка: тот, кто занимался или |
|
|
|
|
||
занимается реверсингом, лучше всех |
|
|
|
|
||
знают про всевозможные уловки, сек- |
|
|
|
|
||
реты и многое другое, что помогает |
|
|
|
|
||
создать действительно надежные за- |
|
|
|
|
||
щитные системы. А взлом программ, |
|
|
|
|
||
упакованных своим же протектором – |
|
|
|
|
||
неблагодарное дело, из-за которого |
|
|
|
|
||
популярность протектора может |
|
|
|
|
||
упасть навсегда. Надеюсь, эта статья |
|
|
|
|
||
развеет такие заблуждения. Какие же |
|
|
|
|
||
защитные системы распространены |
|
|
|
|
||
шире и популярнее остальных? |
|
|
|
|
||
1. AsProtect – протектор, написан- |
|
|
|
|
||
ный отечественным программистом – |
|
|
|
|
||
Алексеем Солодовниковым (когда-то |
|
|
|
|
||
занимался взломом). Он создал |
|
Создатели ExeCryptor уверены, что взломать их защиту невозможно |
» |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|||
|
|
|
C |
|
|
E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
|
d |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
|
NOW! |
o |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
BUY |
|
|
90 |
|
ЗАЩИТА |
|
НАВЕСНАЯЗАЩИТА |
|
|
|
|
|
|
|
BUY |
|
|
||||||||||||||||||||
w Click |
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w Click |
to |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
ивно… Как говорил ORC, все, что мож- |
|
СКРЭМБЛЕР UPX СВОИМИ РУКАМИ |
|
w |
|
|
|
|
|
|
|
|
o |
|
|||||||||||||||
|
. |
df |
|
|
|
n |
e |
|
|
|
. |
df |
|
|
n |
e |
|
|||||||||||||||||||||||||
|
|
p |
|
|
|
|
.c |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
.c |
|
|||||||||||
|
|
|
-xcha |
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-x cha |
g |
|
|||||||||||||
|
|
|
|
|
|
но запустить, можно и взломать. Эти |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
G |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
слова подтверждаются и в данном |
|
Одной из функций PeStubOEP является скрэмблер сигнатур раз- |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
N |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
случае, о чем мне недавно заявил |
|
личных упаковщиков. Попробуем написать скрэмблер UPX. Если |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
I |
|
|
|
|
|
|
|
|
|
очень влиятельный человек. Взлом |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
K |
|
|
|
|
|
|
|
|
|
этой защиты является очень затрат- |
|
кто-то забыл, то напомню, что если запустить UPX с ключом -d, он |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
распакует упакованный файл, но только в случае если сигнатура |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
C |
|
|
|
|
|
|
|
|
|
ным (люди, написавшие инструмент |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
A |
|
|
|
|
|
|
|
|
|
для снятия защиты, просят за него от |
|
не повреждена. Также мы научимся изменять имена секций, так как |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
R |
|
|
|
|
|
|
|
|
|
$1000). Однако на эти деньги можно |
|
не очень-то весело видеть подобное: |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
получить неплохую гарантию того, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
что программа не будет взломана. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
I ) |
|
|
|
|
|
|
|
|
|
|
.UPX0 |
сюда UPX кладет информацию из .tls |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
Преимущества: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
T |
|
|
|
|
|
|
|
|
|
3.1. Применение виртуальной |
|
.UPX1 |
здесь располагается весь упакованный код и данные программы |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
N |
|
|
|
|
|
|
|
|
|
машины. |
|
|
|
|
|
|
|
|
|
|
|
|
|
.rsrc |
ресурсы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
3.2. Обработка кода метаморфным |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
движком (это главное преимущество). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
( |
|
|
|
|
|
|
|
|
|
|
Нам понадобится только информация о расположении PE-заголов- |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
3.3. Защита кода программы с при- |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
менением очень стойких криптоалго- |
|
ка и адрес начала секций. Так вот, несмотря на то, что многие лю- |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ритмов. |
|
|
|
|
|
|
|
|
|
|
|
|
|
бят ломать DOS-заголовок, по смещению &H3C всегда находится |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
3.4. Защита таблицы импорта. |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
адрес на начало PE-заголовка (его там нет только если программа |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
4. Obsidium – относительно новый |
|
была написана под DOS). Теперь, когда уже найден адрес начала |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
протектор, средний по стойкости, не |
|
PE-заголовка, найдем адрес начала описания секций. Как ни стран- |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
имеет особых возможностей для на- |
|
íî, |
описание |
секций всегда начинается со |
смещения |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
дежной защиты. Преимущества: |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(PeOffset+&HF9), где PeOffset - адрес начала PE-заголовка. Оста- |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
4.1. Хорошая защита импорта. Эта |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
лось только определить число секций, а оно хранится по смещению |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
технология оригинальна: реверс-ин- |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
женеру, не знакомому ни с чем подоб- |
|
(PeOffset+6) в основном PE-заголовке. Теперь, когда все найдено, |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ным, будет трудно разобраться с за- |
|
не мешало бы разобраться со структурой описания секций. Приве- |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
щитой. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ду ее вариант для VB: |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
4.2. Защита кода программы с при- |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
менением очень стойких криптоалго- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ритмов. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Public Type pe_section_header |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
4.3. Упаковка файла. |
|
|
section_name As String * 8 ' Имя секции [8 байт] |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
4.4. Предоставление служебных |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
section_size As Long |
' Размер секции в памяти |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
функций для проверки регистрацион- |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
section_rva As Long |
' Адрес загрузки секции в памяти |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ных ключей и многое другое. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
5. VmProtect – защита, основанная |
|
section_size2 As Long |
' Размер секции в файле |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
section_start As Long |
' Смещение начала секции в файле |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
на превращении нужного кода в псев- |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
reserved As String * 12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
докод (код, который интерпретируется |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
section_flags As Long |
' Флаги секции |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
виртуальной машиной), который за- |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
тем интерпретируется мощной вирту- |
|
End Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
альной машиной. Достоинства: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
5.1. Применение мощной виртуаль- |
|
Структуры, подобные приведенной выше, идут одна за другой, а их |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ной машины, для которой очень слож- |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
количество равно числу секций в файле. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
но написать декомпилятор (преобра- |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
зователь из псевдокода в стандарт- |
|
Нижеприведенная структура идентична для UPX 1.24 и 1.90, а так- |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ный машинный код) псевдокода. |
|
же вряд ли поменяется в следующих версиях упаковщика, и я ду- |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
5.2. Защита бесплатна. |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
маю, что можно смело пользоваться данной структурой. Так вот, |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
сама структура содержит в себе поля, необходимые для нормаль- |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ной распаковки файлов UPX'ом и всегда начинается с "UPX!". Этим |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
мы и воспользуемся для нахождения адреса начала сигнатуры. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Public Type UPX_STRUCT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxMagic As String * 4 |
' Символы "UPX!" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxVersion As Byte |
' Версия UPX'а (например: 0C значит 1.24, 0D - 1.90) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxFormat As Byte |
' Определяет формат файла (PE, ELF, DOS и т.д.) PE - 09 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxMethod As Byte |
' Метод сжатия (если NRV или UCL, то 02) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxLevel As Byte |
' Степень сжатия (от 0 до 10) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxU_adler As Long |
' CRC части экзешника в распакованном виде |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxC_adler As Long |
' CRC части экзешника в запакованном виде |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxU_len As Long |
' Размер части экзешника в распакованном виде |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxC_len As Long |
' Размер части экзешника в запакованном виде |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxU_file_size As Long |
' Размер распакованного экзешника. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxFilter As Integer |
' Метод распаковки |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upxCRC As Byte |
' CRC сигнатуры |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Среди клиентов StarForce числятся такие компании, как 1С и |
|
End Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
"МедиаХауз" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ХАКЕРСПЕЦ 08(57) 2005