SlideShare ist ein Scribd-Unternehmen logo
1 von 175
Downloaden Sie, um offline zu lesen
сп ковк прогр мм,
                                                            з щищенных Asprotect
                                                            © <2009> < екрылов   лентин>




Note:
To change the product logo for your own print manual or
PDF, click "Tools > Manual Designer" and modify the print
manual template.
Title page 1
                        Use this page to introduce the product
                                                                  by vnekrilov



This is "Title Page 1" - you may use this page to introduce
your product, show title, author, copyright, company logos,
etc.

This page intentionally starts on an odd page, so that it is on
the right half of an open book from the readers point of view.
This is the reason why the previous page was blank (the
previous page is the back side of the cover)
сп ковк прогр мм, з щищенных
Asprotect
© <2009> < екрылов           лентин>

All rights reserved. No parts of this work may be reproduced in any form or by any means - graphic, electronic, or
mechanical, including photocopying, recording, taping, or information storage and retrieval systems - without the
written permission of the publisher.

Products that are referred to in this document may be either trademarks and/or registered trademarks of the
respective owners. The publisher and the author make no claim to these trademarks.

While every precaution has been taken in the preparation of this document, the publisher and the author assume no
responsibility for errors or omissions, or for damages resulting from the use of information contained in this
document or from the use of programs and source code that may accompany it. In no event shall the publisher and
the author be liable for any loss of profit or any other commercial damage caused or alleged to have been caused
directly or indirectly by this document.

Printed:   ек брь 2009 in (whereever you are located)




                                             Special thanks to:
 Publisher
                                             All the people who contributed to this document, to mum and dad
 ...enter name...
                                             and grandpa, to my sisters and brothers and mothers in law, to our
 Managing Editor                             secretary Kathrin, to the graphic artist who created this great product
                                             logo on the cover page (sorry, don't remember your name at the
 ...enter name...                            moment but you did a great work), to the pizza service down the
                                             street (your daily Capricciosas saved our lives), to the copy shop
Technical Editors                            where this document will be duplicated, and and and...
 ...enter name...
 ...enter name...                            Last not least, we want to thank EC Software who wrote this great
                                             help tool called HELP & MANUAL which printed this document.

 Cover Designer
 ...enter name...

Team       Coordinator
 ...enter name...

 Production
...enter name...
4          сп ковк             прогр мм, з щищенных Asprotect




Table of Contents
           Foreword                                                                                                                                                                            7

 Part I      ведение                                                                                                                                                                          9

 Part II     сп ковк прогр мм, з щищенных
           Asprotect                                                                                                                                                                      12
       1     пределение версии протектор и компилятор
                ...................................................................................................................................                                          12
       2     онфигур ция отл дчик и пл гинов
                ...................................................................................................................................                                          14
       3     оиск OEP (SBOEP)
                ...................................................................................................................................                                          16
       4     осст новление т блицы INIT
                ...................................................................................................................................                                          21
       5     осст новление т блицы IAT
                ...................................................................................................................................                                          28
       6     осст новление вызовов эмулируемых APIs
                ...................................................................................................................................                                          38
       7     муляция APIs Asprotect
                ...................................................................................................................................                                          43
                   муляция         APIs Asprotect в ASProtect с коротким ключом (версии 2.xx SKE)
                                     .......................................................................................................................................................... 43
                   муляция         APIs Asprotect в ASProtect с длинным ключом (версии 1.xx)
                                     .......................................................................................................................................................... 47
                   муляция         APIs Asprotect, вызыв емых из Asprotect.dll
                                     .......................................................................................................................................................... 53
                   муляция         APIs Asprotect, вызыв емых из код прогр ммы
                                     .......................................................................................................................................................... 56
       8    стр нение проверок целостности код (CRC) в
           р сп ...................................................................................................................................
                 ков нной прогр мме                                                                                                                                                          56
       9    осст новление подпрогр мм с эмулиров нными
           инструкциями
                ...................................................................................................................................                                          58
                   олучение ф.......................................................................................................................................................... 61
                                йл Asprotect.dll из р сп ковыв емой прогр ммы
                   олучение т .......................................................................................................................................................... 61
                              блицы соответствия первого б йт опкод эмулиров нных инструкций для р сп ковыв емой про
                   олучение т .......................................................................................................................................................... 71 сп ковыв ем
                              блицы соответствия з головк м ссив д нных для эмулиров нных инструкций в р
                   олучение т .......................................................................................................................................................... 74
                              блицы р сположения д нных в м ссиве д нных для эмулиров нных инструкций
                   олучение т .......................................................................................................................................................... 84
                              блицы р сположения д нных в м ссиве для эмулиров нных инструкций, выполняемых во второ
                   олучение т .......................................................................................................................................................... 87
                              блицы идентифик торов эмулиров нных инструкций, выполняемых во второй VM
                   орректировк код VM для восст новления эмулиров нных инструкций в коде прогр ммы
                              .......................................................................................................................................................... 88
                   осст новление подпрогр мм с эмулиров нными инструкциями
                              .......................................................................................................................................................... 89
      10    осст новление секции импорт в р сп ковыв емой
           прогр мме
                ...................................................................................................................................                                          91
                   осст новление секции импорт с помощью скрипт “ осст новление секции импорт (.idata) в р сп ков нны
                             .......................................................................................................................................................... 91
                   осст новление секции импорт с помощью утилиты Import REConstructor
                             .......................................................................................................................................................... 98
      11     орьб с переносом код в специ льные обл сти п мяти
               ...................................................................................................................................                                         101
                   оиск подпрогр ммы дрес ции прыжков в обл сти п мяти Asprotect и созд ние т блицы прыжков
                             .......................................................................................................................................................... 102
                   оиск дресов м ссивов д нных с эмулиров нными инструкциями в обл стях п мяти Asprotect с укр денным
                             .......................................................................................................................................................... 104
                   бъединение всех обл стей со Stolen Code в одну секцию ф йл
                             .......................................................................................................................................................... 109
      12     борк р сп ков нного ф йл
               ...................................................................................................................................                                         111
                   одготовк ф йл dumped.exe к прикручив нию секции с укр денным кодом
                             .......................................................................................................................................................... 112
                   рикручив ние секции с укр денным кодом к ф йлу dumped.exe
                             .......................................................................................................................................................... 115
                   осст новление секции ресурсов .rsrc
                             .......................................................................................................................................................... 116
                   ере дрес ция прыжков из код прогр ммы н секцию с укр денным кодом .aspr
                             .......................................................................................................................................................... 118
                   стр нение .......................................................................................................................................................... 119
                             проверок целостности код второго тип
      13     чистк обл стей со Stolen Code от мусорного код
               ...................................................................................................................................                                         121

                                                                                                                                           © <2009> < екрылов                      лентин>
Contents                        5



   Part III     р ктик р сп ковки прогр мм                                                                                                                                        125
           1     сп ковк прогр ммы Sticky Password v4.0.0.148
                  ...................................................................................................................................                                 125
                     пределение протектор и язык прогр ммиров ния
                               .......................................................................................................................................................... 125
                     пределение опций з щиты прогр ммы
                               .......................................................................................................................................................... 126
                     осст новление т блицы IAT и вызовов эмулиров нных APIs
                               .......................................................................................................................................................... 127
                     стр нение .......................................................................................................................................................... 128
                               проверок целостности код CRC) прогр ммы
                     муляция APIs Asprotect, вызыв емых из код прогр ммы
                               .......................................................................................................................................................... 128
                     осст новление секции импорт в р сп ков нной прогр мме
                               .......................................................................................................................................................... 128
                     оиск обл стей со Stolen Code и восст новление в них эмулиров нных инструкций
                               .......................................................................................................................................................... 131
                     одготовк .......................................................................................................................................................... 131
                               ф йл dumped.exe к восст новлению секции ресурсов
                     осст новление секции ресурсов .rsrc
                               .......................................................................................................................................................... 134
                      мпиров ние секции JCLDEBUG
                               .......................................................................................................................................................... 135
                      пуск полученного д мп прогр ммы
                               .......................................................................................................................................................... 136
           2     сп ковк прогр ммы LanAgent v3.0.0.0
                  ...................................................................................................................................                                 137
                     пределение протектор и язык прогр ммиров ния
                               .......................................................................................................................................................... 137
                     пределение опций з щиты прогр ммы
                               .......................................................................................................................................................... 138
                     осст новление т блицы INIT
                               .......................................................................................................................................................... 139
                     осст новление т блицы IAT и вызовов эмулиров нных APIs
                               .......................................................................................................................................................... 140
                     стр нение .......................................................................................................................................................... 141
                               проверок целостности код CRC) прогр ммы
                     муляция APIs Asprotect, вызыв емых из код прогр ммы
                               .......................................................................................................................................................... 141
                     осст новление секции импорт в р сп ков нной прогр мме
                               .......................................................................................................................................................... 141
                     оиск обл стей со Stolen Code и восст новление в них эмулиров нных инструкций
                               .......................................................................................................................................................... 142
                     еренос обл сти SBOEP н место секции ф йл .rsrc
                               .......................................................................................................................................................... 143
                     одготовк .......................................................................................................................................................... 143
                               ф йл dumped.exe к его сборке
                     рикручив ние секции с укр денным кодом к ф йлу dumped.exe
                               .......................................................................................................................................................... 146
                     осст новление секции ресурсов .rsrc
                               .......................................................................................................................................................... 147
                     ере дрес ция прыжков из код прогр ммы н секцию с укр денным кодом .aspr
                               .......................................................................................................................................................... 149
                     чистк мусорного код в секции ф йл с укр денным кодом .aspr
                               .......................................................................................................................................................... 150
                     ыявление причины появления ошибки при з пуске р сп ков нной прогр ммы
                               .......................................................................................................................................................... 150
           3     сп ковк прогр ммы Asprotect v2.5 SKE build 04.08 Demo
                  ...................................................................................................................................                                 152
                     пределение протектор и язык прогр ммиров ния
                               .......................................................................................................................................................... 153
                     пределение опций з щиты прогр ммы
                               .......................................................................................................................................................... 154
                     осст новление т блицы INIT
                               .......................................................................................................................................................... 155
                     олучение ф йл Asprotect.dll
                               .......................................................................................................................................................... 156
                     олучение т.......................................................................................................................................................... 157
                                  блиц соответствия для корректировки VM
                     орректировк код VM для восст новления подпрогр мм с эмулиров нными инструкциями 160
                               ..........................................................................................................................................................
                     осст новление код подпрогр мм с эмулиров нными инструкциями
                               .......................................................................................................................................................... 161
                     муляция APIs Asprotect, вызыв емых из код прогр ммы
                               .......................................................................................................................................................... 162
                     стр нение .......................................................................................................................................................... 162
                               проверок целостности код прогр ммы
                     осст новление секции импорт прогр ммы
                               .......................................................................................................................................................... 162
                     оиск обл стей со Stolen Code и восст новление в них эмулиров нных инструкций
                               .......................................................................................................................................................... 163
                     еренос обл сти SBOEP н место секции ф йл .rsrc
                               .......................................................................................................................................................... 164
                     одготовк .......................................................................................................................................................... 165
                               ф йл dumped.exe к его сборке
                     рикручив ние секции с укр денным кодом к ф йлу dumped.exe
                               .......................................................................................................................................................... 167
                     осст новление секции ресурсов .rsrc
                               .......................................................................................................................................................... 168
                     ере дрес ция прыжков из код прогр ммы н секцию с укр денным кодом .aspr
                               .......................................................................................................................................................... 170

  Part IV       пилог                                                                                                                                                             173



© <2009> < екрылов   лентин>



                                                                                                                                                                                                5
6   сп ковк прогр мм, з щищенных Asprotect



    Index                                                              0




                                             © <2009> < екрылов   лентин>
Foreword   7




                                    Foreword


                                 This is just another title page
                               placed between table of contents
                                           and topics




© <2009> < екрылов   лентин>
Top Level Intro
This page is printed before a new
     top-level chapter starts




          Part

                                    I
ведение     9



1           ведение
            рошло более полугод с того времени, когд я н форуме CRACKL@B выложил
          цикл ст тей по р сп ковке прогр мм, уп ков нных протектором ASProtect.        этих
          ст тьях был опис н процесс р сп ковки прогр мм, уп ков нной этим протектором,
          т кже к ним был приложен комплект скриптов, который, собственно говоря, и
          выполнял процесс р сп ковки прогр ммы.          это время р зр ботчики выложили
          новые версии протектор ASProtect – 1.51 build 09.22 и 2.51 SKE build 09.22
          (сентябрь 2009 г.). роме того, з это время я получил много вопросов по р зным
           спект м р сп ковки прогр мм, уп ков нных Asprotect, з меч ния по р боте
          скриптов, д и с м р сп ков л нем ло прогр мм, уп ков нных этим протектором.
            оэтому я решил подготовить второй выпуск цикл ст тей. ожно было бы, конечно,
          сдел ть небольшие примеч ния к предыдущему циклу ст тей, чтобы сокр тить объем
          изл г емого м тери л , но немного подум в, я пришел к выводу о том, что
          повторение – это м ть учения, и лучше всего сдел ть полный цикл ст тей, хотя он, во
          многом, будет повторяться с предыдущим изложенным м тери лом. роме того, кто
          впервые столкнется с этим циклом ст тей, не будет лихор дочно иск ть, где можно
          дост ть первый цикл ст тей.

              еще одно.     зр бот нные скрипты для р сп ковки прогр мм, з щищенных
          Asprotect, тестиров лись мной н нескольких десятк х прогр мм. уже счит л, что
          они будут р бот ть везде, без к ких-либо сбоев. , когд уже был готов к отпр вке
          эт ч сть ст тьи, мне поп л сь прогр мм , н которой не ср бот л скрипт для
          восст новления эмулиров нных инструкций в обл стях п мяти со Stolen Code.
          н ч л р збир ться с причиной этого сбоя и н шел тот случ й, о котором д же и не
          подозрев л. ело в том, чтобы скрипт случ йно не з тер нужный код кодом
          восст новленных инструкций, я предусмотрел в скрипте смещение от н ч л
          свободного мест н 20h б йтов.          в этой прогр мме ок з лось, что имеется
          свободного мест в конце обл сти п мяти со Stolen Code только 0Ah б йтов.
            стественно, что скрипт, при приб влении 20h б йтов к н йденному дресу
          свободного мест , вычислил дрес з предел ми обл сти п мяти со Stolen Code
          (которой т м нет). , естественно, произошел сбой в р боте прививки. не пришлось
          вводить проверку н личия не менее 20h б йтов свободного мест в дв скрипт : для
          восст новления эмулиров нных инструкций в обл стях п мяти со Stolen Code, и для
          перенос обл стей п мяти со Stolen Code н место секций ф йл .rsrc или .adata.
            оэтому, если произошел сбой в р боте к кого-либо скрипт , нужно н йти причину
          этого сбоя, и сдел ть соответствующие корректировки, поскольку они, к к пр вило,
          небольшие.

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


© <2009> < екрылов   лентин>
10      сп ковк прогр мм, з щищенных Asprotect



     выполнения определенных процедур для р сп ковки прогр ммы.

       к известно, протектор выполняет многоуровневую з щиту прогр мм:

     - протектор может з щищ ть ригин льную точку вход прогр ммы (OEP) путем
     выполнения ч сти код в специ льной обл сти п мяти (Stolen Bytes OEP, или
     SBOEP);
     - может быть з щищен т блиц импорт (IAT) путем применения специ льных
     подпрогр мм, которые определяют, к кие APIs эмулиров ны протектором, и
     выполняют ч сть код этих APIs в специ льных обл стях п мяти прогр ммы;
     - в прогр мм х, н пис нных н Delphi, протектор шифрует т блицу иници лиз ции
     прогр ммы (INIT), которую выполняет, по мере необходимости;
     - шифрует ч сть код прогр ммы, и выполняет эти з шифров нные ч сти код в
     специ льных обл стях п мяти протектор ;
     - применяет эмуляцию код целых подпрогр мм, и эмулиров нные инструкции
     выполняет в специ льных подпрогр мм х.       к пр вило, р зр ботчики прогр мм
     применяют эту опцию для з шифровки подпрогр мм, связ нных с регистр цией
     прогр ммы, что зн чительно з трудняет процесс определения корректного
     регистр ционного код .

      ороче говоря, протектор дел ет множество г достей, которые зн чительно
     усложняют жизнь cracker's.

        тери л этой ст тьи р збит н несколько ч стей, в которых будет поэт пно изложен
     процесс р сп ковки прогр мм, уп ков нных ASProtect.

       втор д нного            тутори л          -    vnekrilov        ( екрылов
        лентин)
     e-mail: vnekrilov@yandex.ru




                                                                © <2009> < екрылов   лентин>
Top Level Intro
This page is printed before a new
     top-level chapter starts




          Part

                                    II
12       сп ковк прогр мм, з щищенных Asprotect



2           сп ковк прогр мм, з щищенных Asprotect
          тот м тери л р зделен н две ч сти. первой ч сти пок з ны основные действия,
         которые нужно выполнить при р сп ковке прогр мм, з щищенных Asprotect. о второй
         ч сти р ссмотрены примеры р сп ковки конкретных прогр мм, з щищенных Asprotect.

          рогр мм для р сп ковки:     ASProtect SKE v2.51 build 09.22
          пис ние прогр ммы:             кер/ ротектор исполняемых ф йлов
          нструменты:                 OllyDbg 1.10, PhantOm v1.54, PEiD v0.95, PE Tools
                                      v1.8.800.2006 RC7, Hex Workshop v5.00.2511, Plugin
                                      OdbgScript
                                               v1.78.1,
                                                     Import
                                                          REConstructor F, DiE v0.64 by
                                                                      v1.6
                                      Hellsp@wn, Resource Binder v3.1
          ложность:                    ля опытных crackers
           щит :                      ASProtect SKE v2.51 build 09.22
          ель:                          сп ковк прогр мм, уп ков нных ASProtect



2.1       пределение версии протектор и компилятор
            еред р сп ковкой прогр ммы всегд нужно выяснять версию протектор и
          компилятор прогр ммы, поскольку по этим п р метр м можно определить
          н пр вление д льнейшей р боты. к, н пример, если прогр мм скомпилиров н
          компилятором Delphi, то в ней, к к пр вило, будет з криптов н т блиц
          иници лиз ции прогр ммы (INIT), которую н м нужно р скриптов ть н ее родное
          место в прогр мме. рогр ммы, скомпилиров нные н C/C++, не имеют т блицы
           иници лиз ции, поэтому р бот по восст новлению т блицы INIT не выполняется.

           ля выяснения, уп ков н ли прогр мм , или нет, можно использов ть н лиз торы
          ф йлов PEiD v0.95, DiE v0.64 или RDG Packer Detector v0.6.6. ообще имеется
          большое число всяки н лиз торов ф йлов, но, н мой взгляд, дост точно
          использов ть эти три н лиз тор ф йлов.

           н ч л про н лизируем прогр мму
                                        в PEiD v0.95.




                                                                    © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect   13




            к видим, прогр мм уп ков н ASProtect 1.2x - 1.3x [Registered]. опробуем
          уточнить версию п кер , для чего применим прекр снейшую утилиту ASPrINF v1.6
          Beta:




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

           оскольку н ми определен п кер, которым з щищен н лизируем я прогр мм , н м
          ост лось определить компилятор, которым скомпилиров н прогр мм . ля этих
          целей будем использов ть утилиту DiE v0.64:




© <2009> < екрылов   лентин>
14      сп ковк прогр мм, з щищенных Asprotect




        , н конец, про н лизируем прогр мму в RDG Packer Detector v0.6.6:




         к видим, н лиз ф йл в н лиз тор х DiE v0.64 или RDG Packer Detector v0.6.6
       позволил н м определить компилятор, которым скомпилиров н исследуем я
       прогр мм – это Borland Delphi. оскольку прогр ммы, скомпилиров нные этим
       компилятором, имеют т блицу INIT, то, со зн чительной степенью вероятности,
       можно предположить, что п кер з криптов л эту т блицу, и н м придется ее
       восст н влив ть.

2.2    онфигур ция отл дчик и пл гинов
        еред з грузкой прогр ммы в отл дчик OllyDbg v1.10, нужно предв рительно
       выполнить его конфигур цию н вкл дке “ сключения”:




                                                                 © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect   15




            , т кже сконфигуриров ть plugin PhantOm v1.54:




© <2009> < екрылов   лентин>
16      сп ковк прогр мм, з щищенных Asprotect



2.3    оиск OEP (SBOEP)
        т к, з груж ем прогр мму в отл дчик:




        то – тр диционн я точк вход прогр мм, уп ков нных Asprotect. нструкция
       PUSH 5C5001 отсыл ет н с в предпоследнюю секцию ф йл .data, котор я содержит
       в уп ков нном виде код прогр ммы, код Asprotect.dll, и все д нные (которые
       хр нятся в м ссив х), необходимые для р сп ковки прогр ммы в п мять компьютер .

         меется много ст тей р зных второв (в том числе и мои ст тьи), в которых
       подробно описыв ется процесс р сп ковки прогр ммы в п мять компьютер ,
       поэтому я не буду здесь повторять все то, что было н пис но р ньше. десь я хочу
       только отметить, что с мой первой р сп ковыв ется Asprotect.dll, котор я упр вляет
       процессом д льнейшей р сп ковки прогр ммы в п мять компьютер , обеспечив я ее
       корректную р боту.       еще одно! есмотря н большое число версий д нного
       протектор , Asprotect.dll пр ктически не меняется от версии к версии, что позволяет
       зн чительно облегчить процесс р сп ковки прогр мм, уп ков нных р зными
       версиями Asprotect. незн чительных отличиях р зных версий Asprotect.dll будет
       ук з но в соответствующих р здел х д нной ст тьи.

        ст новк прогр ммы н коде Asprotect.dll

         т к, к к ук з л выше, процессом р сп ковки прогр ммы упр вляет Asprotect.dll,
       поэтому н шей з д чей является, при з пуске прогр ммы в отл дчике, ост новить
       выполнение прогр ммы после р сп ковки Asprotect.dll в п мять компьютер .
         онечно, можно идти по цикл м р сп ковки, к к это опис но в ст тьях р зных
        второв (в том числе и моих ст тьях), одн ко можно и зн чительно упростить этот
       процесс, используя следующий прием. Asprotect.dll – это библиотек , котор я имеет
       все секции, присущие библиотек м .dll, т.е. секции код , импорт , экспорт , и т.д.
       (кроме PE-з головк , который обычно имеет вирту льный р змер в 1000h б йтов).
         есто з головк этой библиотеки Asprotect.dll в п мяти компьютер з полнено
       нолями (хотя некоторые р зр ботчики прогр мм используют эти 1000h б йтов код
       для з писи н ч льного код прогр ммы, и р змещ ют библиотеку Asprotect.dll в
       предпоследней секции ф йл ). к и люб я прогр мм , при своем з пуске, Asprotect.
       dll вызыв ет API GetSystemTime из kernel32.dll, и вызов этой API можно
       использов ть для ост новки прогр ммы в обл сти код Asprotect.dll:




                                                                   © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect   17




             к видно из приведенного рисунк , после выполнения API GetSystemTime, мы
           поп д ем в обл сть код Asprotect.dll. очк вход Asprotect.dll имеет следующий
           вид:




              нее можно пройти, н ж в несколько р з кл виши Ctrl+F9, после ост новки
           прогр ммы н выполнении API GetSystemTime.

            огд прогр мм ост новил сь н коде Asprotect.dll после выполнения API
           GetSystemTime, то еще не выполнен р сп ковк код прогр ммы, т блиц IAT и
           INIT, и других ч стей код прогр ммы. оэтому, мы можем, проходя н
           соответствующие подпрогр ммы в Asprotect.dll, упр влять процессом р сп ковки
           код прогр ммы в п мять компьютер т ким обр зом, чтобы получить код
           прогр ммы, дост точный для выполнения р бочего д мп п мяти прогр ммы.
             рогр мм полностью р сп ков н в п мять компьютер , когд он ост новлен н
           OEP или SBOEP, поэтому н м н до сн ч л определиться, своров н ли п кером
           ч сть код из обл сти OEP, или нет. ля этого н м нужно пройти н OEP
           прогр ммы, и определить, что мы здесь имеем – OEP или SBOEP.

             рохождение н OEP – SBOEP прогр ммы

             к я уже пис л выше, Asprotect.dll не сильно отлич ется в р зных версиях
           протектор , поэтому имеются некоторые волшебные точки, один ковые для всех
           версий Asprotect.dll, и которые можно использов ть для поиск OEP или SBOEP
           прогр ммы. дной из т ких волшебных точек является следующий код:




© <2009> < екрылов   лентин>
18      сп ковк прогр мм, з щищенных Asprotect




       дрес 00CB1CB8 – это очень интересный дрес.        нем з пис н дрес SBOEP
     прогр ммы (если п кер своров л ч сть код из OEP прогр ммы), и в этом дресе
     з пис ны 00000000, если р зр ботчик прогр ммы не з щитил OEP своей прогр ммы.
       тот уч сток код Asprotect.dll можно легко н йти, выполнив поиск инструкции
     MOV BYTE PTR DS:[EAX],0E1:




      ледует отметить, что в некоторых версиях Asprotect.dll (н пример, версии 1.32),
     применяется инструкция - MOV DWORD PTR DS:[EAX],0E1.

       зличие этих двух инструкций з ключ ется только в р змер х опер ндов – BYTE
     или DWORD.

       з тем, н чин я от предыдущей н йденной инструкции, н м н до н йти следующие
     две инструкции:

     00C9FFA3     A1 B81CCB00      MOV EAX,DWORD PTR DS:[CB1CB8]
     00C9FFA8     894424 04        MOV DWORD PTR DS:[ESP+4],EAX




                                                               © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect   19




            оскольку дрес конст нт и регистров в р зных прогр мм х будут р зными, то
           поиск этого мест выполняем по м ске “A1????????894?”.

            бр тите вним ние н то, что при поиске этих двух инструкций, необходимо снять
           фл жок с опции “ есь блок”.

             личие этой волшебной точки позволяет н пис ть скрипт, который с м н ходит
           OEP (SBOEP) н любой прогр мме, уп ков нной Asprotect.

              ктически скрипт должен сдел ть следующее:
           1.   ройти н дрес API GetSystemTime н н шей м шине.
           2.    йти инструкцию MOV BYTE PTR DS:[EAX],0E1 (или MOV DWORD PTR
               DS:[EAX],0E1).
           3.    йти инструкцию MOV EAX,DWORD PTR DS:[CB1CB8].
           4.    пустить прогр мму до этой инструкции, и прочит ть зн чение SBOEP.

             зр бот нный мной скрипт “ оиск OEP (SBOEP).osc” построен н этой логике
           р боты. дн ко он сн бжен рядом дополнительных функций, которые позволяют
           т кже определить основные опции з щиты, которые использов л прогр ммист для
           з щиты р зр бот нной им прогр ммы.        то позволяет, н с мом первом
           предв рительном н лизе з щищенной прогр ммы, определить, с чем н м придется
           р бот ть.

             здесь я не могу не ск з ть о том, что р зр ботчики протектор весьм ревниво
           относятся к з щите код Asprotect.dll, встр ив я в него несколько проверок его
           целостности (CRC). к, н пример, если мы уст новим обычную BreakPoint н
            дрес инструкции MOV BYTE PTR DS:[EAX],0E1, и попыт емся з пустить
           прогр мму, то получим следующее сообщение:




© <2009> < екрылов   лентин>
20      сп ковк прогр мм, з щищенных Asprotect




       т ких проверок в коде Asprotect.dll, имеется дост точно много. оэтому одни
     проверки приходится обходить, используя Hardware BreakPoint вместо обычных
     BreakPoint, другие проверки приходится обходить путем принудительного перенос
     регистр EIP н необходимый дрес прогр ммы.          третьи проверки приходится
     обходить путем принудительной перез писи имеющегося контрольного зн чения н
     нужное контрольное зн чение.

      се это можно посмотреть в коммент риях к скрипту “ оиск OEP (SBOEP).osc”,
     который приложен к д нной ст тье. о предложению r-e я вырез л ч сть
     коммент риев, которые з громожд ют скрипт, и ост вил только основные
     коммент рии, которых вполне дост точно для того, чтобы понять логику р боты
     скрипт , и позволяют, в случ е необходимости, быстро н йти причины сбоев его
     р боты. росм трив ть этот скрипт лучше всего в ред кторе скриптов Olly Debugger
     Script Editor v1.2 от Guru.exe, или используя ред ктор скриптов OllySubScript v1.4.1
     by Sub Xero (мне больше понр вился этот ред ктор скриптов).

       пустив этот скрипт, мы довольно быстро ок зыв емся здесь:




       к видим, в этой прогр мме мы ост новились н SBOEP.        это озн ч ет, что
     вполне возможно, прогр ммист з щитил свою прогр мму, используя криптов ние
     т блицы INIT, пере дрес цию импорт , и, вполне вероятно, весь н бор г достей,
     которые предост вляет этот протектор.




                                                                   © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect   21




              этом рисунке приведен результ т р боты скрипт при прохождении н OEP
           прогр ммы, у которой не з щищен оригин льн я точк вход . сли мы посмотрим
           н “волшебную” обл сть код , то увидим следующее:




             к видим, по интересующему н с дресу з пис ны ноли, что ук зыв ет н
           нез щищенность протектором OEP прогр ммы.

             риложение:        крипт для проход     н   OEP (SBOEP) прогр ммы - “ оиск OEP
           (SBOEP).osc”

           PS.   хотел бы побл год рить r-e з его ценные з меч ния по изменению текст
           скриптов, которые помогли сдел ть их более н глядными, и удобными в р боте.
2.4         осст новление т блицы INIT
            сли прогр мм н пис н н Borland Delphi, то он имеет т к н зыв емую т блицу
           иници лиз ции (т блиц       INIT), котор я содержит       дрес    подпрогр мм,
           выполняемых при з пуске прогр ммы. ротектор Asprotect полностью шифрует
           т блицу INIT, и выполняет ее в специ льно выделенной обл сти п мяти, обл сть в
           коде прогр ммы, где р ньше н ходил сь эт т блиц , протектор з полняет мусорным
           кодом.

              в йте немного подробнее р ссмотрим т блицу INIT. сли мы посмотрим н Entry
           Point (EP) неуп ков нной прогр ммы, н пис нной н Borland Delphi, то увидим
           следующее:




© <2009> < екрылов   лентин>
22      сп ковк прогр мм, з щищенных Asprotect




        рисунке стрелкой пок з н дрес р сположения т блицы INIT в прогр мме.
     нижнем рисунке приведен фр гмент т блицы INIT:




      р сным цветом выделено число подпрогр мм, содерж щихся в этой т блице INIT (
     112h), елтым цветом выделен ук з тель н дрес первой подпрогр ммы т блицы
     INIT, рко-зеленым цветом выделены дрес подпрогр мм иници лиз ции, и
      ирюзовым цветом выделены дрес подпрогр мм деиници лиз ции.

       теперь д в йте посмотрим н т блицу INIT уп ков нной прогр ммы.              м мы
     видим следующее:




      десь мы видим, что вместо числ подпрогр мм, содерж щихся в этой т блице INIT,
     з пис но зн чение 01h (выделено р сным цветом), елтым цветом выделен
     ук з тель н дрес подпрогр мм CALL, в которых выполняются з криптов нные
     подпрогр ммы      иници лиз ции    (выделен       рко-зеленым    цветом),    и
     деиници лиз ции (выделен ирюзовым цветом). ст льн я же ч сть т блицы INIT
     з полнен мусорным кодом.

      чевидно, что т блицу INIT лучше всего восст н влив ть до восст новления

                                                              © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect      23



           т блицы IAT и пере дресов нных вызовов APIs, поскольку после восст новления
           т блицы IAT и пере дресов нных вызовов APIs, прогр мм полностью р сп ков н
           в п мять м шины, ее можно уже д мпиров ть.

             же с первой ч сти д нного цикл ст тей можно предположить, что и здесь можно
           н йти волшебный код, который позволит н м восст новить т блицу INIT,
           з криптов нную протектором Asprotect. о всех версиях Asprotect.dll имеется одно
           очень интересное место, которое н ходится чуть выше код ошибки “60”:




               рисунке р сным цветом выделен т волшебн я точк , котор я определяет,
           з криптов н ли т блиц INIT, или нет. сли т блиц INIT з криптов н
           протектором, то условный прыжок “JE XXXXXXXX” не выполняется (зн чение
           фл жк Z р вно 0), и это озн ч ет, что н м н до будет восст н влив ть т блицу INIT.
              выполнив инструкцию CALL 00BDABD0, р сположенную н дресе 00BDD8F4,
           можно получить все д нные, которые необходимы для восст новления т блицы
           INIT.

            сли же т блиц INIT не з криптов н , или он отсутствует (для прогр мм,
           н пис нных н других язык х прогр ммиров ния), зн чение фл жк Z р вно 1,
           выполняется условный прыжок JE SHORT 00BDD907, и пропуск ется выполнение
           инструкции CALL 00BDABD0.

            стественно, что для поиск этой волшебной точки нужно использов ть строку
           ASCII “60”, котор я, к к я отметил выше, имеется во всех версиях Asprotect.dll.

            се д нные, которые необходимы для получения дрес подпрогр ммы, котор я
           н ходится в т блице INIT, протектор хр нит в м ссиве д нных, выполненном в виде
           двух т блиц – блицы и блицы .


© <2009> < екрылов   лентин>
24      сп ковк прогр мм, з щищенных Asprotect



       блиц     имеет следующий вид:




      ротектор под эту т блицу выделяет отдельную обл сть п мяти, в н шей случ е –
     02020000.

         блиц    выглядит т к:




       ротектор под эту т блицу т кже выделяет отдельную обл сть п мяти, в н шей
     случ е – 02030000.

       к видно, м ссивы д нных, н ходящиеся в т блиц  и , н м ничего не говорят,
     но именно они д ют ук з ние протектору, сколько нужно подсчит ть б йтов в
     специ льно выделенной обл сти п мяти, чтобы получить дрес подпрогр ммы,
     н ходящейся в т блице INIT. т обл сть п мяти н ходится здесь, и имеет вид
     мусорного код :




      бр тите вним ние н то, что все эти обл сти п мяти идут подряд: 02020000,
     02030000 и 02040000. именно в этой обл сти п мяти н ходится инструкция CALL
     REG, котор я и выполняет р скриптов нную подпрогр мму:




                                                             © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect     25




             к честве REG может быть любой регистр: EAX, ECX, и т.д. чевидно, что в этой
           обл сти п мяти нельзя уст н влив ть прогр ммные BreakPoint и изменять код,
           поскольку это приведет к неверным результ т м при подсчете б йтов в этой обл сти
           п мяти, и, соответственно, к сбою прогр ммы. динственно, что здесь можно дел ть
           – это уст н влив ть Hardware BreakPoint. менно н этом принципе и был
           построен скрипт для восст новления т блицы INIT, опис нный в первом выпуске
           д нного цикл ст тей.

             дн ко этот скрипт р бот ет медленно, и требуется несколько минут, чтобы
           восст новить т блицу INIT. VolX в своих скрипт х предложил более лучший
           в ри нт – это предв рительно, с помощью специ льной прививки, вычислить хэш
           к ждой подпрогр ммы т блицы INIT, используя д нные, н ходящиеся в т блиц х
           и . ри вычислении хэшей, естественно, используется обл сть п мяти, где з пис н
           CALL REG. ычисленные хэши з писыв ются в специ льно выделенную обл сть
           п мяти, и з тем, с помощью конст нты, имеющейся в обл сти п мяти CALL REG,
           р скриптовыв ются дрес подпрогр мм, которые были з пис ны в оригин льной
           т блице INIT. еперь здесь можно изменять код, дописыв ть свой код, и дел ть с
           ним любые действия, к кие мы пожел ем. ти изменения уже не будут влиять н
           результ ты н шей р боты.

            сли мы возьмем, н пример, с мые первые д нные из т блиц и , и вычтем из
           зн чения т блицы B зн чение т блицы A, то получим следующий результ т:

                                   7383E5FF - 7383E2EE = 00000311

             если к этому результ ту мы приб вим ImageBase обл сти п мяти, где н ходится
           CALL REG, то получим следующий результ т:

                                   00000311 + 02040000 = 02040311

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

              лее обнуляется регистр EAX, и из него вычисляются первые 4 б йт , н ходящиеся
           в н ч ле обл сти п мяти, где н ходится CALL REG:

                                  00000000 - 02EBF352 = FD140CAE


© <2009> < екрылов   лентин>
26      сп ковк прогр мм, з щищенных Asprotect



       тем из этой обл сти п мяти мы берем очередные 4 б йт , н которые ук зыв ет
     зн чение смещения выборки, и вычит ем их из полученного зн чения регистр EAX:

                           FD140CAE - CD02EBF3 = 301120BB

      тот цикл вычислений продолж ется до тех пор, пок не будет достигнут нижний
     порог обл сти п мяти для этой подпрогр ммы т блицы INIT – 02040311. огд
     достигнут этот порог, то к вычисленному зн чению регистр EAX приб вляется
     зн чение из т блицы , и мы получ ем хэш первой подпрогр ммы из т блицы INIT:

                           8CFE4BBA + 7383E2EE = 00822EA8

      ычисленные хэши подпрогр мм т блицы INIT, после выполнения код прививки,
     выглядит т к:




      к видно из приведенного рисунк , вычисленные хэши ст ли более похожи н
     дрес подпрогр мм, одн ко они еще не являются ими.

      ля р скриптовки зн чения хэш используются три конст нты - C1FF0493,
     C281A541 и 4E. м процесс р скриптовки выглядит следующим обр зом:

                           00822EA8 + C1FF0493 = C281333B

                           C281333B - C281A541 = FFFF8DFA

                                1 - FFFF8DFA = 00007206

                               00007206 + 4E = 00007254

        теперь, если мы приб вим к вычисленному зн чению ImageBase прогр ммы
     00400000, то получим требуемый дрес подпрогр ммы из т блицы INIT:

                            00007254 + 00400000 = 00407254

      ля р скриптовки хэшей подпрогр мм из т блицы INIT, применяется специ льн я
     прививк , котор я, для своей р боты, использует код в обл сти п мяти 02040000.
      осле выполнения этой прививки мы получ ем следующее:




                                                              © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect     27




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

             этой ч сти ст тьи мной приложен скрипт “ осст новление т блицы INIT.osc”.
           сож лению, этот скрипт получился дост точно большим по р змеру, поскольку
           зн чительный объем з ним ет вычисление инструкций, н ходящихся после CALL
           REG, и которые мы должны перенести в обл сть код прививки. ело з ключ ется в
           том, что мы должны н месте инструкции CALL REG з пис ть безусловный прыжок
           в прививку, который имеет р змер 5h б йтов. нструкция CALL REG имеет р змер
           2h б йт , и н м н до з нять еще три б йт у инструкций, р сположенных ниже
           инструкции CALL REG. о поскольку ниже этой инструкции р сположен мусорный
           код, который все время меняется, при к ждой перез грузке прогр ммы, то
           приходится в скрипте учитыв ть все эти изменения.

             дн ко полученный скрипт р бот ет очень быстро, и полностью восст н влив ет
           т блицу INIT во всех версиях Asprotect.dll. осст новленн я т блиц INIT может
           быть вст влен н свое родное место, после восст новления т блицы импорт (IAT)
           и пере дресов нных вызовов APIs, перед д мпиров нием п мяти прогр ммы.
             дн ко восст новленную т блицу INIT можно вст вить н ее родное место, и в
           полученный д мп п мяти прогр ммы, что з висит только от жел ния cracker's.
             оэтому, чтобы выполнить эту р боту, н м необходимо з пис ть, для п мяти, все
           д нные о т блице INIT. ти д нные скрипт з писыв ет в журн л регистр ции
           отл дчик , при з вершении своей р боты, в следующем виде:




              мп т блицы INIT скрипт сохр няет с именем “table_INIT.bin”, который н ходится
           в той же п пке, где н ходится и уп ков нн я прогр мм .

            сли мы посмотрим н т блицу INIT после р боты скрипт , то увидим следующее:




© <2009> < екрылов   лентин>
28      сп ковк прогр мм, з щищенных Asprotect




            рисунке мы видим        полностью    восст новленную     т блицу      INIT,     в
       р сп ковыв емом ф йле.

        риложение:    крипт для восст новления        т блицы INIT      прогр ммы         - “
        осст новление т блицы INIT.osc”.

2.5    осст новление т блицы IAT
         этой ч сти мы р ссмотрим восст новление т блицы IAT и инструкций вызовов
       эмулируемых APIs. о, предв рительно, р ссмотрим немного теории. се функции из
       р зных DLL, которые нужны для р боты прогр ммы, компиляторы собир ют в одном
       месте, и это место н зыв ется    блицей мпортируемых дресов, или просто
          блицей IAT. сли мы посмотрим н н т блицу IAT к кого-либо не уп ков нного
       ф йл , то т м увидим следующее (для пример я взял прогр мму DeDe, котор я
       н пис н н Borland Delphi):




         если мы изменим форм т отобр жения, то это место будет выглядеть т к:




        десь мы видим функции из двух библиотек – ntdll.dll и kernel32.dll, дрес которых
       привяз ны к конкретной (моей) м шине. .е., в к ждой ячейке этой т блицы IAT
       з пис н дрес используемых прогр ммой APIs, н н шей м шине.


                                                                   © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect   29



             если мы немного прокрутим код вверх, в с мое н ч ло этой обл сти п мяти, то
           увидим т к н зыв емую Import Table ( блицу мпорт ):




               этом рисунке я р зными цвет ми выделил д нные для р зных библиотек,
           используемых прогр ммой DeDe. екоторые пользов тели пут ют эти дв понятия -
              блиц IAT и     блиц   мпорт . сылк н       блицу мпорт имеется в PE-
           з головке ф йл , вот н т блицу IAT ссылок в PE-з головке ф йл - нет, но н нее
           к к р з имеются ссылки в    блице мпорт . ст ти, н к ждую библиотеку в
              блице мпорт отводится место в 14h б йтов.

            еперь д в йте р ссмотрим,  что озн ч ют дв зн чения, которые н ходятся в
             блице мпорт для к ждой библиотеки. озьмем, к примеру, первую библиотеку,
           котор я выделен рко-зеленым цветом:




              этом рисунке р сным цветом выделен дрес, который ук зыв ет н то место, где
           з пис но имя библиотеки,   ишневым цветом выделен первый дрес в т блице IAT
           , в котором з пис ны дрес APIs из этой библиотеки н н шей м шине. ( десь
           з пис ны зн чения VirtualOffset этих дресов,       чтобы получить зн чения
           VirtualAddress, к зн чениям VirtualOffset н до приб вить зн чение ImageBase
           прогр ммы). в йте перейдем н дрес 005B1A28 (VirtualOffset = 001B1A28):




              этом рисунке озовым цветом выделен последний дрес API в т блице IAT,
             елтым цветом – р зделительные ноли в конце т блицы IAT, ирюзовым цветом –
           имя DLL (kernel32.dll), олотистым цветом – имен APIs, которые входят в эту
           библиотеку, и иреневым цветом – дрес из блицы мпорт .

             теперь д в йте перейдем н   дрес 005B11B8 (VirtualOffset = 001B11B8):




© <2009> < екрылов   лентин>
30      сп ковк прогр мм, з щищенных Asprotect




         этом рисунке ирюзовым цветом выделены последние 14h б йтов        блицы
       мпорт , которые з полнены нолями. поскольку прогр мм скомпилиров н н
     Borland Delphi, то после      блицы мпорт идет      блиц IAT. рко-зеленым
     цветом выделен обл сть т блицы IAT, котор я содержит дрес APIs из библиотеки
      kernel32.dll, и иреневым цветом – дрес из блицы мпорт .

      если мы посмотрим н это место в исполняемом ф йле, то увидим следующее:




        нем вместо дресов APIs н н шей м шине мы видим VirtualOffset н их имен .
     немного ниже мы видим:




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

        ким обр зом, в прогр мм х, н пис нных н Borland Delphi, импорт APIs
     орг низов н следующим обр зом:
     - сн ч л идет т блиц мпорт ;
     - з тем идет т блиц IAT;
     - и после нее р сположен обл сть с имен ми DLLs и APIs.

      оэтому компилятор Borland Delphi выделяет для импорт APIs отдельную секцию
     ф йл , которую он н зыв ет .idata.

      емного ин че орг низов н импорт в прогр мм х, н пис нных, н пример, н
     Microsoft Visual C++ | C/C++. к, н пример, в ф йле Mtk_Res1.4.exe, т блиц IAT
     р сположен в н ч ле секции .rdata:




                                                             © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect   31




             блиц      мпорт р сположен в этой же секции ф йл , но н много ниже т блицы
           IAT:




              этом рисунке рко-зеленым и ирюзовым цвет ми выделены блок д нных в
           т блице мпорт о первых двух DLLs, используемых этой прогр ммой.




            онец т блицы мпорт выделен иреневым цветом. тем идет блок ук з телей н
           Original First Thunk, уже после блок этих ук з телей, идет обл сть с имен ми
           DLLs и APIs:




            десь, к к мы видим, т блиц   мпорт немного отлич ется от т блицы мпорт
           прогр мм, н пис нных н Borland Delphi. т т блиц вн ч ле содержит ук з тель
           Original First Thunk, который в свою очередь ук зыв ет н п р метр Hint,
           н ходящийся перед именем API:




