Сейчас на форуме: asfa, bartolomeo (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Защита ресурсов. FASM
Посл.ответ Сообщение

Ранг: 49.8 (посетитель), 56thx
Активность: 0.090
Статус: Участник

Создано: 01 марта 2012 10:41 · Поправил: ressa
· Личное сообщение · #1

Добрый день, уважаемые господа. Подскажите, как защитить ресурсы в ФАСМе, но при этом не увеличить размер файла?
Code:
  1. section '.rsrc' data readable resource from 'rsrc.res'

В ресурсах содержится нфошник, музыка и собственно диалог.
Просто защитить от редактирования ресурсов.
Поверх вешать ничего не хочу мудреного, чтобы аверы не ругались, просто упаковать голым UPX'ом.
Заранее благодарен.
P.S. Размер файла принципиален, готов пожертвовать парой килобайт. Буду очень признателен за живой пример



Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 01 марта 2012 11:55
· Личное сообщение · #2

запихнуть ресурсы в виде дампа (куча db) и отказаться от ресурсов, или проверять контрольную сумму

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

Ранг: 49.8 (посетитель), 56thx
Активность: 0.090
Статус: Участник

Создано: 01 марта 2012 12:09 · Поправил: ressa
· Личное сообщение · #3

drone
Спасибо за совет, а ты не мог бы написать, как проверить контрольную сумму ресурсов?
Просто, если писать с помощью:
Code:
  1. CRC32Table:
  2. dd 000000000h,077073096h,0EE0E612Ch,0990951BAh,0076DC419h,0706AF48Fh,0E963A535h,09E6495A3h
  3. dd 00EDB8832h,079DCB8A4h,0E0D5E91Eh,097D2D988h,009B64C2Bh,07EB17CBDh,0E7B82D07h,090BF1D91h
  4. dd 01DB71064h,06AB020F2h,0F3B97148h,084BE41DEh,01ADAD47Dh,06DDDE4EBh,0F4D4B551h,083D385C7h
  5. dd 0136C9856h,0646BA8C0h,0FD62F97Ah,08A65C9ECh,014015C4Fh,063066CD9h,0FA0F3D63h,08D080DF5h
  6. dd 03B6E20C8h,04C69105Eh,0D56041E4h,0A2677172h,03C03E4D1h,04B04D447h,0D20D85FDh,0A50AB56Bh
  7. dd 035B5A8FAh,042B2986Ch,0DBBBC9D6h,0ACBCF940h,032D86CE3h,045DF5C75h,0DCD60DCFh,0ABD13D59h
  8. dd 026D930ACh,051DE003Ah,0C8D75180h,0BFD06116h,021B4F4B5h,056B3C423h,0CFBA9599h,0B8BDA50Fh
  9. dd 02802B89Eh,05F058808h,0C60CD9B2h,0B10BE924h,02F6F7C87h,058684C11h,0C1611DABh,0B6662D3Dh
  10. dd 076DC4190h,001DB7106h,098D220BCh,0EFD5102Ah,071B18589h,006B6B51Fh,09FBFE4A5h,0E8B8D433h
  11. dd 07807C9A2h,00F00F934h,09609A88Eh,0E10E9818h,07F6A0DBBh,0086D3D2Dh,091646C97h,0E6635C01h
  12. dd 06B6B51F4h,01C6C6162h,0856530D8h,0F262004Eh,06C0695EDh,01B01A57Bh,08208F4C1h,0F50FC457h
  13. dd 065B0D9C6h,012B7E950h,08BBEB8EAh,0FCB9887Ch,062DD1DDFh,015DA2D49h,08CD37CF3h,0FBD44C65h
  14. dd 04DB26158h,03AB551CEh,0A3BC0074h,0D4BB30E2h,04ADFA541h,03DD895D7h,0A4D1C46Dh,0D3D6F4FBh
  15. dd 04369E96Ah,0346ED9FCh,0AD678846h,0DA60B8D0h,044042D73h,033031DE5h,0AA0A4C5Fh,0DD0D7CC9h
  16. dd 05005713Ch,0270241AAh,0BE0B1010h,0C90C2086h,05768B525h,0206F85B3h,0B966D409h,0CE61E49Fh
  17. dd 05EDEF90Eh,029D9C998h,0B0D09822h,0C7D7A8B4h,059B33D17h,02EB40D81h,0B7BD5C3Bh,0C0BA6CADh
  18. dd 0EDB88320h,09ABFB3B6h,003B6E20Ch,074B1D29Ah,0EAD54739h,09DD277AFh,004DB2615h,073DC1683h
  19. dd 0E3630B12h,094643B84h,00D6D6A3Eh,07A6A5AA8h,0E40ECF0Bh,09309FF9Dh,00A00AE27h,07D079EB1h
  20. dd 0F00F9344h,08708A3D2h,01E01F268h,06906C2FEh,0F762575Dh,0806567CBh,0196C3671h,06E6B06E7h
  21. dd 0FED41B76h,089D32BE0h,010DA7A5Ah,067DD4ACCh,0F9B9DF6Fh,08EBEEFF9h,017B7BE43h,060B08ED5h
  22. dd 0D6D6A3E8h,0A1D1937Eh,038D8C2C4h,04FDFF252h,0D1BB67F1h,0A6BC5767h,03FB506DDh,048B2364Bh
  23. dd 0D80D2BDAh,0AF0A1B4Ch,036034AF6h,041047A60h,0DF60EFC3h,0A867DF55h,0316E8EEFh,04669BE79h
  24. dd 0CB61B38Ch,0BC66831Ah,0256FD2A0h,05268E236h,0CC0C7795h,0BB0B4703h,0220216B9h,05505262Fh
  25. dd 0C5BA3BBEh,0B2BD0B28h,02BB45A92h,05CB36A04h,0C2D7FFA7h,0B5D0CF31h,02CD99E8Bh,05BDEAE1Dh
  26. dd 09B64C2B0h,0EC63F226h,0756AA39Ch,0026D930Ah,09C0906A9h,0EB0E363Fh,072076785h,005005713h
  27. dd 095BF4A82h,0E2B87A14h,07BB12BAEh,00CB61B38h,092D28E9Bh,0E5D5BE0Dh,07CDCEFB7h,00BDBDF21h
  28. dd 086D3D2D4h,0F1D4E242h,068DDB3F8h,01FDA836Eh,081BE16CDh,0F6B9265Bh,06FB077E1h,018B74777h
  29. dd 088085AE6h,0FF0F6A70h,066063BCAh,011010B5Ch,08F659EFFh,0F862AE69h,0616BFFD3h,0166CCF45h
  30. dd 0A00AE278h,0D70DD2EEh,04E048354h,03903B3C2h,0A7672661h,0D06016F7h,04969474Dh,03E6E77DBh
  31. dd 0AED16A4Ah,0D9D65ADCh,040DF0B66h,037D83BF0h,0A9BCAE53h,0DEBB9EC5h,047B2CF7Fh,030B5FFE9h
  32. dd 0BDBDF21Ch,0CABAC28Ah,053B39330h,024B4A3A6h,0BAD03605h,0CDD70693h,054DE5729h,023D967BFh
  33. dd 0B3667A2Eh,0C4614AB8h,05D681B02h,02A6F2B94h,0B40BBE37h,0C30C8EA1h,05A05DF1Bh,02D02EF8Dh
  34.  
  35.  
  36. proc CRC32_,lData, ptrData
  37.          push    esi
  38.          push    ecx
  39.          push    edx
  40.  
  41.          mov     esi, [ptrData]
  42.          xor     edx, edx
  43.          or      eax, -1
  44.          mov     ecx, [lData]
  45.  
  46. CRC32_loop:
  47.          mov     dl, byte[esi]
  48.          xor     dl, al
  49.          shr     eax, 8
  50.          xor     eax, dword[CRC32Table + 4*edx]
  51.          inc     esi
  52.          dec     ecx
  53.          jnz     CRC32_loop
  54.  
  55.          not     eax
  56.  
  57.          pop     edx
  58.          pop     ecx
  59.          pop     esi
  60.          ret
  61. endp

То надо постоянно вбивать размер CRC при каждом компиллинге, обозначая его в начале в духе:
Code:
  1. crc32file dd 0fdf6f6e0h

А я хотел бы, чтобы не увеличивая особо размер файла - автоматом проверять rsrc.res, к примеру md5.



Ранг: 49.8 (посетитель), 56thx
Активность: 0.090
Статус: Участник

Создано: 01 марта 2012 12:28
· Личное сообщение · #4

Посмотрел Patcher.Av0id.rar
Там проверка по md5, но что-то не разобрался, мб в моем случае можно как-нить упросить задачу?



Ранг: 72.1 (постоянный), 30thx
Активность: 0.050
Статус: Участник

Создано: 01 марта 2012 12:29
· Личное сообщение · #5

RSA и подпись в конце файла дописывать после компиляции?



Ранг: 49.8 (посетитель), 56thx
Активность: 0.090
Статус: Участник

Создано: 01 марта 2012 12:36 · Поправил: ressa
· Личное сообщение · #6

yagello
Мне нужно как можно проще, и желательно с примером. Пока я думаю, что самое простое - сверить мд5, но пока не могу понять, как это все оптимизировать, реализовать с минимальным количеством кода.. Размер файла на выходе - 15Кб, не хочу увеличивать на много..




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 01 марта 2012 12:48
· Личное сообщение · #7

Самый тупой и простой вариант-пропиши CRC в заголовке, поле для этого уже есть, есть и апи для её подсчёта. И прописать автоматически может линкер при сборке.

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

Ранг: 49.8 (посетитель), 56thx
Активность: 0.090
Статус: Участник

Создано: 01 марта 2012 12:56
· Личное сообщение · #8

Archer
Я примерно понял, но не могу реализовать, я так полагаю там вообще несколько строк кода, дай пожалуйста подсказку.



Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 01 марта 2012 13:05
· Личное сообщение · #9

ressa
Archer наверное имел в виду CheckSumMappedFile

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

Ранг: 49.8 (посетитель), 56thx
Активность: 0.090
Статус: Участник

Создано: 01 марта 2012 13:11 · Поправил: ressa
· Личное сообщение · #10

MasterSoft
Это получается, после обьявления ресурсов, я делаю call CheckSumMappedFile , она появляется в eax?
Вот ее код?
Code:
  1. assume fs:nothing
  2.         mov   eax, dword ptr fs:[00000000]
  3.         push  ebp
  4.         mov   ebp, esp
  5.         push  -00000001
  6.         push  7D6C61C0h
  7.         push  7D6C4598h
  8.         push  eax
  9.         mov   eax, dword ptr [ebp+10h]
  10.         mov   dword ptr fs:[00000000], esp
  11.         sub   esp, 00000010h
  12.         push  ebx
  13.         push  esi
  14.         push  edi
  15.         xor   esi, esi
  16.         mov   dword ptr [ebp-18h], esp
  17.         mov   dword ptr [eax], esi
  18.         mov   eax, dword ptr [ebp+0Ch]            
  19.         inc   eax                               
  20.         shr   eax, 1                           
  21.         push  eax                              
  22.         push  dword ptr [ebp+08h]              
  23.         push  esi                              
  24.         call  func0                             
  25.                                            
  26.  
  27.         mov   word ptr [ebp-1Ah], ax       
  28.         mov   dword ptr [ebp-04h], esi     
  29.          mov eax,dword ptr [ebp+08h]
  30.          assume eax:ptr IMAGE_DOS_HEADER
  31.          mov ecx,dword ptr [eax].e_lfanew
  32.          add eax,ecx
  33.         mov   dword ptr [ebp-20h], eax   
  34.         jmp   saltito0                 
  35.         mov   eax, 00000001         
  36.         ret
  37.  
  38.         mov   esp, dword ptr [ebp-18h]
  39.         mov   dword ptr [ebp-20h], 00000000
  40.  
  41. saltito0:                                      
  42.         mov   dword ptr [ebp-04h], 0FFFFFFFFh
  43.         cmp   dword ptr [ebp-20h], 000000000h 
  44.         je    saltito1
  45.         mov   eax, dword ptr [ebp+08h]
  46.         cmp   dword ptr [ebp-20h], eax         
  47.         je    saltito1
  48.         mov   esi, dword ptr [ebp-20h]       
  49.         mov   ecx, dword ptr [ebp+10h]
  50.         add   esi, 00000058h
  51.         mov   edx, 00000001h
  52.         mov   eax, dword ptr [esi]
  53.         mov   dword ptr [ecx], eax
  54.         mov   ecx, edx
  55.         mov   ax, word ptr [esi]
  56.         cmp   word ptr [ebp-1Ah], ax
  57.         adc   ecx, -00000001
  58.         sub   word ptr [ebp-1Ah], cx
  59.         sub   word ptr [ebp-1Ah], ax
  60.         mov   ax, word ptr [esi+02h]
  61.         cmp   word ptr [ebp-1Ah], ax
  62.         adc   edx, -00000001
  63.         sub   word ptr [ebp-1Ah], dx
  64.         sub   word ptr [ebp-1Ah], ax
  65.  
  66. saltito1:
  67.         movzx ecx, word ptr [ebp-1Ah]
  68.         add   ecx, dword ptr [ebp+0Ch]
  69.         mov   eax, dword ptr [ebp+14h]
  70.         pop   edi
  71.         pop   esi
  72.         pop   ebx
  73.         mov   dword ptr [eax], ecx
  74.         mov   eax, dword ptr [ebp-20h]
  75.         mov   ecx, dword ptr [ebp-10h]
  76.         mov   dword  ptr fs:[00000000], ecx
  77.         mov   esp, ebp
  78.         pop   ebp
  79.         ret   0010h
  80. func0:
  81.         push    esi
  82.         mov     ecx, dword ptr [esp+10h]
  83.         mov     esi, dword ptr [esp+0Ch]
  84.         mov     eax, dword ptr [esp+08h]
  85.         shl     ecx, 1
  86.         je      func0_saltito0
  87.         test    esi, 00000002
  88.         je      func0_saltito1
  89.         sub     edx, edx
  90.         mov     dx, word ptr [esi]
  91.         add     eax, edx
  92.         adc     eax, 00000000
  93.         add     esi, 00000002
  94.         sub     ecx, 00000002
  95.  
  96. func0_saltito1:
  97.         mov     edx, ecx
  98.         and     edx, 00000007
  99.         sub     ecx, edx
  100.         je      func0_saltito2
  101.         test    ecx, 00000008
  102.         je      func0_saltito3
  103.         add     eax, dword ptr [esi]
  104.         adc     eax, dword ptr [esi+04h]
  105.         adc     eax, 00000000
  106.         add     esi, 00000008
  107.         sub     ecx, 00000008
  108.         je      func0_saltito2
  109.  
  110. func0_saltito3:
  111.         test    ecx, 00000010h
  112.         je      func0_saltito4
  113.         add     eax, dword ptr [esi]
  114.         adc     eax, dword ptr [esi+04h]
  115.         adc     eax, dword ptr [esi+08h]
  116.         adc     eax, 00000000h
  117.         add     esi, 00000010h
  118.         sub     ecx, 00000010h
  119.         je      func0_saltito2
  120.  
  121. func0_saltito4:
  122.         test    ecx, 00000020h
  123.         je      func0_saltito5
  124.         add     eax, dword ptr [esi]
  125.  
  126.         adc     eax, dword ptr [esi+04h]
  127.         adc     eax, dword ptr [esi+08h]
  128.         adc     eax, dword ptr [esi+0Ch]
  129.         adc     eax, dword ptr [esi+10h]
  130.         adc     eax, dword ptr [esi+14h]
  131.         adc     eax, dword ptr [esi+18h]
  132.         adc     eax, dword ptr [esi+1Ch]
  133.         adc     eax, 00000000h
  134.         add     esi, 00000020h
  135.         sub     ecx, 00000020h
  136.         je      func0_saltito2
  137.  
  138. func0_saltito5:
  139.         test    ecx, 00000040h
  140.         je      func0_saltito6
  141.         add     eax, dword ptr [esi]
  142.  
  143.         adc     eax, dword ptr [esi+04h]
  144.         adc     eax, dword ptr [esi+08h]
  145.         adc     eax, dword ptr [esi+0Ch]
  146.         adc     eax, dword ptr [esi+10h]
  147.         adc     eax, dword ptr [esi+14h]
  148.         adc     eax, dword ptr [esi+18h]
  149.         adc     eax, dword ptr [esi+1Ch]
  150.         adc     eax, dword ptr [esi+20h]
  151.         adc     eax, dword ptr [esi+24h]
  152.         adc     eax, dword ptr [esi+28h]
  153.         adc     eax, dword ptr [esi+2Ch]
  154.         adc     eax, dword ptr [esi+30h]
  155.         adc     eax, dword ptr [esi+34h]
  156.         adc     eax, dword ptr [esi+38h]
  157.         adc     eax, dword ptr [esi+3Ch]
  158.         adc     eax, 00000000h
  159.         add     esi, 00000040h
  160.         sub     ecx, 00000040h
  161.         je      func0_saltito2
  162.  
  163. func0_saltito6:
  164.         add     eax, dword ptr [esi]
  165.  
  166.         adc     eax, dword ptr [esi+04h]
  167.         adc     eax, dword ptr [esi+08h]
  168.         adc     eax, dword ptr [esi+0Ch]
  169.         adc     eax, dword ptr [esi+10h]
  170.         adc     eax, dword ptr [esi+14h]
  171.         adc     eax, dword ptr [esi+18h]
  172.         adc     eax, dword ptr [esi+1Ch]
  173.         adc     eax, dword ptr [esi+20h]
  174.         adc     eax, dword ptr [esi+24h]
  175.         adc     eax, dword ptr [esi+28h]
  176.         adc     eax, dword ptr [esi+2Ch]
  177.         adc     eax, dword ptr [esi+30h]
  178.         adc     eax, dword ptr [esi+34h]
  179.         adc     eax, dword ptr [esi+38h]
  180.         adc     eax, dword ptr [esi+3Ch]
  181.         adc     eax, dword ptr [esi+40h]
  182.         adc     eax, dword ptr [esi+44h]
  183.         adc     eax, dword ptr [esi+48h]
  184.         adc     eax, dword ptr [esi+4Ch]
  185.         adc     eax, dword ptr [esi+50h]
  186.         adc     eax, dword ptr [esi+54h]
  187.         adc     eax, dword ptr [esi+58h]
  188.         adc     eax, dword ptr [esi+5Ch]
  189.         adc     eax, dword ptr [esi+60h]
  190.         adc     eax, dword ptr [esi+64h]
  191.         adc     eax, dword ptr [esi+68h]
  192.         adc     eax, dword ptr [esi+6Ch]
  193.         adc     eax, dword ptr [esi+70h]
  194.         adc     eax, dword ptr [esi+74h]
  195.         adc     eax, dword ptr [esi+78h]
  196.         adc     eax, dword ptr [esi+7Ch]
  197.         adc     eax, 00000000h
  198.         add     esi, 00000080h
  199.         sub     ecx, 00000080h
  200.         jne     func0_saltito6
  201.  
  202. func0_saltito2:
  203.         test    edx, edx
  204.         je      func0_saltito0
  205.  
  206. func0_saltito7:
  207.         sub     ecx, ecx
  208.         mov     cx, word ptr [esi]
  209.         add     eax, ecx
  210.         adc     eax, 00000000h
  211.         add     esi, 00000002h
  212.         sub     edx, 00000002h
  213.         jne     func0_saltito7
  214.  
  215. func0_saltito0:
  216.         mov     edx, eax
  217.         shr     edx, 10h
  218.         and     eax, 0000FFFFh
  219.         add     eax, edx
  220.         mov     edx, eax
  221.         shr     edx, 10h
  222.         add     eax, edx
  223.         and     eax, 0000FFFFh
  224.         pop     esi
  225.         ret     000Ch
  226. end start




Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 01 марта 2012 13:31
· Личное сообщение · #11

ressa пишет:
она появляется в eax

с какого хера то? читай меня

вообще как вариант ещё пошифровать можно.
и ещё как один из вариантов на форуме где-то проскакивал криптор ресурсов на асме. году так в 2006, если прально помню.


 eXeL@B —› Вопросы новичков —› Защита ресурсов. FASM
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати