Сейчас на форуме: -Sanchez- (+9 невидимых)

 eXeL@B —› Основной форум —› Метод обфускации в crackme
Посл.ответ Сообщение

Ранг: 18.4 (новичок), 3thx
Активность: 0.020
Статус: Участник

Создано: 20 июня 2019 21:30
· Личное сообщение · #1

Всем привет!
Пытаюсь уже некоторое время решить необычный crackme. Что-то похожее на вм или эзотерический язык программирования. Сначала в цикле формируется некая битовая матрица(указатель в rbx) на основе входа (указатель rbp). Вход размера 32 байта, по адресу 0C162h находится что-то типа PC, пример чтения входных данных:

Code:
  1. .text:0000555555555811                 mov     eax, [rbx+0C162h]
  2. .text:0000555555555817                 shl     rax, 5
  3. .text:000055555555581B                 mov     al, [rbp+rax+1Fh]


Также в коде есть конструкции сбора из отдельных битов слов, например:
Code:
  1. .text:0000555555555784                 movzx   eax, byte ptr [rbx+0C47Fh]
  2. .text:000055555555578B                 movzx   edx, byte ptr [rbx+0C33Ah]
  3. .text:0000555555555792                 add     eax, eax
  4. .text:0000555555555794                 shl     edx, 2
  5. .text:0000555555555797                 or      eax, edx
  6. .text:0000555555555799                 movzx   edx, byte ptr [rbx+0C421h]
  7. .text:00005555555557A0                 or      eax, edx
  8. .text:00005555555557A2                 movzx   edx, byte ptr [rbx+0C433h]
  9. .text:00005555555557A9                 shl     edx, 3
  10. .text:00005555555557AC                 or      eax, edx
  11. .text:00005555555557AE                 movzx   edx, byte ptr [rbx+0C3BBh]
  12. .text:00005555555557B5                 shl     edx, 4
  13. .text:00005555555557B8                 or      eax, edx
  14. .text:00005555555557BA                 movzx   edx, byte ptr [rbx+44h]
  15. .text:00005555555557BE                 shl     edx, 5
  16. .text:00005555555557C1                 or      eax, edx
  17. .text:00005555555557C3                 movzx   edx, byte ptr [rbx+9Eh]
  18. .text:00005555555557CA                 shl     edx, 6
  19. .text:00005555555557CD                 or      eax, edx
  20. .text:00005555555557CF                 movzx   edx, byte ptr [rbx+0C463h]
  21. .text:00005555555557D6                 shl     edx, 7
  22. .text:00005555555557D9                 or      eax, edx
  23. .text:00005555555557DB                 movzx   edx, byte ptr [rbx+0C43Dh]
  24. .text:00005555555557E2                 shl     edx, 8
  25. .text:00005555555557E5                 or      eax, edx
  26. .text:00005555555557E7                 movzx   edx, byte ptr [rbx+0C472h]
  27. .text:00005555555557EE                 shl     edx, 9
  28. .text:00005555555557F1                 or      eax, edx
  29. .text:00005555555557F3                 movzx   edx, byte ptr [rbx+0C0E0h]
  30. .text:00005555555557FA                 shl     edx, 0Ah
  31. .text:00005555555557FD                 or      eax, edx
  32. .text:00005555555557FF                 movzx   edx, byte ptr [rbx+9Ch]
  33. .text:0000555555555806                 shl     edx, 0Bh
  34. .text:0000555555555809                 or      eax, edx
  35. .text:000055555555580B                 mov     [rbx+0C0D2h], eax


Фрагмент тела цикла:
Code:
  1. text:0000555555554827 loc_555555554827:                       ; CODE XREF: sub_5555555547FA+3556j
  2. .text:0000555555554827                 mov     ecx, 0C48Bh
  3. .text:000055555555482C                 lea     rdi, [rsp+0C4B8h+s1]
  4. .text:0000555555554831                 mov     rsi, rbx
  5. .text:0000555555554834                 rep movsb
  6. .text:0000555555554836                 mov     al, [rbx+0C17Dh]
  7. .text:000055555555483C                 or      al, [rbx+0C10Ah]
  8. .text:0000555555554842                 mov     [rbx+0C11Dh], al
  9. .text:0000555555554848                 mov     al, [rbx+0C38Ah]
  10. .text:000055555555484E                 xor     eax, 1
  11. .text:0000555555554851                 mov     [rbx+4], al
  12. .text:0000555555554854                 mov     al, [rbx+0C3FAh]
  13. .text:000055555555485A                 xor     eax, 1
  14. .text:000055555555485D                 mov     [rbx+0C11Fh], al
  15. .text:0000555555554863                 mov     al, [rbx+0C478h]
  16. .text:0000555555554869                 or      al, [rbx+0C197h]
  17. .text:000055555555486F                 mov     [rbx+0C3BCh], al
  18. .text:0000555555554875                 mov     al, [rbx+0C359h]
  19. .text:000055555555487B                 and     al, [rbx+0C3FAh]
  20. .text:0000555555554881                 and     al, [rbx+42h]
  21. .text:0000555555554884                 and     al, [rbx+0Ah]
  22. .text:0000555555554887                 and     al, [rbx+0C3B5h]
  23. .text:000055555555488D                 mov     [rbx+4Ah], al
  24. .text:0000555555554890                 mov     al, [rbx+0C347h]
  25. .text:0000555555554896                 or      al, [rbx+0C3F5h]
  26. .text:000055555555489C                 or      al, [rbx+0C407h]
  27. .text:00005555555548A2                 or      al, [rbx+3]
  28. .text:00005555555548A5                 or      al, [rbx+78h]
  29. .text:00005555555548A8                 or      al, [rbx+13h]
  30. .text:00005555555548AB                 or      al, [rbx+0C416h]
  31. .text:00005555555548B1                 mov     [rbx+0C0BAh], al
  32. .text:00005555555548B7                 mov     al, [rbx+0C326h]
  33. .text:00005555555548BD                 or      al, [rbx+0C0DCh]
  34. .text:00005555555548C3                 or      al, [rbx+0C0FEh]
  35. .text:00005555555548C9                 or      al, [rbx+0C0C7h]
  36. .text:00005555555548CF                 or      al, [rbx+0C360h]
  37. .text:00005555555548D5                 or      al, [rbx+0C14Eh]
  38. .text:00005555555548DB                 or      al, [rbx+0C14Bh]
  39. .text:00005555555548E1                 mov     [rbx+6], al
  40. .text:00005555555548E4                 mov     al, [rbx+0C104h]
  41. .text:00005555555548EA                 or      al, [rbx+0C32Eh]
  42. .text:00005555555548F0                 or      al, [rbx+0C47Eh]
  43. .text:00005555555548F6                 or      al, [rbx+74h]
  44. .text:00005555555548F9                 or      al, [rbx+0C39Ah]
  45. .text:00005555555548FF                 or      al, [rbx+0C3AFh]
  46. .text:0000555555554905                 or      al, [rbx+0C3F1h]
  47. .text:000055555555490B                 mov     [rbx+0C3B0h], al
  48. .text:0000555555554911                 mov     al, [rbx+0C0AEh]
  49. .text:0000555555554917                 or      al, [rbx+0C19Dh]
  50. .text:000055555555491D                 mov     [rbx+15h], al
  51. .text:0000555555554920                 mov     al, [rbx+0C139h]
  52. .text:0000555555554926                 and     al, [rbx+6Ah]
  53. .text:0000555555554929                 mov     [rbx+95h], al
  54. .text:000055555555492F                 mov     al, [rbx+0C0B0h]
  55. .text:0000555555554935                 xor     al, [rbx+0C40Fh]
  56. .text:000055555555493B                 mov     [rbx+0C44Bh], al
  57. .text:0000555555554941                 mov     al, [rbx+8Eh]
  58. .text:0000555555554947                 and     al, [rbx+0C367h]
  59. .text:000055555555494D                 mov     [rbx+0C114h], al
  60. .text:0000555555554953                 mov     al, [rbx+0C3FAh]
  61. .text:0000555555554959                 xor     eax, 1
  62. .text:000055555555495C                 mov     [rbx+0C148h], al
  63. .text:0000555555554962                 mov     al, [rbx+0C39Eh]
  64. .text:0000555555554968                 or      al, [rbx+26h]
  65. .text:000055555555496B                 mov     [rbx+0C458h], al
  66. .text:0000555555554971                 mov     al, [rbx+8Eh]
  67. .text:0000555555554977                 and     al, [rbx+17h]
  68. .text:000055555555497A                 mov     [rbx+0C3AFh], al
  69. .text:0000555555554980                 mov     eax, [rbx+0C162h]
  70. .text:0000555555554986                 shl     rax, 5
  71. .text:000055555555498A                 mov     al, [rbp+rax+9]


Далее на основе полученной матрицы помимо дополнительных условных изменений матрицы происходят печать или считывание символов.

Какой метод обфускации используется здесь?


 eXeL@B —› Основной форум —› Метод обфускации в crackme
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати