Объявление

Свернуть
Пока нет объявлений.

[ Demode ] Исследование защиты утилиты Puffer v4.01

Свернуть
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

    [ Demode ] Исследование защиты утилиты Puffer v4.01

    Обсуждение статьи Исследование защиты утилиты Puffer v4.01

    #2
    ) Хм. Случайно наткнулся на статью и оставлю пару-тройку замечаний.

    Текущая версия утилиты 4.05, но принцип действия остался тот же, что и в статье.


    Распаковываемая в %TEMP%-каталог PF00xxxxx.DLL нужна только для двух вещей:
    - для определения количества оставшихся запусков (1..25)
    - как "трамплин" для вызова функции WriteFile() при сохранении файлов.

    То есть эта DLL не нужна вовсе, а из неё нужно вынуть только вот такой код:

    Код:
      00000000: 55               push         ebp                     
      00000001: 8BEC             mov          ebp,esp                 
      00000003: 8B550C           mov          edx,[ebp][00C]          
      00000006: 8B4D10           mov          ecx,[ebp][010]          
      00000009: 8B4508           mov          eax,[ebp][8]            
      0000000C: E804000000       call         000000015 -- 1  <- Correct it!
      00000011: 5D               pop          ebp                     
      00000012: C20C00           retn         0000C ; -^-^-^-^-^-^-^-^
      00000015: 53              1push    ebx
      00000016: 56               push         esi                     
      00000017: 57               push         edi                     
      00000018: 51               push         ecx                     
      00000019: 8BF9             mov          edi,ecx                 
      0000001B: 8BF2             mov          esi,edx                 
      0000001D: 8BD8             mov          ebx,eax                 
      0000001F: 6A00             push         0
      00000021: 8D442404         lea          eax,[esp][4]            
      00000025: 50               push         eax                     
      00000026: 57               push         edi                     
      00000027: 56               push         esi                     
      00000028: 53               push         ebx                     
      00000029: E8DFEFFFFF       call         0FFFFF00D --X <-Correct to 
      0000002E: 85C0             test         eax,eax                 
      00000030: 7507             jnz          000000039 -- 1          
      00000032: C70424FFFFFFFF   mov          d,[esp],-1 ;'    '      
      00000039: 8B0424          1mov          eax,[esp]               
      0000003C: 5A               pop          edx                     
      0000003D: 5F               pop          edi                     
      0000003E: 5E               pop          esi                     
      0000003F: 5B               pop          ebx                     
      00000040: C3               retn ; -^-^-^-^-^-^-^-^-^-^-^-^-^-^-^
    Кусок этот (подправив два вызова в нём) положить в свободном месте в файле Puffer.exe
    и скорректировать вызовы PF00xxxxx.DLLWriteFile на вызов этого куска кода.

    Файл
    .a.. 63488 3-May-2010 4:05 SWDLL1.dat
    - после этого уже не нужен, и его можно удалить.
    Как не нужно копировать и PF00xxxxx.DLL файл из %TEMP%-каталога.

    В общем же исправления такие: (файл PUFFER.CRK)
    Код:
    Puffer 4.05
    Un-UPX'ed file size 1464048 (0x1656F0)
    
    Extend CODE section VirtSize=PhisSize
    Puffer.exe
    00000200: 70 00 ;00000200:
    00000201: 28 2A ;00000201:
    
    Skip loading of PFxxxx.dll
    Puffer.exe
    .00504370: 55 C3 ;00103770: 
    
    Set day 25 of 25
    Puffer.exe
    .00504767: FF 01 ;00103B67: 
    .00504768: FF 00 ;00103B68: 
    .00504769: FF 00 ;00103B69: 
    .0050476A: FF 00 ;00103B6A: 
    
    Skip trial day nag (Call->retn)
    Puffer.exe
    .0050486E: BE 55 ;00103C6E: 
    .0050486F: 43 01 ;00103C6F: 
    .00504870: F5 00 ;00103C70: 
    .00504871: FF 00 ;00103C71: 
    
    Skip header printing of "[Trial day xx of 25]"
    Puffer.exe
    .00504A95: 20 00 ;00103E95: 
    
    Call of emulated PF00xxx.DLL->DLLWriteFile()
    Puffer.exe
    .0050F0A1: FF E8 ;0010E4A1: 
    .0050F0A2: 15 CA ;0010E4A2: 
    .0050F0A3: 90 47 ;0010E4A3: 
    .0050F0A4: 0B 00 ;0010E4A4: 
    .0050F0A5: 52 00 ;0010E4A5: 
    .0050F0A6: 00 90 ;0010E4A6: 
    Puffer.exe
    .0050F147: FF E8 ;0010E547: 
    .0050F148: 15 24 ;0010E548: 
    .0050F149: 90 47 ;0010E549: 
    .0050F14A: 0B 00 ;0010E54A: 
    .0050F14B: 52 00 ;0010E54B: 
    .0050F14C: 00 90 ;0010E54C: 
    Puffer.exe
    .0050F1B6: FF E8 ;0010E5B6: 
    .0050F1B7: 15 B5 ;0010E5B7: 
    .0050F1B8: 90 46 ;0010E5B8: 
    .0050F1B9: 0B 00 ;0010E5B9: 
    .0050F1BA: 52 00 ;0010E5BA: 
    .0050F1BB: 00 90 ;0010E5BB: 
    
    Emulation of PF00xxx.DLL->DLLWriteFile()
    Puffer.exe
    .00513870: 00 55 ;00112C70: 
    .00513871: 00 8B ;00112C71: 
    .00513872: 00 EC ;00112C72: 
    .00513873: 00 8B ;00112C73: 
    .00513874: 00 55 ;00112C74: 
    .00513875: 00 0C ;00112C75: 
    .00513876: 00 8B ;00112C76: 
    .00513877: 00 4D ;00112C77: 
    .00513878: 00 10 ;00112C78: 
    .00513879: 00 8B ;00112C79: 
    .0051387A: 00 45 ;00112C7A: 
    .0051387B: 00 08 ;00112C7B: 
    .0051387C: 00 E8 ;00112C7C: 
    .0051387D: 00 04 ;00112C7D: 
    .00513881: 00 5D ;00112C81: 
    .00513882: 00 C2 ;00112C82: 
    .00513883: 00 0C ;00112C83: 
    .00513885: 00 53 ;00112C85: 
    .00513886: 00 56 ;00112C86: 
    .00513887: 00 57 ;00112C87: 
    .00513888: 00 51 ;00112C88: 
    .00513889: 00 8B ;00112C89: 
    .0051388A: 00 F9 ;00112C8A: 
    .0051388B: 00 8B ;00112C8B: 
    .0051388C: 00 F2 ;00112C8C: 
    .0051388D: 00 8B ;00112C8D: 
    .0051388E: 00 D8 ;00112C8E: 
    .0051388F: 00 6A ;00112C8F: 
    .00513891: 00 8D ;00112C91: 
    .00513892: 00 44 ;00112C92: 
    .00513893: 00 24 ;00112C93: 
    .00513894: 00 04 ;00112C94: 
    .00513895: 00 50 ;00112C95: 
    .00513896: 00 57 ;00112C96: 
    .00513897: 00 56 ;00112C97: 
    .00513898: 00 53 ;00112C98: 
    .00513899: 00 E8 ;00112C99: 
    .0051389A: 00 DA ;00112C9A: 
    .0051389B: 00 D9 ;00112C9B: 
    .0051389C: 00 EE ;00112C9C: 
    .0051389D: 00 FF ;00112C9D: 
    .0051389E: 00 85 ;00112C9E: 
    .0051389F: 00 C0 ;00112C9F: 
    .005138A0: 00 75 ;00112CA0: 
    .005138A1: 00 07 ;00112CA1: 
    .005138A2: 00 C7 ;00112CA2: 
    .005138A3: 00 04 ;00112CA3: 
    .005138A4: 00 24 ;00112CA4: 
    .005138A5: 00 FF ;00112CA5: 
    .005138A6: 00 FF ;00112CA6: 
    .005138A7: 00 FF ;00112CA7: 
    .005138A8: 00 FF ;00112CA8: 
    .005138A9: 00 8B ;00112CA9: 
    .005138AA: 00 04 ;00112CAA: 
    .005138AB: 00 24 ;00112CAB: 
    .005138AC: 00 5A ;00112CAC: 
    .005138AD: 00 5F ;00112CAD: 
    .005138AE: 00 5E ;00112CAE: 
    .005138AF: 00 5B ;00112CAF: 
    .005138B0: 00 C3 ;00112CB0:
    Файл Puffer.exe после этого можно обратно запаковать UPX-ом
    и отрезать от него уже ненужный оверлей.



    3ae9_13.05.2020_EXELAB.rU.tgz - PUFFER.CRK

    Комментарий


      #3
      ) Хм. Случайно наткнулся на замечания и тоже решил оставить пару слов)
      пользительно) хотя никто не претендовал на единственно верно решение.

      Комментарий

      Обработка...
      X