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

 eXeL@B —› Основной форум —› Взлом крипто алго
Посл.ответ Сообщение


Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 26 октября 2011 16:29 · Поправил: Nightshade
· Личное сообщение · #1

Имеется одна игрушка с шифровкой траффика. Сам файл игры накрыт Энигмой или Enigma Virtual Box.
Сама энигма не страшна, но к файлу приклеена длл. Я не знаю сделано это через виртуал бокс или плагином к энигме. Как вытащить длл я не очень понимаю и не знаю можно ли это сделать. (Возможно это не длл, а навесной протектор). В этой длл есть одна функция для шифровки траффика. А теперь самое интересное... Функи накрыты вм и причем не вм энигмы. Похоже на вмпрот, но могу ошибаться. Сам функционал функции известен. Есть старая версия без вмпрота. Но в функции от версии к версии меняются константы шифровки. Вот их мне и надо достать.
Файлы http://sderni.ru/90693
Интересует RF_Online.bin
Интересующая меня функция по адресу
031D6D9C E8 7F070000 CALL 031D7520 ---VM
Код старой версии
Code:
  1. 02F7EBB7    55              PUSH EBP
  2. 02F7EBB8    8BEC            MOV EBP,ESP
  3. 02F7EBBA    83EC 14         SUB ESP,14
  4. 02F7EBBD    53              PUSH EBX
  5. 02F7EBBE    56              PUSH ESI
  6. 02F7EBBF    57              PUSH EDI
  7. 02F7EBC0    8BD8            MOV EBX,EAX
  8. 02F7EBC2    8BF1            MOV ESI,ECX
  9. 02F7EBC4    E8 AC030000     CALL 02F7EF75
  10. 02F7EBC9    0FB7C0          MOVZX EAX,AX
  11. 02F7EBCC    8945 EC         MOV DWORD PTR SS:[EBP-14],EAX
  12. 02F7EBCF    A1 98B3FA02     MOV EAX,DWORD PTR DS:[2FAB398]
  13. 02F7EBD4    85C0            TEST EAX,EAX
  14. 02F7EBD6    75 08           JNZ SHORT 02F7EBE0
  15. 02F7EBD8    FF15 2420F902   CALL DWORD PTR DS:[2F92024]              ; kernel32.GetTickCount
  16. 02F7EBDE    EB 01           JMP SHORT 02F7EBE1
  17. 02F7EBE0    40              INC EAX
  18. 02F7EBE1    8A4D ED         MOV CL,BYTE PTR SS:[EBP-13]
  19. 02F7EBE4    A3 98B3FA02     MOV DWORD PTR DS:[2FAB398],EAX
  20. 02F7EBE9    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX
  21. 02F7EBEC    8A45 EC         MOV AL,BYTE PTR SS:[EBP-14]
  22. 02F7EBEF    D0C0            ROL AL,1
  23. 02F7EBF1    D0C9            ROR CL,1
  24. 02F7EBF3    2AC8            SUB CL,AL
  25. 02F7EBF5    304E 01         XOR BYTE PTR DS:[ESI+1],CL
  26. 02F7EBF8    33C0            XOR EAX,EAX
  27. 02F7EBFA    33D2            XOR EDX,EDX
  28. 02F7EBFC    C645 FF 00      MOV BYTE PTR SS:[EBP-1],0
  29. 02F7EC00    66:3B03         CMP AX,WORD PTR DS:[EBX]
  30. 02F7EC03    73 35           JNB SHORT 02F7EC3A
  31. 02F7EC05    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
  32. 02F7EC08    0FB7FA          MOVZX EDI,DX
  33. 02F7EC0B    8A0407          MOV AL,BYTE PTR DS:[EDI+EAX]
  34. 02F7EC0E    8ACA            MOV CL,DL
  35. 02F7EC10    D2C8            ROR AL,CL
  36. 02F7EC12    8DBF 6AB3F902   LEA EDI,DWORD PTR DS:[EDI+2F9B36A]
  37. 02F7EC18    2A45 EC         SUB AL,BYTE PTR SS:[EBP-14]
  38. 02F7EC1B    3245 ED         XOR AL,BYTE PTR SS:[EBP-13]
  39. 02F7EC1E    8807            MOV BYTE PTR DS:[EDI],AL
  40. 02F7EC20    66:85D2         TEST DX,DX
  41. 02F7EC23    75 07           JNZ SHORT 02F7EC2C
  42. 02F7EC25    A0 6AB3F902     MOV AL,BYTE PTR DS:[2F9B36A]
  43. 02F7EC2A    EB 05           JMP SHORT 02F7EC31
  44. 02F7EC2C    3245 FF         XOR AL,BYTE PTR SS:[EBP-1]
  45. 02F7EC2F    8807            MOV BYTE PTR DS:[EDI],AL
  46. 02F7EC31    42              INC EDX
  47. 02F7EC32    8845 FF         MOV BYTE PTR SS:[EBP-1],AL
  48. 02F7EC35    66:3B13         CMP DX,WORD PTR DS:[EBX]
  49. 02F7EC38  ^ 72 CB           JB SHORT 02F7EC05
  50. 02F7EC3A    66:8B45 EC      MOV AX,WORD PTR SS:[EBP-14]
  51. 02F7EC3E    66:3145 F0      XOR WORD PTR SS:[EBP-10],AX
  52. 02F7EC42    66:3145 F2      XOR WORD PTR SS:[EBP-E],AX
  53. 02F7EC46    8B45 EC         MOV EAX,DWORD PTR SS:[EBP-14]
  54. 02F7EC49    69C0 01000004   IMUL EAX,EAX,4000001
  55. 02F7EC4F    33D2            XOR EDX,EDX
  56. 02F7EC51    B9 FCFF0300     MOV ECX,3FFFC
  57. 02F7EC56    F7F1            DIV ECX
  58. 02F7EC58    8A06            MOV AL,BYTE PTR DS:[ESI]
  59. 02F7EC5A    0FB64E 01       MOVZX ECX,BYTE PTR DS:[ESI+1]
  60. 02F7EC5E    34 B9           XOR AL,0B9   //!!!!!!!!!!
  61. 02F7EC60    0FB6C0          MOVZX EAX,AL
  62. 02F7EC63    69D2 89140000   IMUL EDX,EDX,1489 //!!!!!!!!!!!!!!
  63. 02F7EC69    8955 EC         MOV DWORD PTR SS:[EBP-14],EDX
  64. 02F7EC6C    C1EA 10         SHR EDX,10
  65. 02F7EC6F    66:03C2         ADD AX,DX
  66. 02F7EC72    66:03C1         ADD AX,CX
  67. 02F7EC75    66:0345 EC      ADD AX,WORD PTR SS:[EBP-14]
  68. 02F7EC79    33C9            XOR ECX,ECX
  69. 02F7EC7B    66:0345 F2      ADD AX,WORD PTR SS:[EBP-E]
  70. 02F7EC7F    66:0345 F0      ADD AX,WORD PTR SS:[EBP-10]
  71. 02F7EC83    66:83F0 68      XOR AX,68 //!!!!!!!!!!!!!!!!!!!
  72. 02F7EC87    0FB7C0          MOVZX EAX,AX
  73. 02F7EC8A    8945 F8         MOV DWORD PTR SS:[EBP-8],EAX
  74. 02F7EC8D    66:3B0B         CMP CX,WORD PTR DS:[EBX]
  75. 02F7EC90    73 1F           JNB SHORT 02F7ECB1
  76. 02F7EC92    0FB70B          MOVZX ECX,WORD PTR DS:[EBX]
  77. 02F7EC95    B8 6AB3F902     MOV EAX,02F9B36A
  78. 02F7EC9A    66:0FBE10       MOVSX DX,BYTE PTR DS:[EAX]
  79. 02F7EC9E    BE E1000000     MOV ESI,0E1 //!!!!!!!!!!!!!!!!!!!!!!!
  80. 02F7ECA3    66:33D6         XOR DX,SI
  81. 02F7ECA6    66:0155 F8      ADD WORD PTR SS:[EBP-8],DX
  82. 02F7ECAA    40              INC EAX
  83. 02F7ECAB    49              DEC ECX
  84. 02F7ECAC  ^ 75 EC           JNZ SHORT 02F7EC9A
  85. 02F7ECAE    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  86. 02F7ECB1    C1E0 05         SHL EAX,5
  87. 02F7ECB4    35 A7000000     XOR EAX,0A7 //!!!!!!!!!!!!!!!!!!!!!
  88. 02F7ECB9    66:8945 F4      MOV WORD PTR SS:[EBP-C],AX
  89. 02F7ECBD    8D75 EC         LEA ESI,DWORD PTR SS:[EBP-14]
  90. 02F7ECC0    BF 60B3F902     MOV EDI,02F9B360
  91. 02F7ECC5    A5              MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
  92. 02F7ECC6    A5              MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
  93. 02F7ECC7    66:A5           MOVS WORD PTR ES:[EDI],WORD PTR DS:[ESI]
  94. 02F7ECC9    66:8303 0A      ADD WORD PTR DS:[EBX],0A
  95. 02F7ECCD    66:8B1B         MOV BX,WORD PTR DS:[EBX]
  96. 02F7ECD0    BE 60B3F902     MOV ESI,02F9B360
  97. 02F7ECD5    56              PUSH ESI
  98. 02F7ECD6    0FB7C3          MOVZX EAX,BX
  99. 02F7ECD9    56              PUSH ESI
  100. 02F7ECDA    E8 3FEAFFFF     CALL 02F7D71E
  101. 02F7ECDF    5F              POP EDI
  102. 02F7ECE0    8BC6            MOV EAX,ESI
  103. 02F7ECE2    5E              POP ESI
  104. 02F7ECE3    5B              POP EBX
  105. 02F7ECE4    C9              LEAVE
  106. 02F7ECE5    C3              RET

Код должен быть идентичен кроме констант.



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 26 октября 2011 17:08
· Личное сообщение · #2

6 байт. Можно побрутить. Или поанализировать.

-----
старый пень


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


Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 26 октября 2011 17:12
· Личное сообщение · #3

Ну брут писать долго... он тут специфичный.
А анализировать что?



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 26 октября 2011 17:34
· Личное сообщение · #4

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

-----
старый пень





Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 26 октября 2011 19:30 · Поправил: Nightshade
· Личное сообщение · #5

Проанализировал код. Для дешифровки нашел все значения. 1489 - совпало. Но нужны еще 4 байта. Для шифровки эти 4 байта как контрольная сумма. Наверное буду писать брут для 4 байт.
Decryption
48 00 01 D2 F6 2D 18 FF 76 E1 E0 BC 20 64 F6 49 00 35 22 82 79 77 F0 75 FD 66 55 FE 52 77 89 7D 22 78 A9 A8 CB DF 8C CB 73 2D 63 DB BB 7F CC AB 14 0B E7 3F CB 66 2B 30 FE C6 43 04 23 5E 6C F1 B2 27 03 BE F0 88 BC FD
After Decryption
3E 00 01 01 FB 04 00 00 1D 19 4C CF B3 35 FF 85 2F 5C F0 66 04 EE 8E CA 00 F7 ED 01 00 37 35 61 33 32 64 34 61 36 64 61 66 66 35 34 38 66 63 66 63 62 34 30 66 65 61 38 33 38 61 30 64 00
Encryption
3E 00 01 01 FB 04 00 00 1D 19 4C CF B3 35 FF 85 2F 5C F0 66 04 EE 8E CA 00 F7 ED 01 00 37 35 61 33 32 64 34 61 36 64 61 66 66 35 34 38 66 63 66 63 62 34 30 66 65 61 38 33 38 61 30 64 00
After Encryption
48 00 01 D2 F6 2D 18 FF 76 E1 E0 BC E0 E4 F6 49 00 35 22 82 79 77 F0 75 FD 66 55 FE 52 77 89 7D 22 78 A9 A8 CB DF 8C CB 73 2D 63 DB BB 7F CC AB 14 0B E7 3F CB 66 2B 30 FE C6 43 04 23 5E 6C F1 B2 27 03 BE F0 88 BC FD




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 29 октября 2011 09:35
· Личное сообщение · #6

Сбрутил константы. Спасибо r_e за мысль


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