Русский / Russian English / Английский

Сейчас на форуме: rmn, bernal1, jinoweb, vasilevradislav (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Обсуждение статей —› [ Demode ] Исследование защиты утилиты Puffer v4.01
Посл.ответ Сообщение


Ранг: 537.3 (!)
Статус: Администратор
Создатель CRACKL@B

Создано: 22 ноября 2010 00:12 New!
Цитата · Личное сообщение · #1

Ранг: 421.4 (мудрец)
Статус: Участник

Создано: 13 мая 2020 00:35 · Поправил: dosprog New!
Цитата · Личное сообщение · #2

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

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


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

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

Code:
  1.   00000000: 55               push         ebp                     
  2.   00000001: 8BEC             mov          ebp,esp                 
  3.   00000003: 8B550C           mov          edx,[ebp][00C]          
  4.   00000006: 8B4D10           mov          ecx,[ebp][010]          
  5.   00000009: 8B4508           mov          eax,[ebp][8]            
  6.   0000000C: E804000000       call         000000015 -- 1  <- Correct it!
  7.   00000011: 5D               pop          ebp                     
  8.   00000012: C20C00           retn         0000C ; -^-^-^-^-^-^-^-^
  9.   00000015: 53              1push    ebx
  10.   00000016: 56               push         esi                     
  11.   00000017: 57               push         edi                     
  12.   00000018: 51               push         ecx                     
  13.   00000019: 8BF9             mov          edi,ecx                 
  14.   0000001B: 8BF2             mov          esi,edx                 
  15.   0000001D: 8BD8             mov          ebx,eax                 
  16.   0000001F: 6A00             push         0
  17.   00000021: 8D442404         lea          eax,[esp][4]            
  18.   00000025: 50               push         eax                     
  19.   00000026: 57               push         edi                     
  20.   00000027: 56               push         esi                     
  21.   00000028: 53               push         ebx                     
  22.   00000029: E8DFEFFFFF       call         0FFFFF00D --<-Correct to <Call WriteFile>
  23.   0000002E: 85C0             test         eax,eax                 
  24.   00000030: 7507             jnz          000000039 -- 1          
  25.   00000032: C70424FFFFFFFF   mov          d,[esp],-1 ;'    '
  26.   00000039: 8B0424          1mov          eax,[esp]               
  27.   0000003C: 5A               pop          edx                     
  28.   0000003D: 5F               pop          edi                     
  29.   0000003E: 5E               pop          esi                     
  30.   0000003F: 5B               pop          ebx                     
  31.   00000040: C3               retn ; -^-^-^-^-^-^-^-^-^-^-^-^-^-^-^


Кусок этот (подправив два вызова в нём) положить в свободном месте в файле Puffer.exe
и скорректировать вызовы PF00xxxxx.DLLWriteFile на вызов этого куска кода.

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

В общем же исправления такие: (файл PUFFER.CRK)
Code:
  1. Puffer 4.05
  2. Un-UPX'ed file size 1464048 (0x1656F0)
  3.  
  4. Extend CODE section VirtSize=PhisSize
  5. Puffer.exe
  6. 00000200: 70 00 ;00000200:
  7. 00000201: 28 2A ;00000201:
  8.  
  9. Skip loading of PFxxxx.dll
  10. Puffer.exe
  11. .00504370: 55 C3 ;00103770:
  12.  
  13. Set day 25 of 25
  14. Puffer.exe
  15. .00504767: FF 01 ;00103B67:
  16. .00504768: FF 00 ;00103B68:
  17. .00504769: FF 00 ;00103B69:
  18. .0050476A: FF 00 ;00103B6A:
  19.  
  20. Skip trial day nag (Call->retn)
  21. Puffer.exe
  22. .0050486E: BE 55 ;00103C6E:
  23. .0050486F: 43 01 ;00103C6F:
  24. .00504870: F5 00 ;00103C70:
  25. .00504871: FF 00 ;00103C71:
  26.  
  27. Skip header printing of "[Trial day xx of 25]"
  28. Puffer.exe
  29. .00504A95: 20 00 ;00103E95:
  30.  
  31. Call of emulated PF00xxx.DLL->DLLWriteFile()
  32. Puffer.exe
  33. .0050F0A1: FF E8 ;0010E4A1:
  34. .0050F0A2: 15 CA ;0010E4A2:
  35. .0050F0A3: 90 47 ;0010E4A3:
  36. .0050F0A4: 0B 00 ;0010E4A4:
  37. .0050F0A5: 52 00 ;0010E4A5:
  38. .0050F0A6: 00 90 ;0010E4A6:
  39. Puffer.exe
  40. .0050F147: FF E8 ;0010E547:
  41. .0050F148: 15 24 ;0010E548:
  42. .0050F149: 90 47 ;0010E549:
  43. .0050F14A: 0B 00 ;0010E54A:
  44. .0050F14B: 52 00 ;0010E54B:
  45. .0050F14C: 00 90 ;0010E54C:
  46. Puffer.exe
  47. .0050F1B6: FF E8 ;0010E5B6:
  48. .0050F1B7: 15 B5 ;0010E5B7:
  49. .0050F1B8: 90 46 ;0010E5B8:
  50. .0050F1B9: 0B 00 ;0010E5B9:
  51. .0050F1BA: 52 00 ;0010E5BA:
  52. .0050F1BB: 00 90 ;0010E5BB:
  53.  
  54. Emulation of PF00xxx.DLL->DLLWriteFile()
  55. Puffer.exe
  56. .00513870: 00 55 ;00112C70:
  57. .00513871: 00 8B ;00112C71:
  58. .00513872: 00 EC ;00112C72:
  59. .00513873: 00 8B ;00112C73:
  60. .00513874: 00 55 ;00112C74:
  61. .00513875: 00 0C ;00112C75:
  62. .00513876: 00 8B ;00112C76:
  63. .00513877: 00 4D ;00112C77:
  64. .00513878: 00 10 ;00112C78:
  65. .00513879: 00 8B ;00112C79:
  66. .0051387A: 00 45 ;00112C7A:
  67. .0051387B: 00 08 ;00112C7B:
  68. .0051387C: 00 E8 ;00112C7C:
  69. .0051387D: 00 04 ;00112C7D:
  70. .00513881: 00 5D ;00112C81:
  71. .00513882: 00 C2 ;00112C82:
  72. .00513883: 00 0C ;00112C83:
  73. .00513885: 00 53 ;00112C85:
  74. .00513886: 00 56 ;00112C86:
  75. .00513887: 00 57 ;00112C87:
  76. .00513888: 00 51 ;00112C88:
  77. .00513889: 00 8B ;00112C89:
  78. .0051388A: 00 F9 ;00112C8A:
  79. .0051388B: 00 8B ;00112C8B:
  80. .0051388C: 00 F2 ;00112C8C:
  81. .0051388D: 00 8B ;00112C8D:
  82. .0051388E: 00 D8 ;00112C8E:
  83. .0051388F: 00 6A ;00112C8F:
  84. .00513891: 00 8D ;00112C91:
  85. .00513892: 00 44 ;00112C92:
  86. .00513893: 00 24 ;00112C93:
  87. .00513894: 00 04 ;00112C94:
  88. .00513895: 00 50 ;00112C95:
  89. .00513896: 00 57 ;00112C96:
  90. .00513897: 00 56 ;00112C97:
  91. .00513898: 00 53 ;00112C98:
  92. .00513899: 00 E8 ;00112C99:
  93. .0051389A: 00 DA ;00112C9A:
  94. .0051389B: 00 D9 ;00112C9B:
  95. .0051389C: 00 EE ;00112C9C:
  96. .0051389D: 00 FF ;00112C9D:
  97. .0051389E: 00 85 ;00112C9E:
  98. .0051389F: 00 C0 ;00112C9F:
  99. .005138A0: 00 75 ;00112CA0:
  100. .005138A1: 00 07 ;00112CA1:
  101. .005138A2: 00 C7 ;00112CA2:
  102. .005138A3: 00 04 ;00112CA3:
  103. .005138A4: 00 24 ;00112CA4:
  104. .005138A5: 00 FF ;00112CA5:
  105. .005138A6: 00 FF ;00112CA6:
  106. .005138A7: 00 FF ;00112CA7:
  107. .005138A8: 00 FF ;00112CA8:
  108. .005138A9: 00 8B ;00112CA9:
  109. .005138AA: 00 04 ;00112CAA:
  110. .005138AB: 00 24 ;00112CAB:
  111. .005138AC: 00 5A ;00112CAC:
  112. .005138AD: 00 5F ;00112CAD:
  113. .005138AE: 00 5E ;00112CAE:
  114. .005138AF: 00 5B ;00112CAF:
  115. .005138B0: 00 C3 ;00112CB0:

Файл Puffer.exe после этого можно обратно запаковать UPX-ом
и отрезать от него уже ненужный оверлей.



{ Атач доступен только для участников форума } - PUFFER.CRK

| Сообщение посчитали полезным: plutos, Vnv


Ранг: 85.5 (постоянный)
Статус: Участник

Создано: 23 мая 2020 22:14 New!
Цитата · Личное сообщение · #3

) Хм. Случайно наткнулся на замечания и тоже решил оставить пару слов)
пользительно) хотя никто не претендовал на единственно верно решение.
 eXeL@B —› Обсуждение статей —› [ Demode ] Исследование защиты утилиты Puffer v4.01

Видеокурс ВЗЛОМ