© <2009> < екрылов   лентин>
32      сп ковк прогр мм, з щищенных Asprotect




        этом рисунке   р сным цветом выделен п р метр Hint,     ирюзовым цветом –
     имя API.

        ким обр зом, в прогр мм х, н пис нных н Microsoft Visual C++ | C/C++, импорт
     APIs орг низов н следующим обр зом:
     - сн ч л идет т блиц IAT;
     - з тем идет код прогр ммы;
     - д лее идет т блиц мпорт ;
     - з ней идет блок ук з телей н Hint;
     - и после этого блок ук з телей р сположен обл сть с имен ми DLLs и APIs.

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

       прогр мм х, скомпилиров нных другими компилятор ми, т блиц IAT и т блиц
       мпорт могут н ходиться в р зных секциях ф йл , но принципы их построения
     обусловлены требов ниями к форм ту PE-ф йлов, и поэтому они один ковы.

       ротектор Asprotect, к к пр вило, не трог ет т блицу мпорт , но полностью
     з полняет мусорным кодом обл сть имен DLL и APIs, и в зн чительной мере
     поврежд ет т блицу IAT. ри этом, протектор з криптовыв ет имен всех APIs,
     используя р зные конст нты для их з криптовки, и сохр няет эти имен в
     специ льных м ссив х д нных.

       еперь перейдем к н шей теме – восст новление т блицы IAT в прогр мм х,
     з щищенных Asprotect. ля выполнения этой р боты, н м н до выяснить, к ким
     обр зом ASProtect з полняет т блицу IAT дрес ми APIs.

      сли мы пройдем н OEP (SBOEP) прогр ммы, уп ков нной ASProtect, и посмотрим
     н т блицу импорт (IAT), то увидим т м следующее:




         этом   рисунке   мы   видим   поврежденную    протектором    т блицу      IAT.


                                                              © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect    33



             зделительные ноли перед н ч лом т блицы IAT выделены озовым цветом;
            ирюзовым цветом выделены APIs, которые прин длеж т первой DLL (kernel32.dll),
              елтым цветом выделены APIs, которые прин длеж т второй DLL (user32.dll).
             зделительные ноли между этими DLL выделены еленым цветом,        иреневым
           цветом выделены эмулируемые APIs, ре льные дрес которых з полнены мусорным
           кодом. дрес н ч л т блицы IAT выделен олотистым цветом.

              в йте кр тко р ссмотрим процесс з полнения т блицы IAT.    к известно, при
           з пуске прогр ммы, протектор Asprotect р сп ковыв ет код прогр ммы и т блицу
           импорт (IAT) с помощью Asprotect.dll.

            се д нные о т блице IAT прогр ммы хр нятся в з криптов нном виде в
           специ льном м ссиве д нных. ри з пуске прогр ммы, протектор извлек ет эти
           д нные из м ссив , и з писыв ет их по соответствующим дрес м т блицы IAT. ри
           этом ч сть т блицы IAT з полняется ф ктическими дрес ми APIs (применительно к
           конкретной м шине), ч сть т блицы IAT з полняется мусорным кодом, что и было
           пок з но н предыдущем рисунке.

              в йте теперь посмотрим н м ссив д нных, который содержит информ цию,
           необходимую для з полнения т блицы IAT. тот м ссив содержит з криптов нные
           имен всех APIs, которые используются в д нной прогр мме, причем APIs в этой
           т блице сгруппиров ны по соответствующим DLLs, в которых н ходятся эти APIs.
             р гмент т кого м ссив д нных приведен н следующем рисунке:




              этом рисунке ирюзовым цветом выделен р змер всего м ссив д нных о т блице
            IAT, ерым цветом выделены ук з тели н типы з криптовки имен APIs,
           применяемые в этом м ссиве д нных. рко-зеленым цветом выделен дрес т блицы
           IAT, по которому должн н ходиться перв я API (этот дрес ч сто является н ч лом
           т блицы IAT, но не всегд ). иреневым цветом выделен р змер д нных для первой
           DLL, з тем идут дв б йт , которые идентифицируют конкретную DLL в м ссиве
           д нных, и они выделены озовым цветом.           этими двумя б йт ми идет не
           з криптов нное имя DLL, которое выделено олотистым цветом. , н конец,
             оричнево-зеленым цветом выделено з криптов нное имя первой API.

            еперь д в йте посмотрим н з криптов нное имя API:




© <2009> < екрылов   лентин>
34      сп ковк прогр мм, з щищенных Asprotect




         этом рисунке оричнево-зеленым цветом выделен тип з криптовки имени API,
       р сным цветом выделен уник льный идентифик тор з криптов нной API, рко-
     зеленым цветом выделен р змер з криптов нного имени API, и ирюзовым цветом
     выделено с мо з криптов нное имя API.

      ип з криптовки имени API имеет большое зн чение для процесс з полнения
     протектором т блицы IAT.      з висимости от его зн чения, протектор или
     з писыв ет в т блицу IAT ф ктический дрес API, или же з полняет этот дрес
     мусорным кодом.

      еперь н м н до определить ту волшебную точку, котор я позволит н м з полнить
     т блицу IAT ф ктическими дрес ми APIs н н шей м шине.                    оскольку
     подпрогр мм з полнения т блицы IAT дрес ми APIs пр ктически не меняется в
     р зных версиях Asprotect.dll, то т кой волшебной точкой является следующий дрес:




       тот дрес легко н ходится по б йт м опкод инструкций "INC EAX", "MOV
     DWORD PTR DS:[EBX],EAX" и "ADD EDI,4", р сположенных в подпрогр мме
     з полнения т блицы IAT дрес ми APIs.

       одпрогр мм з полнения т блицы IAT дрес ми APIs является один ковой для всех
     версий Asprotect.dll, з исключением версии 1.32, поскольку в версии 1.32
     используется друг я строк конст нты для р скриптовки з криптов нных имен APIs.
      то отличие используется для ук з ния необходимого код прививки, применяемой
     для р скриптовки з криптов нных имен эмулируемых APIs, что видно н
     приведенном фр гменте скрипт для восст новления т блицы IAT:




      ледует отметить, что р зр ботчики этого протектор много вним ния уделяют
     выявлению н рушений целостности код прогр ммы, и встроили в Asprotect.dll
     много ловушек, которые не позволяют восст новить т блицу IAT. десь я хочу

                                                                © <2009> < екрылов   лентин>
сп ковк прогр мм, з щищенных Asprotect    35



           пок з ть эти ловушки:

           1-я ловушк (в некоторых версиях, протектор дв жды использует этот вид ловушки):




              этом рисунке ср внив ется зн чение регистр EAX с з д нным контрольным
           зн чением, после чего выполняется или не выполняется условный прыжок.      м
           н до, чтобы этот прыжок выполнялся всегд , поэтому скрипт меняет условный
           прыжок JE SHORT 00F064B0 н безусловный прыжок JMP SHORT 00F064B0,
           после восст новления т блицы IAT, он все возвр щ ет н з д условный прыжок JE
           SHORT 00F064B0.

           2-я ловушк :




             ри восст новленной т блице IAT (при этом д же не з тронуты вызовы
           эмулиров нных APIs), в регистре ESI появляется зн чение, отличное от ноля,
           условный прыжок JE SHORT 00F1008B не выполняется, и мы получ ем
           тр диционное сообщение о повреждении прогр ммы. десь решение з ключ ется в
           принудительном обнулении регистр ESI, что и дел ет скрипт.

            стр нение этих двух проверок позволяет норм льно з пуститься прогр мме с
           восст новленной т блицей IAT и восст новленными вызов ми эмулиров нных
           APIs.

             еще один момент. ля р боты протектор нужны APIs RaiseException и
           GetProcAddress. ти APIs протектор т кже эмулирует, но очень хитро, и, н пример,
           эмулиров нн я API RaiseException выглядит т к:




© <2009> < екрылов   лентин>
36      сп ковк прогр мм, з щищенных Asprotect




       йти дрес р сположения эмулиров нных APIs RaiseException и GetProcAddress
     можно легко, выполнив поиск по м ске следующей цепочки б йтов – “Eb01??
     B8????????”:




      если мы пройдем по мусорному прыжку JMP SHORT 00F06471, то увидим:




      десь рко-зеленым цветом выделен      дрес р сположения эмулиров нной API
     RaiseException.

      сли имеется одн цепочк вышеук з нных б йтов, то протектор эмулирует только
     API RaiseException,      если имеется две т ких цепочки б йтов, то протектор
     эмулирует обе APIs - RaiseException и GetProcAddress. ричем сн ч л ук з н дрес
     API RaiseException, з тем дрес API GetProcAddress.

        не буду здесь описыв ть р боту скрипт по восст новлению т блицы IAT,
     поскольку он сн бжен подробными коммент риями, и не нужд ется в к ких-либо
     дополнительных пояснениях. динственное, что я хочу отметить, т к это то - что
      дрес р сположения всех APIs в т блице IAT, и соответствующие идентифик торы
     APIs (по которым протектор определяет тип вызыв емой API), скрипт з носит в
     т блицу, созд в емой в специ льно выделенной обл сти п мяти.       нные этой
     т блицы используются для восст новления вызовов эмулируемых APIs, используя
     при этом зн чения идентифик торов з криптов нных APIs в м ссиве д нных для
     т блицы IAT.

                                                              © <2009> < екрылов   лентин>
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect
распаковка Asprotect

Weitere ähnliche Inhalte

Was ist angesagt?

TraderStar Tutorial-PDF in Russisch
TraderStar Tutorial-PDF in RussischTraderStar Tutorial-PDF in Russisch
TraderStar Tutorial-PDF in Russisch
Neonway
 
Vnx.su lada 2170 tpудоемкость
Vnx.su lada 2170 tpудоемкостьVnx.su lada 2170 tpудоемкость
Vnx.su lada 2170 tpудоемкость
gsx1
 
Mondeo 05-2010-ava-avto.ru
Mondeo 05-2010-ava-avto.ruMondeo 05-2010-ava-avto.ru
Mondeo 05-2010-ava-avto.ru
rukford1
 

Was ist angesagt? (20)

Ford focus ii 2007 руководство по эксплуатации http://ava-avto.ru/
Ford focus ii 2007 руководство по эксплуатации http://ava-avto.ru/Ford focus ii 2007 руководство по эксплуатации http://ava-avto.ru/
Ford focus ii 2007 руководство по эксплуатации http://ava-avto.ru/
 
4.2.7 Модульное оборудование
4.2.7 Модульное оборудование4.2.7 Модульное оборудование
4.2.7 Модульное оборудование
 
Ford Fusion 2011 руководство по эксплуатации ava-avto.ru
Ford Fusion 2011 руководство по эксплуатации ava-avto.ruFord Fusion 2011 руководство по эксплуатации ava-avto.ru
Ford Fusion 2011 руководство по эксплуатации ava-avto.ru
 
Тон-генератор и детектор IntelliTone 100. Руководство пользователя на русском...
Тон-генератор и детектор IntelliTone 100. Руководство пользователя на русском...Тон-генератор и детектор IntelliTone 100. Руководство пользователя на русском...
Тон-генератор и детектор IntelliTone 100. Руководство пользователя на русском...
 
http://vnx.su/ ford fiesta 2015 руководство по эксплуатации
http://vnx.su/ ford fiesta 2015 руководство по эксплуатацииhttp://vnx.su/ ford fiesta 2015 руководство по эксплуатации
http://vnx.su/ ford fiesta 2015 руководство по эксплуатации
 
Ford transit 2014 руководство пользователя http://ava-avto.ru/
Ford transit 2014 руководство пользователя  http://ava-avto.ru/Ford transit 2014 руководство пользователя  http://ava-avto.ru/
Ford transit 2014 руководство пользователя http://ava-avto.ru/
 
Ford focus ii 12 2008 руководство по эксплуатации http://ava-avto.ru/
Ford focus ii 12 2008 руководство по эксплуатации http://ava-avto.ru/ Ford focus ii 12 2008 руководство по эксплуатации http://ava-avto.ru/
Ford focus ii 12 2008 руководство по эксплуатации http://ava-avto.ru/
 
Ford focus 2 руководство по эксплуатации http://ava-avto.ru/
Ford focus 2 руководство по эксплуатации http://ava-avto.ru/ Ford focus 2 руководство по эксплуатации http://ava-avto.ru/
Ford focus 2 руководство по эксплуатации http://ava-avto.ru/
 
TraderStar Tutorial-PDF in Russisch
TraderStar Tutorial-PDF in RussischTraderStar Tutorial-PDF in Russisch
TraderStar Tutorial-PDF in Russisch
 
Ford Transit custom 2013 руководство пользователя http://ava-avto.ru/
Ford Transit custom 2013 руководство пользователя  http://ava-avto.ru/Ford Transit custom 2013 руководство пользователя  http://ava-avto.ru/
Ford Transit custom 2013 руководство пользователя http://ava-avto.ru/
 
Ford Focus 2013 руководство по эксплуатации http://ava-avto.ru/
Ford Focus 2013 руководство по эксплуатации http://ava-avto.ru/Ford Focus 2013 руководство по эксплуатации http://ava-avto.ru/
Ford Focus 2013 руководство по эксплуатации http://ava-avto.ru/
 
Ford Mondeo 2010 руководство по эксплуатации http://ava-avto.ru/
Ford Mondeo 2010 руководство по эксплуатации http://ava-avto.ru/ Ford Mondeo 2010 руководство по эксплуатации http://ava-avto.ru/
Ford Mondeo 2010 руководство по эксплуатации http://ava-avto.ru/
 
Ford Kuga 2014 руководство по эксплуатации http://ava-avto.ru/
Ford Kuga 2014 руководство по эксплуатации http://ava-avto.ru/ Ford Kuga 2014 руководство по эксплуатации http://ava-avto.ru/
Ford Kuga 2014 руководство по эксплуатации http://ava-avto.ru/
 
4.2.9 Выключатели автоматические ВА88
4.2.9 Выключатели автоматические ВА884.2.9 Выключатели автоматические ВА88
4.2.9 Выключатели автоматические ВА88
 
Спецификации MoReq2 - Типовые требования к управлению электронными документами
Спецификации MoReq2 - Типовые требования к управлению электронными документамиСпецификации MoReq2 - Типовые требования к управлению электронными документами
Спецификации MoReq2 - Типовые требования к управлению электронными документами
 
Ford focus ii 2007 руководство по эксплуатации http://ava-avto.ru/
Ford focus ii 2007 руководство по эксплуатации http://ava-avto.ru/ Ford focus ii 2007 руководство по эксплуатации http://ava-avto.ru/
Ford focus ii 2007 руководство по эксплуатации http://ava-avto.ru/
 
Vnx.su lada 2170 tpудоемкость
Vnx.su lada 2170 tpудоемкостьVnx.su lada 2170 tpудоемкость
Vnx.su lada 2170 tpудоемкость
 
Ford Fusion 2009 руководство по эксплуатации ava-avto.ru
Ford Fusion 2009 руководство по эксплуатации ava-avto.ru Ford Fusion 2009 руководство по эксплуатации ava-avto.ru
Ford Fusion 2009 руководство по эксплуатации ava-avto.ru
 
Mondeo 05-2010-ava-avto.ru
Mondeo 05-2010-ava-avto.ruMondeo 05-2010-ava-avto.ru
Mondeo 05-2010-ava-avto.ru
 
Ford Tourneo connect 2012 руководство пользователя http://ava-avto.ru/
Ford Tourneo connect 2012 руководство пользователя  http://ava-avto.ru/Ford Tourneo connect 2012 руководство пользователя  http://ava-avto.ru/
Ford Tourneo connect 2012 руководство пользователя http://ava-avto.ru/
 

Ähnlich wie распаковка Asprotect

4.3.2 Преобразователь частоты Control H800 РЭ
4.3.2 Преобразователь частоты Control H800 РЭ4.3.2 Преобразователь частоты Control H800 РЭ
4.3.2 Преобразователь частоты Control H800 РЭ
Igor Golovin
 
7.8.5 Преобразователи частоты ATV630 и ATV650 РУ
7.8.5 Преобразователи частоты ATV630 и ATV650 РУ7.8.5 Преобразователи частоты ATV630 и ATV650 РУ
7.8.5 Преобразователи частоты ATV630 и ATV650 РУ
Igor Golovin
 
Tortoise svn 1.6.15-ru
Tortoise svn 1.6.15-ruTortoise svn 1.6.15-ru
Tortoise svn 1.6.15-ru
olga6985
 
Pc seag bara
Pc seag baraPc seag bara
Pc seag bara
er0080
 
озеров в. Delphi. советы программистов (2004)
озеров в. Delphi. советы программистов (2004)озеров в. Delphi. советы программистов (2004)
озеров в. Delphi. советы программистов (2004)
StAlKeRoV
 

Ähnlich wie распаковка Asprotect (20)

Ecosys m2030dn ...rev.01 (ru)
Ecosys m2030dn ...rev.01 (ru)Ecosys m2030dn ...rev.01 (ru)
Ecosys m2030dn ...rev.01 (ru)
 
ИБП GT Series 6000-10000 ВА (Руководство по эксплуатации) | www.ntt-energy.co...
ИБП GT Series 6000-10000 ВА (Руководство по эксплуатации) | www.ntt-energy.co...ИБП GT Series 6000-10000 ВА (Руководство по эксплуатации) | www.ntt-energy.co...
ИБП GT Series 6000-10000 ВА (Руководство по эксплуатации) | www.ntt-energy.co...
 
Acer iconia tab a100
Acer iconia tab a100Acer iconia tab a100
Acer iconia tab a100
 
Qit30 Rus Lowres
Qit30 Rus LowresQit30 Rus Lowres
Qit30 Rus Lowres
 
Руководство для UR5EQF
Руководство для UR5EQFРуководство для UR5EQF
Руководство для UR5EQF
 
4.3.2 Преобразователь частоты Control H800 РЭ
4.3.2 Преобразователь частоты Control H800 РЭ4.3.2 Преобразователь частоты Control H800 РЭ
4.3.2 Преобразователь частоты Control H800 РЭ
 
Qd700 1200 1600 Rus Lowres
Qd700 1200 1600 Rus LowresQd700 1200 1600 Rus Lowres
Qd700 1200 1600 Rus Lowres
 
7.8.5 Преобразователи частоты ATV630 и ATV650 РУ
7.8.5 Преобразователи частоты ATV630 и ATV650 РУ7.8.5 Преобразователи частоты ATV630 и ATV650 РУ
7.8.5 Преобразователи частоты ATV630 и ATV650 РУ
 
Guide russian
Guide russianGuide russian
Guide russian
 
4.3.1 Преобразователь частоты Control C600 РЭ
4.3.1 Преобразователь частоты Control C600 РЭ4.3.1 Преобразователь частоты Control C600 РЭ
4.3.1 Преобразователь частоты Control C600 РЭ
 
Tortoise svn 1.6.15-ru
Tortoise svn 1.6.15-ruTortoise svn 1.6.15-ru
Tortoise svn 1.6.15-ru
 
Sim explorer ru
Sim explorer ruSim explorer ru
Sim explorer ru
 
Дэвид Флэнаган — Javascript (5 издание)
Дэвид Флэнаган — Javascript (5 издание)Дэвид Флэнаган — Javascript (5 издание)
Дэвид Флэнаган — Javascript (5 издание)
 
Postgresql v509
Postgresql v509Postgresql v509
Postgresql v509
 
содержание книги
содержание книгисодержание книги
содержание книги
 
http://vnx.su/ renault symbol ii 01-2009 руководство по эксплуатации
http://vnx.su/ renault symbol ii 01-2009 руководство по эксплуатацииhttp://vnx.su/ renault symbol ii 01-2009 руководство по эксплуатации
http://vnx.su/ renault symbol ii 01-2009 руководство по эксплуатации
 
Pc seag bara
Pc seag baraPc seag bara
Pc seag bara
 
озеров в. Delphi. советы программистов (2004)
озеров в. Delphi. советы программистов (2004)озеров в. Delphi. советы программистов (2004)
озеров в. Delphi. советы программистов (2004)
 
Руководство QPF600 (полное)
Руководство QPF600 (полное) Руководство QPF600 (полное)
Руководство QPF600 (полное)
 
6132
61326132
6132
 

распаковка Asprotect

  • 1. сп ковк прогр мм, з щищенных Asprotect © <2009> < екрылов лентин> Note: To change the product logo for your own print manual or PDF, click "Tools > Manual Designer" and modify the print manual template.
  • 2. Title page 1 Use this page to introduce the product by vnekrilov This is "Title Page 1" - you may use this page to introduce your product, show title, author, copyright, company logos, etc. This page intentionally starts on an odd page, so that it is on the right half of an open book from the readers point of view. This is the reason why the previous page was blank (the previous page is the back side of the cover)
  • 3. сп ковк прогр мм, з щищенных Asprotect © <2009> < екрылов лентин> All rights reserved. No parts of this work may be reproduced in any form or by any means - graphic, electronic, or mechanical, including photocopying, recording, taping, or information storage and retrieval systems - without the written permission of the publisher. Products that are referred to in this document may be either trademarks and/or registered trademarks of the respective owners. The publisher and the author make no claim to these trademarks. While every precaution has been taken in the preparation of this document, the publisher and the author assume no responsibility for errors or omissions, or for damages resulting from the use of information contained in this document or from the use of programs and source code that may accompany it. In no event shall the publisher and the author be liable for any loss of profit or any other commercial damage caused or alleged to have been caused directly or indirectly by this document. Printed: ек брь 2009 in (whereever you are located) Special thanks to: Publisher All the people who contributed to this document, to mum and dad ...enter name... and grandpa, to my sisters and brothers and mothers in law, to our Managing Editor secretary Kathrin, to the graphic artist who created this great product logo on the cover page (sorry, don't remember your name at the ...enter name... moment but you did a great work), to the pizza service down the street (your daily Capricciosas saved our lives), to the copy shop Technical Editors where this document will be duplicated, and and and... ...enter name... ...enter name... Last not least, we want to thank EC Software who wrote this great help tool called HELP & MANUAL which printed this document. Cover Designer ...enter name... Team Coordinator ...enter name... Production ...enter name...
  • 4. 4 сп ковк прогр мм, з щищенных Asprotect Table of Contents Foreword 7 Part I ведение 9 Part II сп ковк прогр мм, з щищенных Asprotect 12 1 пределение версии протектор и компилятор ................................................................................................................................... 12 2 онфигур ция отл дчик и пл гинов ................................................................................................................................... 14 3 оиск OEP (SBOEP) ................................................................................................................................... 16 4 осст новление т блицы INIT ................................................................................................................................... 21 5 осст новление т блицы IAT ................................................................................................................................... 28 6 осст новление вызовов эмулируемых APIs ................................................................................................................................... 38 7 муляция APIs Asprotect ................................................................................................................................... 43 муляция APIs Asprotect в ASProtect с коротким ключом (версии 2.xx SKE) .......................................................................................................................................................... 43 муляция APIs Asprotect в ASProtect с длинным ключом (версии 1.xx) .......................................................................................................................................................... 47 муляция APIs Asprotect, вызыв емых из Asprotect.dll .......................................................................................................................................................... 53 муляция APIs Asprotect, вызыв емых из код прогр ммы .......................................................................................................................................................... 56 8 стр нение проверок целостности код (CRC) в р сп ................................................................................................................................... ков нной прогр мме 56 9 осст новление подпрогр мм с эмулиров нными инструкциями ................................................................................................................................... 58 олучение ф.......................................................................................................................................................... 61 йл Asprotect.dll из р сп ковыв емой прогр ммы олучение т .......................................................................................................................................................... 61 блицы соответствия первого б йт опкод эмулиров нных инструкций для р сп ковыв емой про олучение т .......................................................................................................................................................... 71 сп ковыв ем блицы соответствия з головк м ссив д нных для эмулиров нных инструкций в р олучение т .......................................................................................................................................................... 74 блицы р сположения д нных в м ссиве д нных для эмулиров нных инструкций олучение т .......................................................................................................................................................... 84 блицы р сположения д нных в м ссиве для эмулиров нных инструкций, выполняемых во второ олучение т .......................................................................................................................................................... 87 блицы идентифик торов эмулиров нных инструкций, выполняемых во второй VM орректировк код VM для восст новления эмулиров нных инструкций в коде прогр ммы .......................................................................................................................................................... 88 осст новление подпрогр мм с эмулиров нными инструкциями .......................................................................................................................................................... 89 10 осст новление секции импорт в р сп ковыв емой прогр мме ................................................................................................................................... 91 осст новление секции импорт с помощью скрипт “ осст новление секции импорт (.idata) в р сп ков нны .......................................................................................................................................................... 91 осст новление секции импорт с помощью утилиты Import REConstructor .......................................................................................................................................................... 98 11 орьб с переносом код в специ льные обл сти п мяти ................................................................................................................................... 101 оиск подпрогр ммы дрес ции прыжков в обл сти п мяти Asprotect и созд ние т блицы прыжков .......................................................................................................................................................... 102 оиск дресов м ссивов д нных с эмулиров нными инструкциями в обл стях п мяти Asprotect с укр денным .......................................................................................................................................................... 104 бъединение всех обл стей со Stolen Code в одну секцию ф йл .......................................................................................................................................................... 109 12 борк р сп ков нного ф йл ................................................................................................................................... 111 одготовк ф йл dumped.exe к прикручив нию секции с укр денным кодом .......................................................................................................................................................... 112 рикручив ние секции с укр денным кодом к ф йлу dumped.exe .......................................................................................................................................................... 115 осст новление секции ресурсов .rsrc .......................................................................................................................................................... 116 ере дрес ция прыжков из код прогр ммы н секцию с укр денным кодом .aspr .......................................................................................................................................................... 118 стр нение .......................................................................................................................................................... 119 проверок целостности код второго тип 13 чистк обл стей со Stolen Code от мусорного код ................................................................................................................................... 121 © <2009> < екрылов лентин>
  • 5. Contents 5 Part III р ктик р сп ковки прогр мм 125 1 сп ковк прогр ммы Sticky Password v4.0.0.148 ................................................................................................................................... 125 пределение протектор и язык прогр ммиров ния .......................................................................................................................................................... 125 пределение опций з щиты прогр ммы .......................................................................................................................................................... 126 осст новление т блицы IAT и вызовов эмулиров нных APIs .......................................................................................................................................................... 127 стр нение .......................................................................................................................................................... 128 проверок целостности код CRC) прогр ммы муляция APIs Asprotect, вызыв емых из код прогр ммы .......................................................................................................................................................... 128 осст новление секции импорт в р сп ков нной прогр мме .......................................................................................................................................................... 128 оиск обл стей со Stolen Code и восст новление в них эмулиров нных инструкций .......................................................................................................................................................... 131 одготовк .......................................................................................................................................................... 131 ф йл dumped.exe к восст новлению секции ресурсов осст новление секции ресурсов .rsrc .......................................................................................................................................................... 134 мпиров ние секции JCLDEBUG .......................................................................................................................................................... 135 пуск полученного д мп прогр ммы .......................................................................................................................................................... 136 2 сп ковк прогр ммы LanAgent v3.0.0.0 ................................................................................................................................... 137 пределение протектор и язык прогр ммиров ния .......................................................................................................................................................... 137 пределение опций з щиты прогр ммы .......................................................................................................................................................... 138 осст новление т блицы INIT .......................................................................................................................................................... 139 осст новление т блицы IAT и вызовов эмулиров нных APIs .......................................................................................................................................................... 140 стр нение .......................................................................................................................................................... 141 проверок целостности код CRC) прогр ммы муляция APIs Asprotect, вызыв емых из код прогр ммы .......................................................................................................................................................... 141 осст новление секции импорт в р сп ков нной прогр мме .......................................................................................................................................................... 141 оиск обл стей со Stolen Code и восст новление в них эмулиров нных инструкций .......................................................................................................................................................... 142 еренос обл сти SBOEP н место секции ф йл .rsrc .......................................................................................................................................................... 143 одготовк .......................................................................................................................................................... 143 ф йл dumped.exe к его сборке рикручив ние секции с укр денным кодом к ф йлу dumped.exe .......................................................................................................................................................... 146 осст новление секции ресурсов .rsrc .......................................................................................................................................................... 147 ере дрес ция прыжков из код прогр ммы н секцию с укр денным кодом .aspr .......................................................................................................................................................... 149 чистк мусорного код в секции ф йл с укр денным кодом .aspr .......................................................................................................................................................... 150 ыявление причины появления ошибки при з пуске р сп ков нной прогр ммы .......................................................................................................................................................... 150 3 сп ковк прогр ммы Asprotect v2.5 SKE build 04.08 Demo ................................................................................................................................... 152 пределение протектор и язык прогр ммиров ния .......................................................................................................................................................... 153 пределение опций з щиты прогр ммы .......................................................................................................................................................... 154 осст новление т блицы INIT .......................................................................................................................................................... 155 олучение ф йл Asprotect.dll .......................................................................................................................................................... 156 олучение т.......................................................................................................................................................... 157 блиц соответствия для корректировки VM орректировк код VM для восст новления подпрогр мм с эмулиров нными инструкциями 160 .......................................................................................................................................................... осст новление код подпрогр мм с эмулиров нными инструкциями .......................................................................................................................................................... 161 муляция APIs Asprotect, вызыв емых из код прогр ммы .......................................................................................................................................................... 162 стр нение .......................................................................................................................................................... 162 проверок целостности код прогр ммы осст новление секции импорт прогр ммы .......................................................................................................................................................... 162 оиск обл стей со Stolen Code и восст новление в них эмулиров нных инструкций .......................................................................................................................................................... 163 еренос обл сти SBOEP н место секции ф йл .rsrc .......................................................................................................................................................... 164 одготовк .......................................................................................................................................................... 165 ф йл dumped.exe к его сборке рикручив ние секции с укр денным кодом к ф йлу dumped.exe .......................................................................................................................................................... 167 осст новление секции ресурсов .rsrc .......................................................................................................................................................... 168 ере дрес ция прыжков из код прогр ммы н секцию с укр денным кодом .aspr .......................................................................................................................................................... 170 Part IV пилог 173 © <2009> < екрылов лентин> 5
  • 6. 6 сп ковк прогр мм, з щищенных Asprotect Index 0 © <2009> < екрылов лентин>
  • 7. Foreword 7 Foreword This is just another title page placed between table of contents and topics © <2009> < екрылов лентин>
  • 8. Top Level Intro This page is printed before a new top-level chapter starts Part I
  • 9. ведение 9 1 ведение рошло более полугод с того времени, когд я н форуме CRACKL@B выложил цикл ст тей по р сп ковке прогр мм, уп ков нных протектором ASProtect. этих ст тьях был опис н процесс р сп ковки прогр мм, уп ков нной этим протектором, т кже к ним был приложен комплект скриптов, который, собственно говоря, и выполнял процесс р сп ковки прогр ммы. это время р зр ботчики выложили новые версии протектор ASProtect – 1.51 build 09.22 и 2.51 SKE build 09.22 (сентябрь 2009 г.). роме того, з это время я получил много вопросов по р зным спект м р сп ковки прогр мм, уп ков нных Asprotect, з меч ния по р боте скриптов, д и с м р сп ков л нем ло прогр мм, уп ков нных этим протектором. оэтому я решил подготовить второй выпуск цикл ст тей. ожно было бы, конечно, сдел ть небольшие примеч ния к предыдущему циклу ст тей, чтобы сокр тить объем изл г емого м тери л , но немного подум в, я пришел к выводу о том, что повторение – это м ть учения, и лучше всего сдел ть полный цикл ст тей, хотя он, во многом, будет повторяться с предыдущим изложенным м тери лом. роме того, кто впервые столкнется с этим циклом ст тей, не будет лихор дочно иск ть, где можно дост ть первый цикл ст тей. еще одно. зр бот нные скрипты для р сп ковки прогр мм, з щищенных Asprotect, тестиров лись мной н нескольких десятк х прогр мм. уже счит л, что они будут р бот ть везде, без к ких-либо сбоев. , когд уже был готов к отпр вке эт ч сть ст тьи, мне поп л сь прогр мм , н которой не ср бот л скрипт для восст новления эмулиров нных инструкций в обл стях п мяти со Stolen Code. н ч л р збир ться с причиной этого сбоя и н шел тот случ й, о котором д же и не подозрев л. ело в том, чтобы скрипт случ йно не з тер нужный код кодом восст новленных инструкций, я предусмотрел в скрипте смещение от н ч л свободного мест н 20h б йтов. в этой прогр мме ок з лось, что имеется свободного мест в конце обл сти п мяти со Stolen Code только 0Ah б йтов. стественно, что скрипт, при приб влении 20h б йтов к н йденному дресу свободного мест , вычислил дрес з предел ми обл сти п мяти со Stolen Code (которой т м нет). , естественно, произошел сбой в р боте прививки. не пришлось вводить проверку н личия не менее 20h б йтов свободного мест в дв скрипт : для восст новления эмулиров нных инструкций в обл стях п мяти со Stolen Code, и для перенос обл стей п мяти со Stolen Code н место секций ф йл .rsrc или .adata. оэтому, если произошел сбой в р боте к кого-либо скрипт , нужно н йти причину этого сбоя, и сдел ть соответствующие корректировки, поскольку они, к к пр вило, небольшие. второе. р зр бот нные мной скрипты, в случ ях, когд не н ходится к к я-либо цепочк б йтов, я ввел ди гностические сообщения, которые позволят быстро н йти место сбоя в скрипте. лее м нужно определить, почему скрипт не н шел д нной цепочки б йтов, и, при необходимости, ввести в скрипт поиск нужной цепочки б йтов, чтобы получить дрес той или иной подпрогр ммы, котор я н м нужн для © <2009> < екрылов лентин>
  • 10. 10 сп ковк прогр мм, з щищенных Asprotect выполнения определенных процедур для р сп ковки прогр ммы. к известно, протектор выполняет многоуровневую з щиту прогр мм: - протектор может з щищ ть ригин льную точку вход прогр ммы (OEP) путем выполнения ч сти код в специ льной обл сти п мяти (Stolen Bytes OEP, или SBOEP); - может быть з щищен т блиц импорт (IAT) путем применения специ льных подпрогр мм, которые определяют, к кие APIs эмулиров ны протектором, и выполняют ч сть код этих APIs в специ льных обл стях п мяти прогр ммы; - в прогр мм х, н пис нных н Delphi, протектор шифрует т блицу иници лиз ции прогр ммы (INIT), которую выполняет, по мере необходимости; - шифрует ч сть код прогр ммы, и выполняет эти з шифров нные ч сти код в специ льных обл стях п мяти протектор ; - применяет эмуляцию код целых подпрогр мм, и эмулиров нные инструкции выполняет в специ льных подпрогр мм х. к пр вило, р зр ботчики прогр мм применяют эту опцию для з шифровки подпрогр мм, связ нных с регистр цией прогр ммы, что зн чительно з трудняет процесс определения корректного регистр ционного код . ороче говоря, протектор дел ет множество г достей, которые зн чительно усложняют жизнь cracker's. тери л этой ст тьи р збит н несколько ч стей, в которых будет поэт пно изложен процесс р сп ковки прогр мм, уп ков нных ASProtect. втор д нного тутори л - vnekrilov ( екрылов лентин) e-mail: vnekrilov@yandex.ru © <2009> < екрылов лентин>
  • 11. Top Level Intro This page is printed before a new top-level chapter starts Part II
  • 12. 12 сп ковк прогр мм, з щищенных Asprotect 2 сп ковк прогр мм, з щищенных Asprotect тот м тери л р зделен н две ч сти. первой ч сти пок з ны основные действия, которые нужно выполнить при р сп ковке прогр мм, з щищенных Asprotect. о второй ч сти р ссмотрены примеры р сп ковки конкретных прогр мм, з щищенных Asprotect. рогр мм для р сп ковки: ASProtect SKE v2.51 build 09.22 пис ние прогр ммы: кер/ ротектор исполняемых ф йлов нструменты: OllyDbg 1.10, PhantOm v1.54, PEiD v0.95, PE Tools v1.8.800.2006 RC7, Hex Workshop v5.00.2511, Plugin OdbgScript v1.78.1, Import REConstructor F, DiE v0.64 by v1.6 Hellsp@wn, Resource Binder v3.1 ложность: ля опытных crackers щит : ASProtect SKE v2.51 build 09.22 ель: сп ковк прогр мм, уп ков нных ASProtect 2.1 пределение версии протектор и компилятор еред р сп ковкой прогр ммы всегд нужно выяснять версию протектор и компилятор прогр ммы, поскольку по этим п р метр м можно определить н пр вление д льнейшей р боты. к, н пример, если прогр мм скомпилиров н компилятором Delphi, то в ней, к к пр вило, будет з криптов н т блиц иници лиз ции прогр ммы (INIT), которую н м нужно р скриптов ть н ее родное место в прогр мме. рогр ммы, скомпилиров нные н C/C++, не имеют т блицы иници лиз ции, поэтому р бот по восст новлению т блицы INIT не выполняется. ля выяснения, уп ков н ли прогр мм , или нет, можно использов ть н лиз торы ф йлов PEiD v0.95, DiE v0.64 или RDG Packer Detector v0.6.6. ообще имеется большое число всяки н лиз торов ф йлов, но, н мой взгляд, дост точно использов ть эти три н лиз тор ф йлов. н ч л про н лизируем прогр мму в PEiD v0.95. © <2009> < екрылов лентин>
  • 13. сп ковк прогр мм, з щищенных Asprotect 13 к видим, прогр мм уп ков н ASProtect 1.2x - 1.3x [Registered]. опробуем уточнить версию п кер , для чего применим прекр снейшую утилиту ASPrINF v1.6 Beta: т утилит считыв ет д нные о п кере из с мой прогр ммы, и пок зыв ет точную версию протектор . десь, к к мы видим, прогр мм уп ков н с м собой. нные о точной версии протектор н м пон добятся при восст новлении оригин льного код эмулиров нных подпрогр мм, поскольку к жд я версия протектор применяет свою индивиду льную схему з криптовки код подпрогр мм. о об этом мы поговорим в соответствующей ч сти д нного м тери л . оскольку н ми определен п кер, которым з щищен н лизируем я прогр мм , н м ост лось определить компилятор, которым скомпилиров н прогр мм . ля этих целей будем использов ть утилиту DiE v0.64: © <2009> < екрылов лентин>
  • 14. 14 сп ковк прогр мм, з щищенных Asprotect , н конец, про н лизируем прогр мму в RDG Packer Detector v0.6.6: к видим, н лиз ф йл в н лиз тор х DiE v0.64 или RDG Packer Detector v0.6.6 позволил н м определить компилятор, которым скомпилиров н исследуем я прогр мм – это Borland Delphi. оскольку прогр ммы, скомпилиров нные этим компилятором, имеют т блицу INIT, то, со зн чительной степенью вероятности, можно предположить, что п кер з криптов л эту т блицу, и н м придется ее восст н влив ть. 2.2 онфигур ция отл дчик и пл гинов еред з грузкой прогр ммы в отл дчик OllyDbg v1.10, нужно предв рительно выполнить его конфигур цию н вкл дке “ сключения”: © <2009> < екрылов лентин>
  • 15. сп ковк прогр мм, з щищенных Asprotect 15 , т кже сконфигуриров ть plugin PhantOm v1.54: © <2009> < екрылов лентин>
  • 16. 16 сп ковк прогр мм, з щищенных Asprotect 2.3 оиск OEP (SBOEP) т к, з груж ем прогр мму в отл дчик: то – тр диционн я точк вход прогр мм, уп ков нных Asprotect. нструкция PUSH 5C5001 отсыл ет н с в предпоследнюю секцию ф йл .data, котор я содержит в уп ков нном виде код прогр ммы, код Asprotect.dll, и все д нные (которые хр нятся в м ссив х), необходимые для р сп ковки прогр ммы в п мять компьютер . меется много ст тей р зных второв (в том числе и мои ст тьи), в которых подробно описыв ется процесс р сп ковки прогр ммы в п мять компьютер , поэтому я не буду здесь повторять все то, что было н пис но р ньше. десь я хочу только отметить, что с мой первой р сп ковыв ется Asprotect.dll, котор я упр вляет процессом д льнейшей р сп ковки прогр ммы в п мять компьютер , обеспечив я ее корректную р боту. еще одно! есмотря н большое число версий д нного протектор , Asprotect.dll пр ктически не меняется от версии к версии, что позволяет зн чительно облегчить процесс р сп ковки прогр мм, уп ков нных р зными версиями Asprotect. незн чительных отличиях р зных версий Asprotect.dll будет ук з но в соответствующих р здел х д нной ст тьи. ст новк прогр ммы н коде Asprotect.dll т к, к к ук з л выше, процессом р сп ковки прогр ммы упр вляет Asprotect.dll, поэтому н шей з д чей является, при з пуске прогр ммы в отл дчике, ост новить выполнение прогр ммы после р сп ковки Asprotect.dll в п мять компьютер . онечно, можно идти по цикл м р сп ковки, к к это опис но в ст тьях р зных второв (в том числе и моих ст тьях), одн ко можно и зн чительно упростить этот процесс, используя следующий прием. Asprotect.dll – это библиотек , котор я имеет все секции, присущие библиотек м .dll, т.е. секции код , импорт , экспорт , и т.д. (кроме PE-з головк , который обычно имеет вирту льный р змер в 1000h б йтов). есто з головк этой библиотеки Asprotect.dll в п мяти компьютер з полнено нолями (хотя некоторые р зр ботчики прогр мм используют эти 1000h б йтов код для з писи н ч льного код прогр ммы, и р змещ ют библиотеку Asprotect.dll в предпоследней секции ф йл ). к и люб я прогр мм , при своем з пуске, Asprotect. dll вызыв ет API GetSystemTime из kernel32.dll, и вызов этой API можно использов ть для ост новки прогр ммы в обл сти код Asprotect.dll: © <2009> < екрылов лентин>
  • 17. сп ковк прогр мм, з щищенных Asprotect 17 к видно из приведенного рисунк , после выполнения API GetSystemTime, мы поп д ем в обл сть код Asprotect.dll. очк вход Asprotect.dll имеет следующий вид: нее можно пройти, н ж в несколько р з кл виши Ctrl+F9, после ост новки прогр ммы н выполнении API GetSystemTime. огд прогр мм ост новил сь н коде Asprotect.dll после выполнения API GetSystemTime, то еще не выполнен р сп ковк код прогр ммы, т блиц IAT и INIT, и других ч стей код прогр ммы. оэтому, мы можем, проходя н соответствующие подпрогр ммы в Asprotect.dll, упр влять процессом р сп ковки код прогр ммы в п мять компьютер т ким обр зом, чтобы получить код прогр ммы, дост точный для выполнения р бочего д мп п мяти прогр ммы. рогр мм полностью р сп ков н в п мять компьютер , когд он ост новлен н OEP или SBOEP, поэтому н м н до сн ч л определиться, своров н ли п кером ч сть код из обл сти OEP, или нет. ля этого н м нужно пройти н OEP прогр ммы, и определить, что мы здесь имеем – OEP или SBOEP. рохождение н OEP – SBOEP прогр ммы к я уже пис л выше, Asprotect.dll не сильно отлич ется в р зных версиях протектор , поэтому имеются некоторые волшебные точки, один ковые для всех версий Asprotect.dll, и которые можно использов ть для поиск OEP или SBOEP прогр ммы. дной из т ких волшебных точек является следующий код: © <2009> < екрылов лентин>
  • 18. 18 сп ковк прогр мм, з щищенных Asprotect дрес 00CB1CB8 – это очень интересный дрес. нем з пис н дрес SBOEP прогр ммы (если п кер своров л ч сть код из OEP прогр ммы), и в этом дресе з пис ны 00000000, если р зр ботчик прогр ммы не з щитил OEP своей прогр ммы. тот уч сток код Asprotect.dll можно легко н йти, выполнив поиск инструкции MOV BYTE PTR DS:[EAX],0E1: ледует отметить, что в некоторых версиях Asprotect.dll (н пример, версии 1.32), применяется инструкция - MOV DWORD PTR DS:[EAX],0E1. зличие этих двух инструкций з ключ ется только в р змер х опер ндов – BYTE или DWORD. з тем, н чин я от предыдущей н йденной инструкции, н м н до н йти следующие две инструкции: 00C9FFA3 A1 B81CCB00 MOV EAX,DWORD PTR DS:[CB1CB8] 00C9FFA8 894424 04 MOV DWORD PTR DS:[ESP+4],EAX © <2009> < екрылов лентин>
  • 19. сп ковк прогр мм, з щищенных Asprotect 19 оскольку дрес конст нт и регистров в р зных прогр мм х будут р зными, то поиск этого мест выполняем по м ске “A1????????894?”. бр тите вним ние н то, что при поиске этих двух инструкций, необходимо снять фл жок с опции “ есь блок”. личие этой волшебной точки позволяет н пис ть скрипт, который с м н ходит OEP (SBOEP) н любой прогр мме, уп ков нной Asprotect. ктически скрипт должен сдел ть следующее: 1. ройти н дрес API GetSystemTime н н шей м шине. 2. йти инструкцию MOV BYTE PTR DS:[EAX],0E1 (или MOV DWORD PTR DS:[EAX],0E1). 3. йти инструкцию MOV EAX,DWORD PTR DS:[CB1CB8]. 4. пустить прогр мму до этой инструкции, и прочит ть зн чение SBOEP. зр бот нный мной скрипт “ оиск OEP (SBOEP).osc” построен н этой логике р боты. дн ко он сн бжен рядом дополнительных функций, которые позволяют т кже определить основные опции з щиты, которые использов л прогр ммист для з щиты р зр бот нной им прогр ммы. то позволяет, н с мом первом предв рительном н лизе з щищенной прогр ммы, определить, с чем н м придется р бот ть. здесь я не могу не ск з ть о том, что р зр ботчики протектор весьм ревниво относятся к з щите код Asprotect.dll, встр ив я в него несколько проверок его целостности (CRC). к, н пример, если мы уст новим обычную BreakPoint н дрес инструкции MOV BYTE PTR DS:[EAX],0E1, и попыт емся з пустить прогр мму, то получим следующее сообщение: © <2009> < екрылов лентин>
  • 20. 20 сп ковк прогр мм, з щищенных Asprotect т ких проверок в коде Asprotect.dll, имеется дост точно много. оэтому одни проверки приходится обходить, используя Hardware BreakPoint вместо обычных BreakPoint, другие проверки приходится обходить путем принудительного перенос регистр EIP н необходимый дрес прогр ммы. третьи проверки приходится обходить путем принудительной перез писи имеющегося контрольного зн чения н нужное контрольное зн чение. се это можно посмотреть в коммент риях к скрипту “ оиск OEP (SBOEP).osc”, который приложен к д нной ст тье. о предложению r-e я вырез л ч сть коммент риев, которые з громожд ют скрипт, и ост вил только основные коммент рии, которых вполне дост точно для того, чтобы понять логику р боты скрипт , и позволяют, в случ е необходимости, быстро н йти причины сбоев его р боты. росм трив ть этот скрипт лучше всего в ред кторе скриптов Olly Debugger Script Editor v1.2 от Guru.exe, или используя ред ктор скриптов OllySubScript v1.4.1 by Sub Xero (мне больше понр вился этот ред ктор скриптов). пустив этот скрипт, мы довольно быстро ок зыв емся здесь: к видим, в этой прогр мме мы ост новились н SBOEP. это озн ч ет, что вполне возможно, прогр ммист з щитил свою прогр мму, используя криптов ние т блицы INIT, пере дрес цию импорт , и, вполне вероятно, весь н бор г достей, которые предост вляет этот протектор. © <2009> < екрылов лентин>
  • 21. сп ковк прогр мм, з щищенных Asprotect 21 этом рисунке приведен результ т р боты скрипт при прохождении н OEP прогр ммы, у которой не з щищен оригин льн я точк вход . сли мы посмотрим н “волшебную” обл сть код , то увидим следующее: к видим, по интересующему н с дресу з пис ны ноли, что ук зыв ет н нез щищенность протектором OEP прогр ммы. риложение: крипт для проход н OEP (SBOEP) прогр ммы - “ оиск OEP (SBOEP).osc” PS. хотел бы побл год рить r-e з его ценные з меч ния по изменению текст скриптов, которые помогли сдел ть их более н глядными, и удобными в р боте. 2.4 осст новление т блицы INIT сли прогр мм н пис н н Borland Delphi, то он имеет т к н зыв емую т блицу иници лиз ции (т блиц INIT), котор я содержит дрес подпрогр мм, выполняемых при з пуске прогр ммы. ротектор Asprotect полностью шифрует т блицу INIT, и выполняет ее в специ льно выделенной обл сти п мяти, обл сть в коде прогр ммы, где р ньше н ходил сь эт т блиц , протектор з полняет мусорным кодом. в йте немного подробнее р ссмотрим т блицу INIT. сли мы посмотрим н Entry Point (EP) неуп ков нной прогр ммы, н пис нной н Borland Delphi, то увидим следующее: © <2009> < екрылов лентин>
  • 22. 22 сп ковк прогр мм, з щищенных Asprotect рисунке стрелкой пок з н дрес р сположения т блицы INIT в прогр мме. нижнем рисунке приведен фр гмент т блицы INIT: р сным цветом выделено число подпрогр мм, содерж щихся в этой т блице INIT ( 112h), елтым цветом выделен ук з тель н дрес первой подпрогр ммы т блицы INIT, рко-зеленым цветом выделены дрес подпрогр мм иници лиз ции, и ирюзовым цветом выделены дрес подпрогр мм деиници лиз ции. теперь д в йте посмотрим н т блицу INIT уп ков нной прогр ммы. м мы видим следующее: десь мы видим, что вместо числ подпрогр мм, содерж щихся в этой т блице INIT, з пис но зн чение 01h (выделено р сным цветом), елтым цветом выделен ук з тель н дрес подпрогр мм CALL, в которых выполняются з криптов нные подпрогр ммы иници лиз ции (выделен рко-зеленым цветом), и деиници лиз ции (выделен ирюзовым цветом). ст льн я же ч сть т блицы INIT з полнен мусорным кодом. чевидно, что т блицу INIT лучше всего восст н влив ть до восст новления © <2009> < екрылов лентин>
  • 23. сп ковк прогр мм, з щищенных Asprotect 23 т блицы IAT и пере дресов нных вызовов APIs, поскольку после восст новления т блицы IAT и пере дресов нных вызовов APIs, прогр мм полностью р сп ков н в п мять м шины, ее можно уже д мпиров ть. же с первой ч сти д нного цикл ст тей можно предположить, что и здесь можно н йти волшебный код, который позволит н м восст новить т блицу INIT, з криптов нную протектором Asprotect. о всех версиях Asprotect.dll имеется одно очень интересное место, которое н ходится чуть выше код ошибки “60”: рисунке р сным цветом выделен т волшебн я точк , котор я определяет, з криптов н ли т блиц INIT, или нет. сли т блиц INIT з криптов н протектором, то условный прыжок “JE XXXXXXXX” не выполняется (зн чение фл жк Z р вно 0), и это озн ч ет, что н м н до будет восст н влив ть т блицу INIT. выполнив инструкцию CALL 00BDABD0, р сположенную н дресе 00BDD8F4, можно получить все д нные, которые необходимы для восст новления т блицы INIT. сли же т блиц INIT не з криптов н , или он отсутствует (для прогр мм, н пис нных н других язык х прогр ммиров ния), зн чение фл жк Z р вно 1, выполняется условный прыжок JE SHORT 00BDD907, и пропуск ется выполнение инструкции CALL 00BDABD0. стественно, что для поиск этой волшебной точки нужно использов ть строку ASCII “60”, котор я, к к я отметил выше, имеется во всех версиях Asprotect.dll. се д нные, которые необходимы для получения дрес подпрогр ммы, котор я н ходится в т блице INIT, протектор хр нит в м ссиве д нных, выполненном в виде двух т блиц – блицы и блицы . © <2009> < екрылов лентин>
  • 24. 24 сп ковк прогр мм, з щищенных Asprotect блиц имеет следующий вид: ротектор под эту т блицу выделяет отдельную обл сть п мяти, в н шей случ е – 02020000. блиц выглядит т к: ротектор под эту т блицу т кже выделяет отдельную обл сть п мяти, в н шей случ е – 02030000. к видно, м ссивы д нных, н ходящиеся в т блиц и , н м ничего не говорят, но именно они д ют ук з ние протектору, сколько нужно подсчит ть б йтов в специ льно выделенной обл сти п мяти, чтобы получить дрес подпрогр ммы, н ходящейся в т блице INIT. т обл сть п мяти н ходится здесь, и имеет вид мусорного код : бр тите вним ние н то, что все эти обл сти п мяти идут подряд: 02020000, 02030000 и 02040000. именно в этой обл сти п мяти н ходится инструкция CALL REG, котор я и выполняет р скриптов нную подпрогр мму: © <2009> < екрылов лентин>
  • 25. сп ковк прогр мм, з щищенных Asprotect 25 к честве REG может быть любой регистр: EAX, ECX, и т.д. чевидно, что в этой обл сти п мяти нельзя уст н влив ть прогр ммные BreakPoint и изменять код, поскольку это приведет к неверным результ т м при подсчете б йтов в этой обл сти п мяти, и, соответственно, к сбою прогр ммы. динственно, что здесь можно дел ть – это уст н влив ть Hardware BreakPoint. менно н этом принципе и был построен скрипт для восст новления т блицы INIT, опис нный в первом выпуске д нного цикл ст тей. дн ко этот скрипт р бот ет медленно, и требуется несколько минут, чтобы восст новить т блицу INIT. VolX в своих скрипт х предложил более лучший в ри нт – это предв рительно, с помощью специ льной прививки, вычислить хэш к ждой подпрогр ммы т блицы INIT, используя д нные, н ходящиеся в т блиц х и . ри вычислении хэшей, естественно, используется обл сть п мяти, где з пис н CALL REG. ычисленные хэши з писыв ются в специ льно выделенную обл сть п мяти, и з тем, с помощью конст нты, имеющейся в обл сти п мяти CALL REG, р скриптовыв ются дрес подпрогр мм, которые были з пис ны в оригин льной т блице INIT. еперь здесь можно изменять код, дописыв ть свой код, и дел ть с ним любые действия, к кие мы пожел ем. ти изменения уже не будут влиять н результ ты н шей р боты. сли мы возьмем, н пример, с мые первые д нные из т блиц и , и вычтем из зн чения т блицы B зн чение т блицы A, то получим следующий результ т: 7383E5FF - 7383E2EE = 00000311 если к этому результ ту мы приб вим ImageBase обл сти п мяти, где н ходится CALL REG, то получим следующий результ т: 00000311 + 02040000 = 02040311 десь мы получили нижний порог обл сти п мяти, н котором мы должны з кончить процесс вычисления хэш для первого зн чения т блицы . лее обнуляется регистр EAX, и из него вычисляются первые 4 б йт , н ходящиеся в н ч ле обл сти п мяти, где н ходится CALL REG: 00000000 - 02EBF352 = FD140CAE © <2009> < екрылов лентин>
  • 26. 26 сп ковк прогр мм, з щищенных Asprotect тем из этой обл сти п мяти мы берем очередные 4 б йт , н которые ук зыв ет зн чение смещения выборки, и вычит ем их из полученного зн чения регистр EAX: FD140CAE - CD02EBF3 = 301120BB тот цикл вычислений продолж ется до тех пор, пок не будет достигнут нижний порог обл сти п мяти для этой подпрогр ммы т блицы INIT – 02040311. огд достигнут этот порог, то к вычисленному зн чению регистр EAX приб вляется зн чение из т блицы , и мы получ ем хэш первой подпрогр ммы из т блицы INIT: 8CFE4BBA + 7383E2EE = 00822EA8 ычисленные хэши подпрогр мм т блицы INIT, после выполнения код прививки, выглядит т к: к видно из приведенного рисунк , вычисленные хэши ст ли более похожи н дрес подпрогр мм, одн ко они еще не являются ими. ля р скриптовки зн чения хэш используются три конст нты - C1FF0493, C281A541 и 4E. м процесс р скриптовки выглядит следующим обр зом: 00822EA8 + C1FF0493 = C281333B C281333B - C281A541 = FFFF8DFA 1 - FFFF8DFA = 00007206 00007206 + 4E = 00007254 теперь, если мы приб вим к вычисленному зн чению ImageBase прогр ммы 00400000, то получим требуемый дрес подпрогр ммы из т блицы INIT: 00007254 + 00400000 = 00407254 ля р скриптовки хэшей подпрогр мм из т блицы INIT, применяется специ льн я прививк , котор я, для своей р боты, использует код в обл сти п мяти 02040000. осле выполнения этой прививки мы получ ем следующее: © <2009> < екрылов лентин>
  • 27. сп ковк прогр мм, з щищенных Asprotect 27 к видно из рисунк , н ми получен полностью восст новленн я т блиц INIT, котор я з пис н в специ льно выделенной обл сти п мяти, и теперь н м н до перенести н ее родное место в ф йле, что легко дел ется с помощью небольшой прививки. этой ч сти ст тьи мной приложен скрипт “ осст новление т блицы INIT.osc”. сож лению, этот скрипт получился дост точно большим по р змеру, поскольку зн чительный объем з ним ет вычисление инструкций, н ходящихся после CALL REG, и которые мы должны перенести в обл сть код прививки. ело з ключ ется в том, что мы должны н месте инструкции CALL REG з пис ть безусловный прыжок в прививку, который имеет р змер 5h б йтов. нструкция CALL REG имеет р змер 2h б йт , и н м н до з нять еще три б йт у инструкций, р сположенных ниже инструкции CALL REG. о поскольку ниже этой инструкции р сположен мусорный код, который все время меняется, при к ждой перез грузке прогр ммы, то приходится в скрипте учитыв ть все эти изменения. дн ко полученный скрипт р бот ет очень быстро, и полностью восст н влив ет т блицу INIT во всех версиях Asprotect.dll. осст новленн я т блиц INIT может быть вст влен н свое родное место, после восст новления т блицы импорт (IAT) и пере дресов нных вызовов APIs, перед д мпиров нием п мяти прогр ммы. дн ко восст новленную т блицу INIT можно вст вить н ее родное место, и в полученный д мп п мяти прогр ммы, что з висит только от жел ния cracker's. оэтому, чтобы выполнить эту р боту, н м необходимо з пис ть, для п мяти, все д нные о т блице INIT. ти д нные скрипт з писыв ет в журн л регистр ции отл дчик , при з вершении своей р боты, в следующем виде: мп т блицы INIT скрипт сохр няет с именем “table_INIT.bin”, который н ходится в той же п пке, где н ходится и уп ков нн я прогр мм . сли мы посмотрим н т блицу INIT после р боты скрипт , то увидим следующее: © <2009> < екрылов лентин>
  • 28. 28 сп ковк прогр мм, з щищенных Asprotect рисунке мы видим полностью восст новленную т блицу INIT, в р сп ковыв емом ф йле. риложение: крипт для восст новления т блицы INIT прогр ммы - “ осст новление т блицы INIT.osc”. 2.5 осст новление т блицы IAT этой ч сти мы р ссмотрим восст новление т блицы IAT и инструкций вызовов эмулируемых APIs. о, предв рительно, р ссмотрим немного теории. се функции из р зных DLL, которые нужны для р боты прогр ммы, компиляторы собир ют в одном месте, и это место н зыв ется блицей мпортируемых дресов, или просто блицей IAT. сли мы посмотрим н н т блицу IAT к кого-либо не уп ков нного ф йл , то т м увидим следующее (для пример я взял прогр мму DeDe, котор я н пис н н Borland Delphi): если мы изменим форм т отобр жения, то это место будет выглядеть т к: десь мы видим функции из двух библиотек – ntdll.dll и kernel32.dll, дрес которых привяз ны к конкретной (моей) м шине. .е., в к ждой ячейке этой т блицы IAT з пис н дрес используемых прогр ммой APIs, н н шей м шине. © <2009> < екрылов лентин>
  • 29. сп ковк прогр мм, з щищенных Asprotect 29 если мы немного прокрутим код вверх, в с мое н ч ло этой обл сти п мяти, то увидим т к н зыв емую Import Table ( блицу мпорт ): этом рисунке я р зными цвет ми выделил д нные для р зных библиотек, используемых прогр ммой DeDe. екоторые пользов тели пут ют эти дв понятия - блиц IAT и блиц мпорт . сылк н блицу мпорт имеется в PE- з головке ф йл , вот н т блицу IAT ссылок в PE-з головке ф йл - нет, но н нее к к р з имеются ссылки в блице мпорт . ст ти, н к ждую библиотеку в блице мпорт отводится место в 14h б йтов. еперь д в йте р ссмотрим, что озн ч ют дв зн чения, которые н ходятся в блице мпорт для к ждой библиотеки. озьмем, к примеру, первую библиотеку, котор я выделен рко-зеленым цветом: этом рисунке р сным цветом выделен дрес, который ук зыв ет н то место, где з пис но имя библиотеки, ишневым цветом выделен первый дрес в т блице IAT , в котором з пис ны дрес APIs из этой библиотеки н н шей м шине. ( десь з пис ны зн чения VirtualOffset этих дресов, чтобы получить зн чения VirtualAddress, к зн чениям VirtualOffset н до приб вить зн чение ImageBase прогр ммы). в йте перейдем н дрес 005B1A28 (VirtualOffset = 001B1A28): этом рисунке озовым цветом выделен последний дрес API в т блице IAT, елтым цветом – р зделительные ноли в конце т блицы IAT, ирюзовым цветом – имя DLL (kernel32.dll), олотистым цветом – имен APIs, которые входят в эту библиотеку, и иреневым цветом – дрес из блицы мпорт . теперь д в йте перейдем н дрес 005B11B8 (VirtualOffset = 001B11B8): © <2009> < екрылов лентин>
  • 30. 30 сп ковк прогр мм, з щищенных Asprotect этом рисунке ирюзовым цветом выделены последние 14h б йтов блицы мпорт , которые з полнены нолями. поскольку прогр мм скомпилиров н н Borland Delphi, то после блицы мпорт идет блиц IAT. рко-зеленым цветом выделен обл сть т блицы IAT, котор я содержит дрес APIs из библиотеки kernel32.dll, и иреневым цветом – дрес из блицы мпорт . если мы посмотрим н это место в исполняемом ф йле, то увидим следующее: нем вместо дресов APIs н н шей м шине мы видим VirtualOffset н их имен . немного ниже мы видим: е обр щ йте вним ния н то, что мы видим другие дрес . ело в том, что эти дрес н ходятся в с мом исполняемом ф йле, который не з гружен в п мять компьютер . ри з грузке же ф йл в п мять компьютер , все секции ф йл р спол г ются по вирту льным дрес м, ук з нным в PE-з головке ф йл , и тогд мы увидим эти дрес н их родном месте. ким обр зом, в прогр мм х, н пис нных н Borland Delphi, импорт APIs орг низов н следующим обр зом: - сн ч л идет т блиц мпорт ; - з тем идет т блиц IAT; - и после нее р сположен обл сть с имен ми DLLs и APIs. оэтому компилятор Borland Delphi выделяет для импорт APIs отдельную секцию ф йл , которую он н зыв ет .idata. емного ин че орг низов н импорт в прогр мм х, н пис нных, н пример, н Microsoft Visual C++ | C/C++. к, н пример, в ф йле Mtk_Res1.4.exe, т блиц IAT р сположен в н ч ле секции .rdata: © <2009> < екрылов лентин>
  • 31. сп ковк прогр мм, з щищенных Asprotect 31 блиц мпорт р сположен в этой же секции ф йл , но н много ниже т блицы IAT: этом рисунке рко-зеленым и ирюзовым цвет ми выделены блок д нных в т блице мпорт о первых двух DLLs, используемых этой прогр ммой. онец т блицы мпорт выделен иреневым цветом. тем идет блок ук з телей н Original First Thunk, уже после блок этих ук з телей, идет обл сть с имен ми DLLs и APIs: десь, к к мы видим, т блиц мпорт немного отлич ется от т блицы мпорт прогр мм, н пис нных н Borland Delphi. т т блиц вн ч ле содержит ук з тель Original First Thunk, который в свою очередь ук зыв ет н п р метр Hint, н ходящийся перед именем API: © <2009> < екрылов лентин>
  • 32. 32 сп ковк прогр мм, з щищенных Asprotect этом рисунке р сным цветом выделен п р метр Hint, ирюзовым цветом – имя API. ким обр зом, в прогр мм х, н пис нных н Microsoft Visual C++ | C/C++, импорт APIs орг низов н следующим обр зом: - сн ч л идет т блиц IAT; - з тем идет код прогр ммы; - д лее идет т блиц мпорт ; - з ней идет блок ук з телей н Hint; - и после этого блок ук з телей р сположен обл сть с имен ми DLLs и APIs. уделил этому столько вним ния потому, что это н м пон добится при восст новлении секции импорт в р сп ковыв емой прогр мме. об этом мы поговорим в соответствующей ч сти д нного цикл ст тей. прогр мм х, скомпилиров нных другими компилятор ми, т блиц IAT и т блиц мпорт могут н ходиться в р зных секциях ф йл , но принципы их построения обусловлены требов ниями к форм ту PE-ф йлов, и поэтому они один ковы. ротектор Asprotect, к к пр вило, не трог ет т блицу мпорт , но полностью з полняет мусорным кодом обл сть имен DLL и APIs, и в зн чительной мере поврежд ет т блицу IAT. ри этом, протектор з криптовыв ет имен всех APIs, используя р зные конст нты для их з криптовки, и сохр няет эти имен в специ льных м ссив х д нных. еперь перейдем к н шей теме – восст новление т блицы IAT в прогр мм х, з щищенных Asprotect. ля выполнения этой р боты, н м н до выяснить, к ким обр зом ASProtect з полняет т блицу IAT дрес ми APIs. сли мы пройдем н OEP (SBOEP) прогр ммы, уп ков нной ASProtect, и посмотрим н т блицу импорт (IAT), то увидим т м следующее: этом рисунке мы видим поврежденную протектором т блицу IAT. © <2009> < екрылов лентин>
  • 33. сп ковк прогр мм, з щищенных Asprotect 33 зделительные ноли перед н ч лом т блицы IAT выделены озовым цветом; ирюзовым цветом выделены APIs, которые прин длеж т первой DLL (kernel32.dll), елтым цветом выделены APIs, которые прин длеж т второй DLL (user32.dll). зделительные ноли между этими DLL выделены еленым цветом, иреневым цветом выделены эмулируемые APIs, ре льные дрес которых з полнены мусорным кодом. дрес н ч л т блицы IAT выделен олотистым цветом. в йте кр тко р ссмотрим процесс з полнения т блицы IAT. к известно, при з пуске прогр ммы, протектор Asprotect р сп ковыв ет код прогр ммы и т блицу импорт (IAT) с помощью Asprotect.dll. се д нные о т блице IAT прогр ммы хр нятся в з криптов нном виде в специ льном м ссиве д нных. ри з пуске прогр ммы, протектор извлек ет эти д нные из м ссив , и з писыв ет их по соответствующим дрес м т блицы IAT. ри этом ч сть т блицы IAT з полняется ф ктическими дрес ми APIs (применительно к конкретной м шине), ч сть т блицы IAT з полняется мусорным кодом, что и было пок з но н предыдущем рисунке. в йте теперь посмотрим н м ссив д нных, который содержит информ цию, необходимую для з полнения т блицы IAT. тот м ссив содержит з криптов нные имен всех APIs, которые используются в д нной прогр мме, причем APIs в этой т блице сгруппиров ны по соответствующим DLLs, в которых н ходятся эти APIs. р гмент т кого м ссив д нных приведен н следующем рисунке: этом рисунке ирюзовым цветом выделен р змер всего м ссив д нных о т блице IAT, ерым цветом выделены ук з тели н типы з криптовки имен APIs, применяемые в этом м ссиве д нных. рко-зеленым цветом выделен дрес т блицы IAT, по которому должн н ходиться перв я API (этот дрес ч сто является н ч лом т блицы IAT, но не всегд ). иреневым цветом выделен р змер д нных для первой DLL, з тем идут дв б йт , которые идентифицируют конкретную DLL в м ссиве д нных, и они выделены озовым цветом. этими двумя б йт ми идет не з криптов нное имя DLL, которое выделено олотистым цветом. , н конец, оричнево-зеленым цветом выделено з криптов нное имя первой API. еперь д в йте посмотрим н з криптов нное имя API: © <2009> < екрылов лентин>
  • 34. 34 сп ковк прогр мм, з щищенных Asprotect этом рисунке оричнево-зеленым цветом выделен тип з криптовки имени API, р сным цветом выделен уник льный идентифик тор з криптов нной API, рко- зеленым цветом выделен р змер з криптов нного имени API, и ирюзовым цветом выделено с мо з криптов нное имя API. ип з криптовки имени API имеет большое зн чение для процесс з полнения протектором т блицы IAT. з висимости от его зн чения, протектор или з писыв ет в т блицу IAT ф ктический дрес API, или же з полняет этот дрес мусорным кодом. еперь н м н до определить ту волшебную точку, котор я позволит н м з полнить т блицу IAT ф ктическими дрес ми APIs н н шей м шине. оскольку подпрогр мм з полнения т блицы IAT дрес ми APIs пр ктически не меняется в р зных версиях Asprotect.dll, то т кой волшебной точкой является следующий дрес: тот дрес легко н ходится по б йт м опкод инструкций "INC EAX", "MOV DWORD PTR DS:[EBX],EAX" и "ADD EDI,4", р сположенных в подпрогр мме з полнения т блицы IAT дрес ми APIs. одпрогр мм з полнения т блицы IAT дрес ми APIs является один ковой для всех версий Asprotect.dll, з исключением версии 1.32, поскольку в версии 1.32 используется друг я строк конст нты для р скриптовки з криптов нных имен APIs. то отличие используется для ук з ния необходимого код прививки, применяемой для р скриптовки з криптов нных имен эмулируемых APIs, что видно н приведенном фр гменте скрипт для восст новления т блицы IAT: ледует отметить, что р зр ботчики этого протектор много вним ния уделяют выявлению н рушений целостности код прогр ммы, и встроили в Asprotect.dll много ловушек, которые не позволяют восст новить т блицу IAT. десь я хочу © <2009> < екрылов лентин>
  • 35. сп ковк прогр мм, з щищенных Asprotect 35 пок з ть эти ловушки: 1-я ловушк (в некоторых версиях, протектор дв жды использует этот вид ловушки): этом рисунке ср внив ется зн чение регистр EAX с з д нным контрольным зн чением, после чего выполняется или не выполняется условный прыжок. м н до, чтобы этот прыжок выполнялся всегд , поэтому скрипт меняет условный прыжок JE SHORT 00F064B0 н безусловный прыжок JMP SHORT 00F064B0, после восст новления т блицы IAT, он все возвр щ ет н з д условный прыжок JE SHORT 00F064B0. 2-я ловушк : ри восст новленной т блице IAT (при этом д же не з тронуты вызовы эмулиров нных APIs), в регистре ESI появляется зн чение, отличное от ноля, условный прыжок JE SHORT 00F1008B не выполняется, и мы получ ем тр диционное сообщение о повреждении прогр ммы. десь решение з ключ ется в принудительном обнулении регистр ESI, что и дел ет скрипт. стр нение этих двух проверок позволяет норм льно з пуститься прогр мме с восст новленной т блицей IAT и восст новленными вызов ми эмулиров нных APIs. еще один момент. ля р боты протектор нужны APIs RaiseException и GetProcAddress. ти APIs протектор т кже эмулирует, но очень хитро, и, н пример, эмулиров нн я API RaiseException выглядит т к: © <2009> < екрылов лентин>
  • 36. 36 сп ковк прогр мм, з щищенных Asprotect йти дрес р сположения эмулиров нных APIs RaiseException и GetProcAddress можно легко, выполнив поиск по м ске следующей цепочки б йтов – “Eb01?? B8????????”: если мы пройдем по мусорному прыжку JMP SHORT 00F06471, то увидим: десь рко-зеленым цветом выделен дрес р сположения эмулиров нной API RaiseException. сли имеется одн цепочк вышеук з нных б йтов, то протектор эмулирует только API RaiseException, если имеется две т ких цепочки б йтов, то протектор эмулирует обе APIs - RaiseException и GetProcAddress. ричем сн ч л ук з н дрес API RaiseException, з тем дрес API GetProcAddress. не буду здесь описыв ть р боту скрипт по восст новлению т блицы IAT, поскольку он сн бжен подробными коммент риями, и не нужд ется в к ких-либо дополнительных пояснениях. динственное, что я хочу отметить, т к это то - что дрес р сположения всех APIs в т блице IAT, и соответствующие идентифик торы APIs (по которым протектор определяет тип вызыв емой API), скрипт з носит в т блицу, созд в емой в специ льно выделенной обл сти п мяти. нные этой т блицы используются для восст новления вызовов эмулируемых APIs, используя при этом зн чения идентифик торов з криптов нных APIs в м ссиве д нных для т блицы IAT. © <2009> < екрылов лентин>