Раскриптовка данных SQUARE 128 SHA-256

Тема в разделе "WASM.CRYPTO", создана пользователем Andr_, 2 июн 2010.

  1. Andr_

    Andr_ New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    26
    Добрый день всем! Кто подскажет, где достать реализацию алгоритма на С++. Проблема такая: есть DriveCrypt 4.1. с помощью которого был создан криптованный диск. У диска убился раздел и зашифрованная NTFS (63 сектор). Зашифрованная копия NTFS есть, но она не совпадает с оригинальной (проверено опытным путем - созданием такого же диска). Нужно эту копию расшифровать, пароль есть.
     
  2. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Andr_

    Я не уверен что это та же самая прога но как-то давно я выдергивал данные у некоей схожей проги (у меня папка со связанными с тем делом файлами называетсо "DriverCrypt") - также там убилсо какой-то сектор но пасс естественно был а одмин не делал копии.

    Я преуспел - нашел там какую-то процедурку и в ней проверка (вызывается сотни раз). Финт был ф том чтобы отвечать "OK" на первые 100 или типа запросов (хотя из-за повреждения ответы шли отрицательные) и потом еще типа того - пока крипт не доберецца до непорченных данных и их вытащили какой-то утилитой чтения диска на низком уровне.

    Я счас вижу что я патчил некий "dcr.sys". Вот процедурко - одна из тех что была в моем анализе:

    Код (Text):
    1. ;
    2. ; Sub515C6: called from 520E4 for check passwords?
    3. ; return 0 if password fail, 1 overwise (3-th call from 521F1)
    4. ; Compare massives 0x200 bytes length
    5. ; arg_8, arg_C = ptr's to massives,
    6. ; arg_10, arg_14 - additional constants for second compare type
    7. 515C6: 55             push        ebp
    8. 515C7: 8BEC           mov         ebp,esp
    9. 515C9: 83EC10         sub         esp,010
    10. 515CC: 53             push        ebx
    11. 515CD: 56             push        esi
    12. 515CE: 57             push        edi
    13. ; loc_10= 1;
    14. 515CF: C745F001000000 mov         d,[ebp][-10],000000001
    15. 515D6: 8B4518         mov         eax,[ebp][18]
    16. 515D9: C780D808000000 mov         d,[eax][000008D8],000000000
    17.  
    18. 515E3: C745F400000000 mov         d,[ebp][-0C],000000000 ;"
    19. 515EA: E903000000     jmp        .0000515F2  ----- (1)
    20.  
    21. ; for (loc_C= 0; loc_C<0x200; loc_C++)
    22. ; {
    23. 515EF: FF45F4         inc         d,[ebp][-0C]
    24. 515F2: 817DF400020000 cmp         d,[ebp][-0C],000000200 ;"
    25. 515F9: 0F8D2A000000   jge        .000051629  ----- (2)
    26. ;   edx= (DWORD)arg_C[loc_C];
    27. 515FF: 8B45F4         mov         eax,[ebp][-0C]
    28. 51602: 8B4D0C         mov         ecx,[ebp][0C]
    29. 51605: 33D2           xor         edx,edx
    30. 51607: 8A1408         mov         dl,[eax][ecx]
    31.  
    32. ;   ebx= (DWORD)arg_8[loc_C];
    33. 5160A: 8B45F4         mov         eax,[ebp][-0C]
    34. 5160D: 8B4D08         mov         ecx,[ebp][08]
    35. 51610: 33DB           xor         ebx,ebx
    36. 51612: 8A1C08         mov         bl,[eax][ecx]
    37.  
    38. ;   if ( arg_C[loc_C] == arg_8[loc_C] ) goto L51624;
    39. 51615: 3BD3           cmp         edx,ebx
    40. 51617: 0F8407000000   je         .000051624  ----- (1)
    Если это относицца к твоему случаю я могу попробовать дать больше инфы...
     
  3. Andr_

    Andr_ New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    26
    Чем больше инфы, тем лучше. Я пробовал копию криптованной NTFS копирнуть в 63 сектор, восстановил руками раздел - диск видится, но пароль не подходит. Я так понял у тебя дамп "dcr.sys"?
    Какая версия DC? Я не нашел в файле такой процедуры.
     
  4. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Не так как я - я пошел по пути фикса проверки (проверок) на начальном этапе когда эта (твоя тоже?) утиль проверяет пасс и дешифрует (?) с проверкой начальные данные (твой "63 сектор"?). Идея в том чтобы скипануть все ошибки на начальном этапе и дать ему возможность дешифрануть собственно основную часть раздела. После этого весь раздел стал виден утилитой восстановления дисков. У нас заказ был очень срочный и выбрал этот путь...

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

    Я не помню, это было несколько лет назад. Ты как искал? Рекомендую искать по паттернам из моих заметок устраняя зависимость на смещения.

    Код (Text):
    1. ; ***
    2. ; dcr.sys correction
    3. ; ***
    4. .386
    5. .model flat,stdcall
    6. ...
    7.   invoke SetFilePointer,LogDescr,0,NULL,FILE_END
    8.  
    9. ; Start patch
    10. ;
    11. .data
    12. StartMsg db 'Start process, trying open dcr.sys...',0Dh,0Ah,0
    13. .code
    14.   push offset StartMsg
    15.   call Write_Log    
    16.   call Write_EndStr_ToLog
    17.  
    18. ; Open dcr.sys
    19. .data
    20. DCRname db 'dcr.sys',0
    21. .data?
    22. DCRDescr dd ?
    23. .code
    24.   invoke CreateFile,offset DCRname,GENERIC_WRITE,FILE_SHARE_WRITE+FILE_SHARE_READ,\
    25.       0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
    26.   mov  DCRDescr,eax          ; Save file descriptor
    27. ...
    28. @@DCRFileOpen:
    29.  
    30. ; Set file pointer, write code block
    31.   FILE_POSITION equ 0D840h
    32.   BLOCK_SIZE equ 1D919h-1D840h
    33.  
    34.   invoke SetFilePointer,DCRDescr,FILE_POSITION,NULL,FILE_BEGIN
    35.  
    36.   jmp  @@SkipNewCode
    37.  
    38. @@NewCode_sub_1D840:
    39.  
    40.   push ebp
    41.   mov  ebp,esp
    42.   sub  esp,010h
    43.  
    44.   pushad
    45.   mov  eax,[ebp][18h]
    46.   mov  byte ptr [eax][000002CBh],000
    47.  
    48.   mov  ecx,200h
    49.   mov  esi,[ebp][08]                
    50.   mov  edi,[ebp][0Ch]
    51.   repe cmpsb
    52.   jnz  L1D89E
    53.   mov  dword ptr [ebp][-08],1
    54.   jmp  L1D913
    55.  
    56. L1D89E:
    57.  
    58.   mov   eax,[ebp][18h]
    59.   mov   byte ptr [eax][000002CBh],001
    60.  
    61.   mov   ecx,200h
    62.   mov   esi,[ebp][08]
    63.   mov   edi,[ebp][0Ch]
    64.   mov   dword ptr [ebp][-08],1
    65.  
    66. @@CompareSecType:
    67.  
    68.   mov   al,[esi]
    69.   inc   esi
    70.   mov   dl,[edi]
    71.   inc   edi
    72.   sub   al,[ebp][10h]
    73.   sub   dl,[ebp][14h]
    74.   cmp   al,dl        
    75.   je    L1D90E
    76.  
    77.   mov   dword ptr [ebp][-08],000000000
    78.  
    79. L1D90E:
    80.  
    81.   loop  @@CompareSecType
    82.  
    83.   call  L1D8E8
    84.  
    85. L1D8E8:
    86.  
    87.   pop   ebx
    88.   inc   dword ptr [ebx+(offset L1D919 - offset L1D8E8)]
    89.   mov   eax,[ebx+(offset L1D919 - offset L1D8E8)]
    90.   cmp   ax,0277h
    91.   jz    @@MakeOKAns
    92.   cmp   ax,0278h
    93.   jz    @@MakeOKAns
    94.   cmp   ax,0279h
    95.   jz    @@MakeOKAns
    96.   cmp   ax,02E0h
    97.   jz    @@MakeOKAns
    98.   cmp   ax,02E1h
    99.   jz    @@MakeOKAns
    100.   cmp   ax,02E2h
    101.   jnz   @@NoMakeOKAns
    102.  
    103. @@MakeOKAns:
    104.  
    105.   mov   dword ptr [ebp][-08],1
    106.  
    107. @@NoMakeOKAns:
    108.  
    109. L1D913:
    110.  
    111.   popad
    112.  
    113.   mov  eax,dword ptr [ebp][-08]
    114.  
    115.   mov  esp,ebp
    116.   pop  ebp
    117.   retn 00014h
    118.  
    119. L1D919:
    120.  
    121.   dd 0
    122.  
    123. @@NewCode_sub_1D840_End:
    124.  
    125. LatsNops db BLOCK_SIZE dup(90h)
    126.  
    127. @@SkipNewCode:
    128.  
    129.   push NULL
    130.   push offset bWrite
    131.   push BLOCK_SIZE+4 ; Len
    132.   push offset @@NewCode_sub_1D840 ; Addr
    133.   push DCRDescr
    134.   call WriteFile
    135.  
    136.   invoke CloseHandle,DCRDescr
     
  5. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    И наконец куски dcr.sys. Это даже не IDA а Hiview :derisive:

    Код (Text):
    1. ;
    2. ; Sub: called from 48F3A for check passwords?
    3. ; return 0 if password fail, 1 overwise
    4. ;
    5. 4877A: 55             push        ebp
    6. 4877B: 8BEC           mov         ebp,esp
    7. 4877D: 83EC14         sub         esp,014 ;""
    8. 48780: 53             push        ebx
    9. 48781: 56             push        esi
    10. 48782: 57             push        edi
    11. 48783: A100000000     mov         eax,[00000000]
    12. 48788: 83E007         and         eax,007 ;""
    13. 4878B: 8945F4         mov         [ebp][-0C],eax
    14. 4878E: 8B45F4         mov         eax,[ebp][-0C]
    15. 48791: 8B048500000000 mov         eax,[00000000][eax]*4
    16. 48798: 8945EC         mov         [ebp][-14],eax
    17. 4879B: 8B45F4         mov         eax,[ebp][-0C]
    18. 4879E: 8B048500000000 mov         eax,[00000000][eax]*4
    19. 487A5: 8945F0         mov         [ebp][-10],eax
    20. 487A8: 8B45F4         mov         eax,[ebp][-0C]
    21. 487AB: 8B048500000000 mov         eax,[00000000][eax]*4
    22. 487B2: 8945F8         mov         [ebp][-08],eax
    23. 487B5: 8B450C         mov         eax,[ebp][0C]
    24. 487B8: 0554080000     add         eax,000000854 ;"  T"
    25. 487BD: C70000000000   mov         d,[eax],000000000 ;"
    26. 487C3: C7400400000000 mov         d,[eax][04],000000000
    27. 487CA: C7400800000000 mov         d,[eax][08],000000000
    28. 487D1: C7400C00000000 mov         d,[eax][0C],000000000
    29. 487D8: C7401000000000 mov         d,[eax][10],000000000
    30. 487DF: 837D1000       cmp         d,[ebp][10],000 ;" "
    31. 487E3: 0F843A000000   je         .000048823  ----- (1)
    32. 487E9: 8B4510         mov         eax,[ebp][10]
    33. 487EC: 50             push        eax
    34. 487ED: 8B450C         mov         eax,[ebp][0C]
    35. 487F0: 0554080000     add         eax,000000854 ;"  T"
    36. 487F5: 50             push        eax
    37. 487F6: 8B45EC         mov         eax,[ebp][-14]
    38. 487F9: 50             push        eax
    39. 487FA: 8B450C         mov         eax,[ebp][0C]
    40. 487FD: 50             push        eax
    41. 487FE: 8B4508         mov         eax,[ebp][08]
    42. 48801: 50             push        eax
    43. 48802: E8EA990000     call       .0000521F1  ----- (2)
    44. 48807: 83C414         add         esp,014 ;""
    45. 4880A: 85C0           test        eax,eax
    46. 4880C: 0F840A000000   je         .00004881C  ----- (3)
    47. 48812: B801000000     mov         eax,000000001 ;"   "
    48. 48817: E99F000000     jmp        .0000488BB  ----- (4)
    49. 4881C: 33C0           xor         eax,eax
    50. 4881E: E998000000     jmp        .0000488BB  ----- (5)
    51. 48823: C745FC00000000 mov         d,[ebp][-04],000000000
    52. 4882A: E903000000     jmp        .000048832  ----- (1)
    53. 4882F: FF45FC         inc         d,[ebp][-04]
    54. 48832: 837DFC08       cmp         d,[ebp][-04],008 ;""
    55. 48836: 0F8D78000000   jge        .0000488B4  ----- (2)
    56. 4883C: 8B45F4         mov         eax,[ebp][-0C]
    57. 4883F: 8B048500000000 mov         eax,[00000000][eax]*4
    58. 48846: 8945EC         mov         [ebp][-14],eax
    59. 48849: 8B45F4         mov         eax,[ebp][-0C]
    60. 4884C: 8B048500000000 mov         eax,[00000000][eax]*4
    61. 48853: 8945F0         mov         [ebp][-10],eax
    62.  
    63. ; memcpy(LocBuff, MD5Hash, 20);
    64. ; for password "12345678"  -> 78,4A,62,BB,9C,88...
    65. ; for password "123456789" -> 2C,8F,DE,F0,EC,9E...
    66. 48856: 8B7D0C         mov         edi,[ebp][0C]
    67. 48859: 81C754080000   add         edi,000000854 ;"  T"
    68. 4885F: 8B75F0         mov         esi,[ebp][-10]
    69. 48862: B905000000     mov         ecx,000000005 ;"   "
    70. 48867: F3A5           repe        movsd
    71. 48869: 8B7D0C         mov         edi,[ebp][0C]
    72. 4886C: 81C7B4080000   add         edi,0000008B4 ;"  ´"
    73. 48872: 8B75F8         mov         esi,[ebp][-08]
    74. 48875: B908000000     mov         ecx,000000008 ;"   "
    75. 4887A: F3A5           repe        movsd
    76. 4887C: 6A00           push        000
    77. 4887E: 8B45F0         mov         eax,[ebp][-10]
    78. 48881: 50             push        eax
    79. 48882: 8B45EC         mov         eax,[ebp][-14]
    80. 48885: 50             push        eax
    81. 48886: 8B450C         mov         eax,[ebp][0C]
    82. 48889: 50             push        eax
    83. 4888A: 8B4508         mov         eax,[ebp][08]
    84. 4888D: 50             push        eax
    85. 4888E: E85E990000     call       .0000521F1  -----
    86.  
    87. ; if eax=1, password ok
    88. 48893: 83C414         add         esp,014 ;""
    89. 48896: 85C0           test        eax,eax
    90. 48898: 0F840A000000   je         .0000488A8  -----
    91. 4889E: B801000000     mov         eax,000000001 ;"
    92. 488A3: E913000000     jmp        .0000488BB  -----
    93. 488A8: FF45F4         inc         d,[ebp][-0C]
    94. 488AB: 8365F407       and         d,[ebp][-0C],007
    95. 488AF: E97BFFFFFF     jmp        .00004882F  -----
    96. 488B4: 33C0           xor         eax,eax
    97. 488B6: E900000000     jmp        .0000488BB  -----
    98. 488BB: 5F             pop         edi
    99. 488BC: 5E             pop         esi
    100. 488BD: 5B             pop         ebx
    101. 488BE: C9             leave
    102. 488BF: C3             retn
    103.  
    104.  
    105. ;
    106. ; Sub: called from 490D9 for check passwords?
    107. ; return 0 if password fail, 1 overwise
    108. ;
    109. 48F3A: 55             push        ebp
    110. 48F3B: 8BEC           mov         ebp,esp
    111. 48F3D: 83EC18         sub         esp,018 ;""
    112. 48F40: 53             push        ebx
    113. 48F41: 56             push        esi
    114. 48F42: 57             push        edi
    115. 48F43: C745F800000000 mov         d,[ebp][-08],000000000
    116. 48F4A: 8B4508         mov         eax,[ebp][08]
    117. 48F4D: 33C9           xor         ecx,ecx
    118. 48F4F: 8A4840         mov         cl,[eax][40]
    119.  
    120. ; 0/0
    121. 48F52: 85C9           test        ecx,ecx
    122. 48F54: 0F8547010000   jne        .0000490A1  ----- (1)
    123. 48F5A: 8B4508         mov         eax,[ebp][08]
    124. 48F5D: 8B4004         mov         eax,[eax][04]
    125. 48F60: 83C064         add         eax,064 ;"d"
    126. 48F63: 668945F0       mov         [ebp][-10],ax
    127. 48F67: 8B4508         mov         eax,[ebp][08]
    128. 48F6A: 33C9           xor         ecx,ecx
    129. 48F6C: 8A4877         mov         cl,[eax][77]
    130. 48F6F: 8B45F0         mov         eax,[ebp][-10]
    131. 48F72: 25FFFF0000     and         eax,00000FFFF ;"  ÿÿ"
    132. 48F77: 8D04C8         lea         eax,[eax][ecx]*8
    133. 48F7A: 83C058         add         eax,058 ;"X"
    134. 48F7D: 668945FC       mov         [ebp][-04],ax
    135. 48F81: 6A1B           push        01B
    136. 48F83: 8B45F0         mov         eax,[ebp][-10]
    137. 48F86: 25FFFF0000     and         eax,00000FFFF
    138. 48F8B: 50             push        eax
    139. 48F8C: 8B45FC         mov         eax,[ebp][-04]
    140. 48F8F: 50             push        eax
    141. 48F90: E88E59FEFF     call       .00002E923  ---
    142. 48F95: 83C40C         add         esp,00C ;" "
    143. 48F98: 8945F4         mov         [ebp][-0C],eax
    144. 48F9B: 8B45F4         mov         eax,[ebp][-0C]
    145. 48F9E: 83C064         add         eax,064 ;"d"
    146. 48FA1: 8945EC         mov         [ebp][-14],eax
    147. 48FA4: 8B45F0         mov         eax,[ebp][-10]
    148. 48FA7: 25FFFF0000     and         eax,00000FFFF
    149. 48FAC: 8B4DEC         mov         ecx,[ebp][-14]
    150. 48FAF: 894120         mov         [ecx][20],eax
    151. 48FB2: 8B4508         mov         eax,[ebp][08]
    152. 48FB5: A304000000     mov         [00000004],eax
    153.  
    154. ; call 4877A for check password?
    155. 48FBA: 8B4510         mov         eax,[ebp][10]
    156. 48FBD: 50             push        eax
    157. 48FBE: 8B450C         mov         eax,[ebp][0C]
    158. 48FC1: 50             push        eax
    159. 48FC2: 8B45F4         mov         eax,[ebp][-0C]
    160. 48FC5: 50             push        eax
    161. 48FC6: E8AFF7FFFF     call       .00004877A  ----- (1)
    162. 48FCB: 83C40C         add         esp,00C ;" "
    163.  
    164. ; 0 if password fail, 1 overwise
    165. 48FCE: 85C0           test        eax,eax
    166. 48FD0: 0F8479000000   je         .00004904F  ----- (2)
    167. 48FD6: 8B4510         mov         eax,[ebp][10]
    168. 48FD9: 50             push        eax
    169. 48FDA: 8B450C         mov         eax,[ebp][0C]
    170. 48FDD: 50             push        eax
    171. 48FDE: 8B4508         mov         eax,[ebp][08]
    172. 48FE1: 50             push        eax
    173. 48FE2: E8F5EDFFFF     call       .000047DDC  ----- (3)
    174. 48FE7: 83C40C         add         esp,00C ;" "
    175. 48FEA: 85C0           test        eax,eax
    176. 48FEC: 0F8533000000   jne        .000049025  ----- (4)
    177. 48FF2: C745F801000000 mov         d,[ebp][-08],000000001
    178. 48FF9: 8B450C         mov         eax,[ebp][0C]
    179. 48FFC: 8B802C080000   mov         eax,[eax][0000082C]
    180. 49002: 50             push        eax
    181. 49003: E834AC0000     call       .000053C3C  ----- (5)
    182. 49008: 83C404         add         esp,004 ;""
    183. 4900B: 85C0           test        eax,eax
    184. 4900D: 0F850D000000   jne        .000049020  ----- (1)
    185. 49013: 8B450C         mov         eax,[ebp][0C]
    186. 49016: 81883808000000 or          d,[eax][00000838],040000000
    187. 49020: E925000000     jmp        .00004904A  ----- (2)
    188. 49025: 8B7D0C         mov         edi,[ebp][0C]
    189. 49028: 33C0           xor         eax,eax
    190. 4902A: B90F030000     mov         ecx,00000030F ;"  "
    191. 4902F: F3AB           repe        stosd
    192. 49031: 66AB           stosw
    193. 49033: AA             stosb
    194. 49034: 8B450C         mov         eax,[ebp][0C]
    195. 49037: C74020FFFFFF7F mov         d,[eax][20],07FFFFFFF ;"ÿÿ
    196. 4903E: C745F8FFFFFFFF mov         d,[ebp][-08],0FFFFFFFF ;"ÿÿ
    197. 49045: E8FFF6FFFF     call       .000048749  ----- (3)
    198. 4904A: E938000000     jmp        .000049087  ----- (4)
    199. 4904F: 8B450C         mov         eax,[ebp][0C]
    200. 49052: 8B80A4080000   mov         eax,[eax][000008A4]
    201. 49058: 8945E8         mov         [ebp][-18],eax
    202. 4905B: 8B7D0C         mov         edi,[ebp][0C]
    203. 4905E: 33C0           xor         eax,eax
    204. 49060: B90F030000     mov         ecx,00000030F ;"  "
    205. 49065: F3AB           repe        stosd
    206. 49067: 66AB           stosw
    207. 49069: AA             stosb
    208. 4906A: 8B450C         mov         eax,[ebp][0C]
    209. 4906D: C74020FFFFFF7F mov         d,[eax][20],07FFFFFFF
    210. 49074: 8B45E8         mov         eax,[ebp][-18]
    211. 49077: 8B4D0C         mov         ecx,[ebp][0C]
    212. 4907A: 8981A4080000   mov         [ecx][000008A4],eax
    213. 49080: C745F800000000 mov         d,[ebp][-08],000000000
    214. 49087: 8B45EC         mov         eax,[ebp][-14]
    215. 4908A: 8B4DEC         mov         ecx,[ebp][-14]
    216. 4908D: 2B4120         sub         eax,[ecx][20]
    217. 49090: 50             push        eax
    218. 49091: E80059FEFF     call       .00002E996  ----- (1)
    219. 49096: 83C404         add         esp,004 ;""
    220. 49099: 8B45F8         mov         eax,[ebp][-08]
    221. 4909C: E900000000     jmp        .0000490A1  ----- (2)
    222. 490A1: 5F             pop         edi
    223. 490A2: 5E             pop         esi
    224. 490A3: 5B             pop         ebx
    225. 490A4: C9             leave
    226. 490A5: C3             retn
    227.  
    228. ;
    229. ; Code: check password, etc
    230. ;
    231. 490D9: 55             push        ebp
    232. 490DA: 8BEC           mov         ebp,esp
    233. 490DC: 83EC34         sub         esp,034
    234. 490DF: 53             push        ebx
    235. 490E0: 56             push        esi
    236. 490E1: 57             push        edi
    237. 490E2: C745E800000000 mov         d,[ebp][-18],000000000
    238. 490E9: C745F000000000 mov         d,[ebp][-10],000000000
    239. 490F0: C645F881       mov         b,[ebp][-08],081
    240. 490F4: 8B4508         mov         eax,[ebp][08]
    241. 490F7: 8B00           mov         eax,[eax]
    242. 490F9: 8945EC         mov         [ebp][-14],eax
    243. 490FC: E888290000     call       .00004BA89  ----- (1)
    244. 49101: 8B4508         mov         eax,[ebp][08]
    245. 49104: 8B4014         mov         eax,[eax][14]
    246. 49107: A300000000     mov         [00000000],eax
    247. 4910C: C70500000000FF mov         d,[00000000],0FFFFFFFF
    248. 49116: C745F400000000 mov         d,[ebp][-0C],000000000
    249. 4911D: E903000000     jmp        .000049125  ----- (2)
    250. 49122: FF45F4         inc         d,[ebp][-0C]
    251. 49125: 837DF408       cmp         d,[ebp][-0C],008
    252. 49129: 0F8D70000000   jge        .00004919F  ----- (3)
    253. 4912F: 8B45F4         mov         eax,[ebp][-0C]
    254. 49132: 8B048500000000 mov         eax,[00000000][eax]*4
    255. 49139: 8945E0         mov         [ebp][-20],eax
    256. 4913C: 8B4508         mov         eax,[ebp][08]
    257. 4913F: 8B4DE0         mov         ecx,[ebp][-20]
    258. 49142: 8B4010         mov         eax,[eax][10]
    259. 49145: 81C13F0A0000   add         ecx,000000A3F ;"  ?"
    260. 4914B: 8A10           mov         dl,[eax]
    261. 4914D: 3A11           cmp         dl,[ecx]
    262. 4914F: 0F8529000000   jne        .00004917E  ----- (1)
    263. 49155: 0AD2           or          dl,dl
    264. 49157: 0F841A000000   je         .000049177  ----- (2)
    265. 4915D: 8A5001         mov         dl,[eax][01]
    266. 49160: 3A5101         cmp         dl,[ecx][01]
    267. 49163: 0F8515000000   jne        .00004917E  ----- (3)
    268. 49169: 83C002         add         eax,002 ;""
    269. 4916C: 83C102         add         ecx,002 ;""
    270. 4916F: 0AD2           or          dl,dl
    271. 49171: 0F85D4FFFFFF   jne        .00004914B  ----- (4)
    272. 49177: 33C0           xor         eax,eax
    273. 49179: E905000000     jmp        .000049183  ----- (5)
    274. 4917E: 1BC0           sbb         eax,eax
    275. 49180: 83D8FF         sbb         eax,-001 ;""
    276. 49183: 85C0           test        eax,eax
    277. 49185: 0F850F000000   jne        .00004919A  ----- (1)
    278. 4918B: 8B4508         mov         eax,[ebp][08]
    279. 4918E: C7401C83000000 mov         d,[eax][1C],000000083
    280. 49195: E9F6030000     jmp        .000049590  ----- (2)
    281. 4919A: E983FFFFFF     jmp        .000049122  ----- (3)
    282. 4919F: C745FC01000000 mov         d,[ebp][-04],000000001
    283. 491A6: 8B4508         mov         eax,[ebp][08]
    284. 491A9: 833800         cmp         d,[eax],000 ;" "
    285. 491AC: 0F8416000000   je         .0000491C8  ----- (4)
    286. 491B2: 8B4508         mov         eax,[ebp][08]
    287. 491B5: 8B00           mov         eax,[eax]
    288. 491B7: F6402002       test        b,[eax][20],002 ;""
    289. 491BB: 0F8507000000   jne        .0000491C8  ----- (5)
    290. 491C1: C745FC00000000 mov         d,[ebp][-04],000000000
    291. 491C8: 837DFC00       cmp         d,[ebp][-04],000 ;" "
    292. 491CC: 0F84B7000000   je         .000049289  ----- (6)
    293. 491D2: 8D45E4         lea         eax,[ebp][-1C]
    294. 491D5: 50             push        eax
    295. 491D6: 8D45D0         lea         eax,[ebp][-30]
    296. 491D9: 50             push        eax
    297. 491DA: 8B4508         mov         eax,[ebp][08]
    298. 491DD: 8B4010         mov         eax,[eax][10]
    299. 491E0: 50             push        eax
    300. 491E1: 6881000000     push        000000081 ;"   _"
    301. 491E6: 6A01           push        001
    302. 491E8: 6A00           push        000
    303. 491EA: 6A12           push        012
    304. 491EC: 6A00           push        000
    305. 491EE: E822A90000     call       .000053B15  ----- (1)
    306. 491F3: 83C420         add         esp,020 ;" "
    307. 491F6: 8945D8         mov         [ebp][-28],eax
    308. 491F9: 837DD800       cmp         d,[ebp][-28],000 ;" "
    309. 491FD: 0F846B000000   je         .00004926E  ----- (2)
    310. 49203: C745FC00000000 mov         d,[ebp][-04],000000000
    311. 4920A: 8D45E4         lea         eax,[ebp][-1C]
    312. 4920D: 50             push        eax
    313. 4920E: 8D45D0         lea         eax,[ebp][-30]
    314. 49211: 50             push        eax
    315. 49212: 8B4508         mov         eax,[ebp][08]
    316. 49215: 8B4010         mov         eax,[eax][10]
    317. 49218: 50             push        eax
    318. 49219: 6881000000     push        000000081 ;"   _"
    319. 4921E: 6A01           push        001
    320. 49220: 6A00           push        000
    321. 49222: 6A30           push        030
    322. 49224: 6A00           push        000
    323. 49226: E8EAA80000     call       .000053B15  -----
    324. 4922B: 83C420         add         esp,020 ;" "
    325. 4922E: 8945D8         mov         [ebp][-28],eax
    326. 49231: 837DD800       cmp         d,[ebp][-28],000
    327. 49235: 0F8533000000   jne        .00004926E  -----
    328. 4923B: A100000000     mov         eax,[00000000]
    329. 49240: 3945D0         cmp         [ebp][-30],eax
    330. 49243: 0F8225000000   jb         .00004926E  -----
    331. 49249: A100000000     mov         eax,[00000000]
    332. 4924E: 3945D0         cmp         [ebp][-30],eax
    333. 49251: 0F8717000000   ja         .00004926E  -----
    334. 49257: 8B45D0         mov         eax,[ebp][-30]
    335. 4925A: 8945D4         mov         [ebp][-2C],eax
    336. 4925D: 8B45D4         mov         eax,[ebp][-2C]
    337. 49260: 0FBF4006       movsx       eax,w,[eax][06]
    338. 49264: 83C801         or          eax,001 ;""
    339. 49267: 8B4DD4         mov         ecx,[ebp][-2C]
    340. 4926A: 66894106       mov         [ecx][06],ax
    341. 4926E: 837DD800       cmp         d,[ebp][-28],000
    342. 49272: 0F850C000000   jne        .000049284  -----
    343. 49278: 8B45D0         mov         eax,[ebp][-30]
    344. 4927B: 50             push        eax
    345. 4927C: E825FEFFFF     call       .0000490A6  -----
    346. 49281: 83C404         add         esp,004 ;""
    347. 49284: E93D000000     jmp        .0000492C6  -----
    348. 49289: 8D45E4         lea         eax,[ebp][-1C]
    349. 4928C: 50             push        eax
    350. 4928D: 8D45D0         lea         eax,[ebp][-30]
    351. 49290: 50             push        eax
    352. 49291: 8B4508         mov         eax,[ebp][08]
    353. 49294: 8B4010         mov         eax,[eax][10]
    354. 49297: 50             push        eax
    355. 49298: 6881000000     push        000000081 ;"   _
    356. 4929D: 6A01           push        001
    357. 4929F: 6A00           push        000
    358. 492A1: 6A30           push        030
    359. 492A3: 6A00           push        000
    360. 492A5: E86BA80000     call       .000053B15  -----
    361. 492AA: 83C420         add         esp,020 ;" "
    362. 492AD: 8945D8         mov         [ebp][-28],eax
    363. 492B0: 837DD800       cmp         d,[ebp][-28],000
    364. 492B4: 0F850C000000   jne        .0000492C6  -----
    365. 492BA: 8B45D0         mov         eax,[ebp][-30]
    366. 492BD: 50             push        eax
    367. 492BE: E8E3FDFFFF     call       .0000490A6  -----
    368. 492C3: 83C404         add         esp,004 ;""
    369. 492C6: 837DD800       cmp         d,[ebp][-28],000 ;" "
    370. 492CA: 0F8437000000   je         .000049307  ----- (1)
    371. 492D0: 8B4508         mov         eax,[ebp][08]
    372. 492D3: C7401C01000000 mov         d,[eax][1C],000000001
    373. 492DA: 817DD8C9000000 cmp         d,[ebp][-28],0000000C9
    374. 492E1: 0F850A000000   jne        .0000492F1  ----- (2)
    375. 492E7: 8B4508         mov         eax,[ebp][08]
    376. 492EA: 81481C00000040 or          d,[eax][1C],040000000
    377. 492F1: BE00000000     mov         esi,000000000 ;"    "
    378. 492F6: BF00000000     mov         edi,000000000 ;"    "
    379. 492FB: B928000000     mov         ecx,000000028 ;"   ("
    380. 49300: F3A5           repe        movsd
    381. 49302: E989020000     jmp        .000049590  ----- (3)
    382.  
    383. 49307: C745F400000000 mov         d,[ebp][-0C],000000000
    384. 4930E: E903000000     jmp        .000049316  ----- (4)
    385.  
    386. ; Cycle for (loc_c=0; loc_c<8; loc_c++)
    387. ; {
    388. 49313: FF45F4         inc         d,[ebp][-0C]
    389. 49316: 837DF408       cmp         d,[ebp][-0C],008 ;""
    390. 4931A: 0F8DF1010000   jge        .000049511  ----- (5)
    391. ;   loc_20= &DataMas[loc_c*4];
    392. 49320: 8B45F4         mov         eax,[ebp][-0C]
    393. 49323: 8B048500000000 mov         eax,[00000000][eax]*4
    394. 4932A: 8945E0         mov         [ebp][-20],eax
    395. ;   if ((dword)*loc_20+0x14 != 0 ) goto L494FD;
    396. 4932D: 8B45E0         mov         eax,[ebp][-20]
    397. 49330: 83781400       cmp         d,[eax][14],000 ;" "
    398. 49334: 0F85C3010000   jne        .0000494FD  ----- (1)
    399. ;   if ((dword)*loc_20+0x28 != 0 ) goto L494FD;
    400. 4933A: 8B45E0         mov         eax,[ebp][-20]
    401. 4933D: 83782800       cmp         d,[eax][28],000 ;" "
    402. 49341: 0F85B6010000   jne        .0000494FD  ----- (2)
    403. ;   UserStruct[+00h];
    404. 49347: 8B4508         mov         eax,[ebp][08]
    405. 4934A: 8B00           mov         eax,[eax]
    406. 4934C: 8B4DE0         mov         ecx,[ebp][-20]
    407. 4934F: 894110         mov         [ecx][10],eax
    408. 49352: 8B45D0         mov         eax,[ebp][-30]
    409. 49355: 8B4DE0         mov         ecx,[ebp][-20]
    410. 49358: 89812C080000   mov         [ecx][0000082C],eax
    411. 4935E: 8B45E0         mov         eax,[ebp][-20]
    412. 49361: 0514090000     add         eax,000000914 ;"      "
    413. 49366: 8B4DE0         mov         ecx,[ebp][-20]
    414. 49369: 894128         mov         [ecx][28],eax
    415. 4936C: 8B45E0         mov         eax,[ebp][-20]
    416. 4936F: C7402000000000 mov         d,[eax][20],000000000
    417. 49376: 8B45E0         mov         eax,[ebp][-20]
    418. 49379: C74024F0FFFF7F mov         d,[eax][24],07FFFFFF0
    419. 49380: 8B45E0         mov         eax,[ebp][-20]
    420. 49383: 8B4028         mov         eax,[eax][28]
    421. 49386: 8945EC         mov         [ebp][-14],eax
    422. 49389: C745F001000000 mov         d,[ebp][-10],000000001
    423. 49390: 8B45EC         mov         eax,[ebp][-14]
    424. 49393: C7402002000000 mov         d,[eax][20],000000002
    425. 4939A: 8B4508         mov         eax,[ebp][08]
    426. 4939D: 833800         cmp         d,[eax],000 ;" "
    427. 493A0: 0F8419000000   je         .0000493BF  ----- (1)
    428. 493A6: 8B4508         mov         eax,[ebp][08]
    429. 493A9: 8B00           mov         eax,[eax]
    430. 493AB: F6402002       test        b,[eax][20],002 ;""
    431. 493AF: 0F850A000000   jne        .0000493BF  ----- (2)
    432. 493B5: 8B45EC         mov         eax,[ebp][-14]
    433. 493B8: C7402000000000 mov         d,[eax][20],000000000
    434. 493BF: 8B4508         mov         eax,[ebp][08]
    435. 493C2: 8B400C         mov         eax,[eax][0C]
    436. 493C5: 8B4DE0         mov         ecx,[ebp][-20]
    437. 493C8: 894108         mov         [ecx][08],eax
    438. 493CB: 8B4508         mov         eax,[ebp][08]
    439.  
    440. ; if ( (DWORD *)UserData[0x20] == NULL ) goto L493F6;
    441. ; jmp in all cases (0)
    442. 493CE: 83782000       cmp         d,[eax][20],000 ;" "
    443. 493D2: 0F841E000000   je         .0000493F6  ----- (3)
    444.  
    445. ; memcpy(LocBuffer, (BYTE PTR *)UserData[0x20], 0x200); (not exec !)
    446. 493D8: 8B4508         mov         eax,[ebp][08]
    447. 493DB: BF00000000     mov         edi,000000000 ;"    "
    448. 493E0: 8B7020         mov         esi,[eax][20]
    449. 493E3: B900020000     mov         ecx,000000200 ;"   "
    450. 493E8: F3A5           repe        movsd
    451. 493EA: C745CC00000000 mov         d,[ebp][-34],000000000 ;"
    452. 493F1: E907000000     jmp        .0000493FD  ----- (1)
    453.  
    454. 493F6: C745CC00000000 mov         d,[ebp][-34],000000000 ;"
    455.  
    456. ; 1 in all cases - jne
    457. 493FD: 837DFC00       cmp         d,[ebp][-04],000 ;" "
    458. 49401: 0F8512000000   jne        .000049419  ----- (2)
    459. 49407: 8B45E0         mov         eax,[ebp][-20]
    460. 4940A: C780AC08000001 mov         d,[eax][000008AC],000000001
    461. 49414: E90D000000     jmp        .000049426  ----- (3)
    462.  
    463. ; call 48F3A for checks (password?)
    464. 49419: 8B45E0         mov         eax,[ebp][-20]
    465. 4941C: C780AC08000000 mov         d,[eax][000008AC],000000000
    466. 49426: 8B45CC         mov         eax,[ebp][-34]
    467. 49429: 50             push        eax
    468. 4942A: 8B45E0         mov         eax,[ebp][-20]
    469. 4942D: 50             push        eax
    470. 4942E: 8B45EC         mov         eax,[ebp][-14]
    471. 49431: 50             push        eax
    472. 49432: E803FBFFFF     call       .000048F3A  ----- (4)
    473. ; eax=0 if password invalid, 1 if ok
    474. 49437: 83C40C         add         esp,00C ;" "
    475. 4943A: 8945DC         mov         [ebp][-24],eax
    476. 4943D: 837DDC00       cmp         d,[ebp][-24],000 ;" "
    477. 49441: 0F84B6000000   je         .0000494FD  ----- (5)
    478. 49447: FA             cli
    479. ; Set global flag in structure: 3 - password? ok
    480. 49448: C745F003000000 mov         d,[ebp][-10],000000003 ;"
    481. 4944F: 8B45F0         mov         eax,[ebp][-10]
    482. ; UserStruct[+1Ch]=3
    483. 49452: 8B4D08         mov         ecx,[ebp][08]
    484. 49455: 89411C         mov         [ecx][1C],eax
    485. 49458: 837DDC00       cmp         d,[ebp][-24],000 ;" "
    486. 4945C: 0F8E9B000000   jle        .0000494FD  ----- (1)
    487. 49462: 8B45F4         mov         eax,[ebp][-0C]
    488. 49465: 8B4D08         mov         ecx,[ebp][08]
    489. 49468: 894118         mov         [ecx][18],eax
    490. 4946B: 8B45E0         mov         eax,[ebp][-20]
    491. 4946E: 8B401C         mov         eax,[eax][1C]
    492. 49471: 8B4D08         mov         ecx,[ebp][08]
    493. 49474: 894114         mov         [ecx][14],eax
    494. 49477: 8B45F0         mov         eax,[ebp][-10]
    495. 4947A: 8B4D08         mov         ecx,[ebp][08]
    496. 4947D: 89411C         mov         [ecx][1C],eax
    497. 49480: 8B45E0         mov         eax,[ebp][-20]
    498. 49483: 81883008000000 or          d,[eax][00000830],000000100
    499. 4948D: 837DCC00       cmp         d,[ebp][-34],000 ;" "
    500. 49491: 0F840D000000   je         .0000494A4  ----- (2)
    501. 49497: 8B45E0         mov         eax,[ebp][-20]
    502. 4949A: 81883008000000 or          d,[eax][00000830],000010000
    503. 494A4: 8B45E0         mov         eax,[ebp][-20]
    504. 494A7: C7401402000000 mov         d,[eax][14],000000002 ;"
    505. 494AE: 8B4508         mov         eax,[ebp][08]
    506. 494B1: 8B7810         mov         edi,[eax][10]
    507. 494B4: B9FFFFFFFF     mov         ecx,0FFFFFFFF
    508. 494B9: 2BC0           sub         eax,eax
    509. 494BB: F2AE           repne       scasb
    510. 494BD: F7D1           not         ecx
    511. 494BF: 2BF9           sub         edi,ecx
    512. 494C1: 8BC1           mov         eax,ecx
    513. 494C3: 8BD7           mov         edx,edi
    514. 494C5: 8B7DE0         mov         edi,[ebp][-20]
    515. 494C8: 81C73F0A0000   add         edi,000000A3F
    516. 494CE: 8BF2           mov         esi,edx
    517. 494D0: C1E902         shr         ecx,002 ;""
    518. 494D3: F3A5           repe        movsd
    519. 494D5: 8BC8           mov         ecx,eax
    520. 494D7: 83E103         and         ecx,003 ;""
    521. 494DA: F3A4           repe        movsb
    522. 494DC: BF00000000     mov         edi,000000000
    523. 494E1: 33C0           xor         eax,eax
    524. 494E3: B928000000     mov         ecx,000000028
    525. 494E8: F3AB           repe        stosd
    526. 494EA: A100000000     mov         eax,[00000000]
    527. 494EF: 8B4DE0         mov         ecx,[ebp][-20]
    528. 494F2: 8981A0080000   mov         [ecx][000008A0],eax
    529. 494F8: E993000000     jmp        .000049590  ----- (1)
    530. 494FD: 837DF000       cmp         d,[ebp][-10],000 ;" "
    531. 49501: 0F8405000000   je         .00004950C  ----- (2)
    532. 49507: E905000000     jmp        .000049511  ----- (3)
    533. 4950C: E902FEFFFF     jmp        .000049313  ----- (4)
    534. 49511: 8B4508         mov         eax,[ebp][08]
    535. 49514: 83780C00       cmp         d,[eax][0C],000 ;" "
    536. 49518: 0F8421000000   je         .00004953F  ----- (5)
    537. 4951E: 833D0000000000 cmp         d,[00000000],000 ;" "
    538. 49525: 0F8514000000   jne        .00004953F  ----- (6)
    539. 4952B: 833D0000000000 cmp         d,[00000000],000 ;" "
    540. 49532: 0F8407000000   je         .00004953F  ----- (7)
    541. 49538: 8145F000010000 add         d,[ebp][-10],000000100
    542. 4953F: 8B45F0         mov         eax,[ebp][-10]
    543. 49542: 8B4D08         mov         ecx,[ebp][08]
    544. 49545: 89411C         mov         [ecx][1C],eax
    545. 49548: 8B45E0         mov         eax,[ebp][-20]
    546. 4954B: 8B4014         mov         eax,[eax][14]
    547. 4954E: 50             push        eax
    548. 4954F: 8B45D0         mov         eax,[ebp][-30]
    549. 49552: 50             push        eax
    550. 49553: E885A60000     call       .000053BDD  ----- (8)
    551. 49558: 83C408         add         esp,008 ;""
    552. 4955B: BE00000000     mov         esi,000000000 ;"    "
    553. 49560: BF00000000     mov         edi,000000000 ;"    "
    554. 49565: B928000000     mov         ecx,000000028 ;"   ("
    555. 4956A: F3A5           repe        movsd
    556. 4956C: 8B4508         mov         eax,[ebp][08]
    557. 4956F: C7402400000000 mov         d,[eax][24],000000000
    558. 49576: 8B45E0         mov         eax,[ebp][-20]
    559. 49579: 83B8A408000000 cmp         d,[eax][000008A4],000
    560. 49580: 0F840A000000   je         .000049590  ----- (1)
    561. 49586: 8B4508         mov         eax,[ebp][08]
    562. 49589: C7402401B00000 mov         d,[eax][24],00000B001
    563. 49590: 5F             pop         edi
    564. 49591: 5E             pop         esi
    565. 49592: 5B             pop         ebx
    566. 49593: C9             leave
    567. 49594: C3             retn
    568.  
    569. ;
    570. ; Sub515C6: called from 520E4 for check passwords?
    571. ; return 0 if password fail, 1 overwise (3-th call from 521F1)
    572. ; Compare massives 0x200 bytes length
    573. ; arg_8, arg_C = ptr's to massives,
    574. ; arg_10, arg_14 - additional constants for second compare type
    575. 515C6: 55             push        ebp
    576. 515C7: 8BEC           mov         ebp,esp
    577. 515C9: 83EC10         sub         esp,010
    578. 515CC: 53             push        ebx
    579. 515CD: 56             push        esi
    580. 515CE: 57             push        edi
    581. ; loc_10= 1;
    582. 515CF: C745F001000000 mov         d,[ebp][-10],000000001
    583. 515D6: 8B4518         mov         eax,[ebp][18]
    584. 515D9: C780D808000000 mov         d,[eax][000008D8],000000000
    585.  
    586. 515E3: C745F400000000 mov         d,[ebp][-0C],000000000 ;"
    587. 515EA: E903000000     jmp        .0000515F2  ----- (1)
    588.  
    589. ; for (loc_C= 0; loc_C<0x200; loc_C++)
    590. ; {
    591. 515EF: FF45F4         inc         d,[ebp][-0C]
    592. 515F2: 817DF400020000 cmp         d,[ebp][-0C],000000200 ;"
    593. 515F9: 0F8D2A000000   jge        .000051629  ----- (2)
    594. ;   edx= (DWORD)arg_C[loc_C];
    595. 515FF: 8B45F4         mov         eax,[ebp][-0C]
    596. 51602: 8B4D0C         mov         ecx,[ebp][0C]
    597. 51605: 33D2           xor         edx,edx
    598. 51607: 8A1408         mov         dl,[eax][ecx]
    599.  
    600. ;   ebx= (DWORD)arg_8[loc_C];
    601. 5160A: 8B45F4         mov         eax,[ebp][-0C]
    602. 5160D: 8B4D08         mov         ecx,[ebp][08]
    603. 51610: 33DB           xor         ebx,ebx
    604. 51612: 8A1C08         mov         bl,[eax][ecx]
    605.  
    606. ;   if ( arg_C[loc_C] == arg_8[loc_C] ) goto L51624;
    607. 51615: 3BD3           cmp         edx,ebx
    608. 51617: 0F8407000000   je         .000051624  ----- (1)
    609.  
    610. ;   loc_10= 0;
    611. 5161D: C745F000000000 mov         d,[ebp][-10],000000000 ;"
    612.  
    613. ; }
    614. 51624: E9C6FFFFFF     jmp        .0000515EF ; continue
    615.  
    616. ; if ( !loc_10 ) goto L5163B; // massives are not equal
    617. 51629: 837DF000       cmp         d,[ebp][-10],000
    618. 5162D: 0F8408000000   je         .00005163B  ----- (3)
    619.  
    620. ; return(loc_10); // return(1); - massives ok
    621. 51633: 8B45F0         mov         eax,[ebp][-10]
    622. 51636: E98C000000     jmp        .0000516C7  ----- (4)
    623.  
    624. 5163B: 8B4518         mov         eax,[ebp][18]
    625. 5163E: C780D808000001 mov         d,[eax][000008D8],000000001
    626.  
    627. ; loc_10= 1;
    628. 51648: C745F001000000 mov         d,[ebp][-10],000000001 ;"
    629. ; loc_C= 0;
    630. 5164F: C745F400000000 mov         d,[ebp][-0C],000000000 ;"
    631. 51656: E903000000     jmp        .00005165E  ----- (5)
    632.  
    633. ; for (loc_C= 0; loc_C<0x200; loc_C++)
    634. ; {
    635. 5165B: FF45F4         inc         d,[ebp][-0C]
    636. 5165E: 817DF400020000 cmp         d,[ebp][-0C],000000200
    637. 51665: 0F8D54000000   jge        .0000516BF
    638.  
    639. ;   al=arg_8[loc_C];
    640. 5166B: 8B45F4         mov         eax,[ebp][-0C]
    641. 5166E: 8B4D08         mov         ecx,[ebp][08]
    642. 51671: 8A0408         mov         al,[eax][ecx]
    643.  
    644. ;   loc_4= arg_8[loc_C];
    645. 51674: 8845FC         mov         [ebp][-04],al
    646.  
    647. ;   al=arg_C[loc_C];
    648. 51677: 8B45F4         mov         eax,[ebp][-0C]
    649. 5167A: 8B4D0C         mov         ecx,[ebp][0C]
    650. 5167D: 8A0408         mov         al,[eax][ecx]
    651.  
    652. ;   loc_8= arg_C[loc_C];
    653. 51680: 8845F8         mov         [ebp][-08],al
    654.  
    655. ;   eax= loc_4;
    656. 51683: 33C0           xor         eax,eax
    657. 51685: 8A45FC         mov         al,[ebp][-04]
    658.  
    659. ;   ecx= arg_10;
    660. 51688: 33C9           xor         ecx,ecx
    661. 5168A: 8A4D10         mov         cl,[ebp][10]
    662. 5168D: 2BC1           sub         eax,ecx
    663.  
    664. ;   loc_4-= arg_10;
    665. 5168F: 8845FC         mov         [ebp][-04],al
    666.  
    667. ;   eax= loc_8;
    668. 51692: 33C0           xor         eax,eax
    669. 51694: 8A45F8         mov         al,[ebp][-08]
    670.  
    671. ;   ecx= arg_14;
    672. 51697: 33C9           xor         ecx,ecx
    673. 51699: 8A4D14         mov         cl,[ebp][14]
    674. 5169C: 2BC1           sub         eax,ecx
    675.  
    676. ;   loc_8-= arg_14;
    677. 5169E: 8845F8         mov         [ebp][-08],al
    678.  
    679. ;   if ( loc_4 == loc_8 ) continue;
    680. 516A1: 33C0           xor         eax,eax
    681. 516A3: 8A45F8         mov         al,[ebp][-08]
    682. 516A6: 33C9           xor         ecx,ecx
    683. 516A8: 8A4DFC         mov         cl,[ebp][-04]
    684. 516AB: 3BC1           cmp         eax,ecx
    685. 516AD: 0F8407000000   je         .0000516BA  ----- (1)
    686.  
    687. ;   loc_10= 0;
    688. 516B3: C745F000000000 mov         d,[ebp][-10],000000000
    689.  
    690. 516BA: E99CFFFFFF     jmp        .00005165B  ----- (2)
    691.  
    692. ; return(loc_10);
    693. 516BF: 8B45F0         mov         eax,[ebp][-10]
    694. 516C2: E900000000     jmp        .0000516C7  ----- (3)
    695.  
    696. Exit:
    697. 516C7: 5F             pop         edi
    698. 516C8: 5E             pop         esi
    699. 516C9: 5B             pop         ebx
    700. 516CA: C9             leave
    701. 516CB: C3             retn
    702.  
    703. ;
    704. ; Sub: called from 521F1 for check passwords?
    705. ; return 0 if password fail, 1 overwise
    706. ; arg_10 = ptr to file_data (D6,05,9A,AD,52,1C...)
    707. ; arg_C  = ptr to next checked data - ?
    708. 520E4: 55             push        ebp
    709. 520E5: 8BEC           mov         ebp,esp
    710. 520E7: 53             push        ebx
    711. 520E8: 56             push        esi
    712. 520E9: 57             push        edi
    713.  
    714. ; sub51453(arg_8, 0, 1, arg_10, arg_14); // decode arg_10 - *loc_3C - file data
    715. 520EA: 8B4514         mov         eax,[ebp][14]
    716. 520ED: 50             push        eax
    717. 520EE: 8B4510         mov         eax,[ebp][10]
    718. 520F1: 50             push        eax
    719. 520F2: 6A01           push        001
    720. 520F4: 6A00           push        000
    721. 520F6: 8B4508         mov         eax,[ebp][08]
    722. 520F9: 50             push        eax
    723. 520FA: E854F3FFFF     call       .000051453
    724. 520FF: 83C414         add         esp,014
    725.  
    726. ; sub51453(arg_8, 0, 1, arg_C, arg_14); // decode arg_C
    727. 52102: 8B4514         mov         eax,[ebp][14]
    728. 52105: 50             push        eax
    729. 52106: 8B450C         mov         eax,[ebp][0C]
    730. 52109: 50             push        eax
    731. 5210A: 6A01           push        001
    732. 5210C: 6A01           push        001
    733. 5210E: 8B4508         mov         eax,[ebp][08]
    734. 52111: 50             push        eax
    735. 52112: E83CF3FFFF     call       .000051453
    736. 52117: 83C414         add         esp,014
    737.  
    738. ; sub515C6(arg_C, arg_10, 1, 0, arg_14); // compare decode sectors
    739. 5211A: 8B4514         mov         eax,[ebp][14]
    740. 5211D: 50             push        eax
    741. 5211E: 6A00           push        000
    742. 52120: 6A01           push        001
    743. 52122: 8B4510         mov         eax,[ebp][10]
    744. 52125: 50             push        eax
    745. 52126: 8B450C         mov         eax,[ebp][0C]
    746. 52129: 50             push        eax
    747. 5212A: E897F4FFFF     call       .0000515C6
    748. 5212F: 83C414         add         esp,014
    749.  
    750. ; On a third call we get 1 if password ok, 0 overwise
    751. 52132: 85C0           test        eax,eax
    752. 52134: 0F8419000000   je         .000052153  ----
    753. 5213A: 837D1800       cmp         d,[ebp][18],000
    754. 5213E: 0F840A000000   je         .00005214E  ----
    755.  
    756. ; return(1);
    757. 52144: B801000000     mov         eax,000000001 ;
    758. 52149: E99E000000     jmp        .0000521EC
    759.  
    760. 5214E: E911000000     jmp        .000052164
    761.  
    762. 52153: 837D1800       cmp         d,[ebp][18],000
    763. 52157: 0F8507000000   jne        .000052164
    764.  
    765. ; return(0);
    766. 5215D: 33C0           xor         eax,eax
    767. 5215F: E988000000     jmp        .0000521EC
    768.  
    769. 52164: 8B4514         mov         eax,[ebp][14]
    770. 52167: 50             push        eax
    771. 52168: 8B450C         mov         eax,[ebp][0C]
    772. 5216B: 50             push        eax
    773. 5216C: 6A01           push        001
    774. 5216E: 6A02           push        002
    775. 52170: 8B4508         mov         eax,[ebp][08]
    776. 52173: 50             push        eax
    777. 52174: E8DAF2FFFF     call       .000051453  --
    778. 52179: 83C414         add         esp,014 ;""
    779. 5217C: 8B4514         mov         eax,[ebp][14]
    780. 5217F: 50             push        eax
    781. 52180: 6A00           push        000
    782. 52182: 6A02           push        002
    783. 52184: 8B4510         mov         eax,[ebp][10]
    784. 52187: 50             push        eax
    785. 52188: 8B450C         mov         eax,[ebp][0C]
    786. 5218B: 50             push        eax
    787. 5218C: E835F4FFFF     call       .0000515C6
    788. 52191: 83C414         add         esp,014
    789. 52194: 85C0           test        eax,eax
    790. 52196: 0F840A000000   je         .0000521A6
    791.  
    792. ; return(1);
    793. 5219C: B801000000     mov         eax,000000001
    794. 521A1: E946000000     jmp        .0000521EC
    795.  
    796. 521A6: 837D1800       cmp         d,[ebp][18],000
    797. 521AA: 0F8507000000   jne        .0000521B7
    798.  
    799. ; return(0)
    800. 521B0: 33C0           xor         eax,eax
    801. 521B2: E935000000     jmp        .0000521EC
    802.  
    803. 521B7: 8B4514         mov         eax,[ebp][14]
    804. 521BA: 50             push        eax
    805. 521BB: 8B4510         mov         eax,[ebp][10]
    806. 521BE: 50             push        eax
    807. 521BF: 6A01           push        001
    808. 521C1: 6A01           push        001
    809. 521C3: 8B4508         mov         eax,[ebp][08]
    810. 521C6: 50             push        eax
    811. 521C7: E887F2FFFF     call       .000051453
    812. 521CC: 83C414         add         esp,014
    813. 521CF: 8B4514         mov         eax,[ebp][14]
    814. 521D2: 50             push        eax
    815. 521D3: 6A01           push        001
    816. 521D5: 6A02           push        002
    817. 521D7: 8B4510         mov         eax,[ebp][10]
    818. 521DA: 50             push        eax
    819. 521DB: 8B450C         mov         eax,[ebp][0C]
    820. 521DE: 50             push        eax
    821. 521DF: E8E2F3FFFF     call       .0000515C6
    822. 521E4: 83C414         add         esp,014
    823. 521E7: E900000000     jmp        .0000521EC
    824.  
    825. Exit:
    826. 521EC: 5F             pop         edi
    827. 521ED: 5E             pop         esi
    828. 521EE: 5B             pop         ebx
    829. 521EF: C9             leave
    830. 521F0: C3             retn
    831.  
    832. ;
    833. ; Sub: called from 4877A for check passwords?
    834. ; return 0 if password fail, 1 overwise
    835. ; arg_14 equ [ebp+14h] ; MD5 hash from password
    836. ;
    837. 521F1: 55             push        ebp
    838. 521F2: 8BEC           mov         ebp,esp
    839. 521F4: 83EC44         sub         esp,044 ;"D"
    840. 521F7: 53             push        ebx
    841. 521F8: 56             push        esi
    842. 521F9: 57             push        edi
    843. 521FA: BE00000000     mov         esi,000000000 ;"    "
    844. 521FF: 8D7DD4         lea         edi,[ebp][-2C]
    845. 52202: B908000000     mov         ecx,000000008 ;"   "
    846. 52207: F3A5           repe        movsd
    847. 52209: A4             movsb
    848. 5220A: 8D45F5         lea         eax,[ebp][-0B]
    849. 5220D: 66C7000000     mov         w,[eax],00000 ;"  "
    850. 52212: C6400200       mov         b,[eax][02],000 ;" "
    851. 52216: A100000000     mov         eax,[00000000]
    852. 5221B: 8945C4         mov         [ebp][-3C],eax
    853. 5221E: C745D000000000 mov         d,[ebp][-30],000000000
    854. 52225: 8B4508         mov         eax,[ebp][08]
    855. 52228: 8B8080000000   mov         eax,[eax][00000080]
    856. 5222E: 8945F8         mov         [ebp][-08],eax
    857. 52231: A100000000     mov         eax,[00000000]
    858. 52236: 83C00B         add         eax,00B ;""
    859. 52239: 8945C8         mov         [ebp][-38],eax
    860. 5223C: 8B45C8         mov         eax,[ebp][-38]
    861. 5223F: 8945FC         mov         [ebp][-04],eax
    862. 52242: 8B450C         mov         eax,[ebp][0C]
    863. 52245: 83781400       cmp         d,[eax][14],000
    864. 52249: 0F840A000000   je         .000052259  -----
    865. 5224F: B801000000     mov         eax,000000001 ;"
    866. 52254: E9F8040000     jmp        .000052751  -----
    867. 52259: 837D1800       cmp         d,[ebp][18],000
    868. 5225D: 0F8403000000   je         .000052266  -----
    869. 52263: FF4518         inc         d,[ebp][18]
    870. 52266: 833D0000000000 cmp         d,[00000000],000
    871. 5226D: 0F84D7040000   je         .00005274A  -----
    872. 52273: 6A00           push        000
    873. 52275: 8B450C         mov         eax,[ebp][0C]
    874. 52278: 50             push        eax
    875. 52279: 8B45C4         mov         eax,[ebp][-3C]
    876. 5227C: 50             push        eax
    877. 5227D: 6A04           push        004
    878. 5227F: 8B450C         mov         eax,[ebp][0C]
    879. 52282: 8B4020         mov         eax,[eax][20]
    880. 52285: 50             push        eax
    881. 52286: 8B4508         mov         eax,[ebp][08]
    882. 52289: 50             push        eax
    883. 5228A: E85885FFFF     call       .00004A7E7  ----- (1)
    884. 5228F: 83C418         add         esp,018 ;""
    885. 52292: 8B450C         mov         eax,[ebp][0C]
    886. 52295: C780A408000000 mov         d,[eax][000008A4],000000000
    887. 5229F: 8B450C         mov         eax,[ebp][0C]
    888. 522A2: 50             push        eax
    889. 522A3: 8B450C         mov         eax,[ebp][0C]
    890. 522A6: 05A4080000     add         eax,0000008A4 ;"  ¤"
    891. 522AB: 50             push        eax
    892. 522AC: 8B450C         mov         eax,[ebp][0C]
    893. 522AF: 05A8080000     add         eax,0000008A8 ;"  ¨"
    894. 522B4: 50             push        eax
    895. 522B5: 6800000000     push        000000000 ;"    "
    896. 522BA: 8D45C0         lea         eax,[ebp][-40]
    897. 522BD: 50             push        eax
    898. 522BE: 8B45C4         mov         eax,[ebp][-3C]
    899. 522C1: 50             push        eax
    900. 522C2: E807E6FCFF     call       .0000208CE  ----- (2)
    901. 522C7: 83C418         add         esp,018 ;""
    902. 522CA: 8945CC         mov         [ebp][-34],eax
    903. 522CD: 817DCC01B00000 cmp         d,[ebp][-34],00000B001 ;"
    904. 522D4: 0F8507000000   jne        .0000522E1  ----- (3)
    905. 522DA: 33C0           xor         eax,eax
    906. 522DC: E970040000     jmp        .000052751  ----- (1)
    907. 522E1: 837DCC00       cmp         d,[ebp][-34],000 ;" "
    908. 522E5: 0F8538000000   jne        .000052323  ----- (2)
    909. 522EB: 8B450C         mov         eax,[ebp][0C]
    910. 522EE: 83A038080000FD and         d,[eax][00000838],0FD
    911. 522F5: 8B450C         mov         eax,[ebp][0C]
    912. 522F8: C7401402000000 mov         d,[eax][14],000000002
    913. 522FF: 8B450C         mov         eax,[ebp][0C]
    914. 52302: 83B8AC08000000 cmp         d,[eax][000008AC],000
    915. 52309: 0F840A000000   je         .000052319  ----- (3)
    916. 5230F: 8B450C         mov         eax,[ebp][0C]
    917. 52312: 83883808000002 or          d,[eax][00000838],002
    918. 52319: B801000000     mov         eax,000000001 ;"   "
    919. 5231E: E92E040000     jmp        .000052751  ----- (4)
    920. 52323: 833D0000000000 cmp         d,[00000000],000 ;" "
    921. 5232A: 0F8422000000   je         .000052352  ----- (5)
    922. 52330: 6A00           push        000
    923. 52332: 8B450C         mov         eax,[ebp][0C]
    924. 52335: 50             push        eax
    925. 52336: 8B45C4         mov         eax,[ebp][-3C]
    926. 52339: 50             push        eax
    927. 5233A: 6A04           push        004
    928. 5233C: 8B450C         mov         eax,[ebp][0C]
    929. 5233F: 8B4020         mov         eax,[eax][20]
    930. 52342: 83C00C         add         eax,00C ;" "
    931. 52345: 50             push        eax
    932. 52346: 8B4508         mov         eax,[ebp][08]
    933. 52349: 50             push        eax
    934. 5234A: E89884FFFF     call       .00004A7E7  ----- (1)
    935. 5234F: 83C418         add         esp,018 ;""
    936. 52352: 837D1800       cmp         d,[ebp][18],000 ;" "
    937. 52356: 0F848C000000   je         .0000523E8  ----- (2)
    938. 5235C: 8B7DC4         mov         edi,[ebp][-3C]
    939. 5235F: 8B7518         mov         esi,[ebp][18]
    940. 52362: B9C0010000     mov         ecx,0000001C0 ;"  À"
    941. 52367: F3A5           repe        movsd
    942.  
    943. 52369: C745CC00000000 mov         d,[ebp][-34],000000000 ;"
    944. 52370: E903000000     jmp        .000052378  ----- (3)
    945.  
    946. ; for (loc_34= 0; loc_34<0x100; loc_34++)
    947. ; {
    948. 52375: FF45CC         inc         d,[ebp][-34]
    949. 52378: 817DCC00010000 cmp         d,[ebp][-34],000000100 ;"
    950. 5237F: 0F8D63000000   jge        .0000523E8  ----- (4)
    951. ;   eax=(DWORD)loc_3C[loc_34+0x400];
    952. 52385: 8B45CC         mov         eax,[ebp][-34]
    953. 52388: 8B4DC4         mov         ecx,[ebp][-3C]
    954. 5238B: 0FBE8408000400 movsx       eax,b,[eax][ecx][00000400]
    955. ;   al^=loc_3C[loc_34+0x700];
    956. 52393: 8B4DCC         mov         ecx,[ebp][-34]
    957. 52396: 8B55C4         mov         edx,[ebp][-3C]
    958. 52399: 32841100070000 xor         al,[ecx][edx][00000700]
    959.  
    960. ;   loc_3C[loc_34+0x400]^= loc_3C[loc_34+0x700];
    961. 523A0: 8B4DCC         mov         ecx,[ebp][-34]
    962. 523A3: 8B55C4         mov         edx,[ebp][-3C]
    963. 523A6: 88841100040000 mov         [ecx][edx][00000400],al
    964.  
    965. ;   eax=0x7FF-loc_34;
    966. 523AD: B8FF070000     mov         eax,0000007FF ;"  ÿ"
    967. 523B2: 2B45CC         sub         eax,[ebp][-34]
    968. 523B5: 8B4DC4         mov         ecx,[ebp][-3C]
    969. ;   eax=(DWORD)loc_3C[0x7FF-loc_34];
    970. 523B8: 0FBE0408       movsx       eax,b,[eax][ecx]
    971. 523BC: 8B4DCC         mov         ecx,[ebp][-34]
    972. 523BF: 8B55C4         mov         edx,[ebp][-3C]
    973. ;   loc_3C[loc_34]^= loc_3C[0x7FF-loc_34];
    974. 523C2: 320411         xor         al,[ecx][edx]
    975. 523C5: 8B4DCC         mov         ecx,[ebp][-34]
    976. 523C8: 8B55C4         mov         edx,[ebp][-3C]
    977. 523CB: 880411         mov         [ecx][edx],al
    978. ;   memset(loc_3C[0x700], 'U', 0x40*4);
    979. 523CE: 8B7DC4         mov         edi,[ebp][-3C]
    980. 523D1: 81C700070000   add         edi,000000700 ;"   "
    981. 523D7: B855555555     mov         eax,055555555 ;"UUUU"
    982. 523DC: B940000000     mov         ecx,000000040 ;"   @"
    983. 523E1: F3AB           repe        stosd
    984. 523E3: E98DFFFFFF     jmp        .000052375
    985. ; End of cycle 52375
    986.  
    987. 523E8: C745BC00000000 mov         d,[ebp][-44],000000000
    988. 523EF: E903000000     jmp        .0000523F7  ----- (2)
    989.  
    990. ; // Cycle
    991. ; for (loc_44= 0; loc_44<0x18; loc_44++)
    992. ; {
    993. 523F4: FF45BC         inc         d,[ebp][-44]
    994. 523F7: 837DBC18       cmp         d,[ebp][-44],018
    995. 523FB: 0F8D49030000   jge        .00005274A
    996.  
    997. ;   loc_3C= FileDataPtr;
    998. 52401: A100000000     mov         eax,[00000000]
    999. 52406: 8945C4         mov         [ebp][-3C],eax
    1000.  
    1001. ;   *arg_C= loc_44>>1;
    1002. 52409: 8B45BC         mov         eax,[ebp][-44]
    1003. 5240C: 99             cdq
    1004. 5240D: 2BC2           sub         eax,edx
    1005. 5240F: C1F801         sar         eax,001 ;""
    1006. 52412: 8B4D0C         mov         ecx,[ebp][0C]
    1007. 52415: 8901           mov         [ecx],eax
    1008.  
    1009. ; memcpy(arg_C+2C, loc_3C, 0x200);
    1010. ; loc_3C-> ptr to-> 05,DC,99,A1,3A,A8,32,A2... - file data (from 0 pos)
    1011. 52417: 8B7D0C         mov         edi,[ebp][0C]
    1012. 5241A: 83C72C         add         edi,02C ;","
    1013. 5241D: 8B75C4         mov         esi,[ebp][-3C]
    1014. 52420: B900020000     mov         ecx,000000200 ;"   "
    1015. 52425: F3A5           repe        movsd
    1016.  
    1017. ; loc_3C= (arg_C+0x2C);
    1018. 52427: 8B450C         mov         eax,[ebp][0C]
    1019. 5242A: 83C02C         add         eax,02C ;","
    1020. 5242D: 8945C4         mov         [ebp][-3C],eax
    1021.  
    1022. ; (DWORD *)(arg_C+0x8DC)= 0;
    1023. 52430: 8B450C         mov         eax,[ebp][0C]
    1024. 52433: C780DC08000000 mov         d,[eax][000008DC],000000000
    1025.  
    1026. ; arg_18 is 0
    1027. 5243D: 837D1800       cmp         d,[ebp][18],000 ;" "
    1028. 52441: 0F85FC010000   jne        .000052643  ----- (2)
    1029.  
    1030. ; if ( loc_44 ) goto 524A0;
    1031. 52447: 837DBC00       cmp         d,[ebp][-44],000 ;" "
    1032. 5244B: 0F854F000000   jne        .0000524A0  ----- (1)
    1033.  
    1034. ; loc_44= 1;
    1035. 52451: C745BC01000000 mov         d,[ebp][-44],000000001
    1036.  
    1037. ; memcpy(loc_30, arg_10, 0x28);
    1038. 52458: 8B7DD0         mov         edi,[ebp][-30]
    1039. 5245B: 8B7510         mov         esi,[ebp][10]
    1040. 5245E: B928000000     mov         ecx,000000028 ;"   ("
    1041. 52463: F3A5           repe        movsd
    1042.  
    1043. ; sub51530(loc_30); // read/prepare decrypt data ?
    1044. 52465: 8B45D0         mov         eax,[ebp][-30]
    1045. 52468: 50             push        eax
    1046. 52469: E8C2F0FFFF     call       .000051530  ----- (2)
    1047. 5246E: 83C404         add         esp,004 ;""
    1048.  
    1049. 52471: B420           mov         ah,020 ;" "
    1050.  
    1051. ; esi= loc_3C; // ptr to file data
    1052. 52473: 8B75C4         mov         esi,[ebp][-3C]
    1053. 52476: 8B5DD0         mov         ebx,[ebp][-30]
    1054. 52479: B900080000     mov         ecx,000000800 ;"   "
    1055. 5247E: 33D2           xor         edx,edx
    1056.  
    1057. ; // Decode file data ? By 0x20-buffer from loc_30
    1058. ; for (ecx= 0x800; ecx>0; ecx--)
    1059. ; {
    1060. ;   *esi++^= *ebx[edx++];
    1061. 52480: 8A06           mov         al,[esi]
    1062. 52482: 32041A         xor         al,[edx][ebx]
    1063. 52485: 8806           mov         [esi],al
    1064. 52487: 46             inc         esi
    1065. 52488: FEC2           inc         dl
    1066. ;   if ( edx >= 0x20 ) edx= 0;
    1067. 5248A: 3AD4           cmp         dl,ah
    1068. 5248C: 0F8C02000000   jl         .000052494  ----- (3)
    1069. 52492: 32D2           xor         dl,dl
    1070. ;  }
    1071. 52494: 49             dec         ecx
    1072. 52495: 0F85E5FFFFFF   jne        .000052480  ----- (1)
    1073.  
    1074. 5249B: E99E010000     jmp        .00005263E  ----- (2)
    1075.  
    1076. ; if ( loc_44&0x01 ) goto L52539;
    1077. 524A0: F645BC01       test        b,[ebp][-44],001 ;""
    1078. 524A4: 0F858F000000   jne        .000052539  ----- (3)
    1079.  
    1080. ; On sec pass copy MD5hash to loc_2C from arg_14
    1081. 524AA: 8D7DD4         lea         edi,[ebp][-2C]
    1082. 524AD: 8B7514         mov         esi,[ebp][14]
    1083. 524B0: B905000000     mov         ecx,000000005 ;"   "
    1084. 524B5: F3A5           repe        movsd
    1085.  
    1086. 524B7: 8B450C         mov         eax,[ebp][0C]
    1087. 524BA: 83380A         cmp         d,[eax],00A ;""
    1088. 524BD: 0F8523000000   jne        .0000524E6  ----- (4)
    1089.  
    1090. 524C3: 8B450C         mov         eax,[ebp][0C]
    1091. 524C6: C70001000000   mov         d,[eax],000000001 ;"   "
    1092. 524CC: 8B450C         mov         eax,[ebp][0C]
    1093. 524CF: C780DC08000001 mov         d,[eax][000008DC],000000001
    1094. 524D9: 8D7DD7         lea         edi,[ebp][-29]
    1095. 524DC: 33C0           xor         eax,eax
    1096. 524DE: B907000000     mov         ecx,000000007 ;"   "
    1097. 524E3: F3AB           repe        stosd
    1098. 524E5: AA             stosb
    1099.  
    1100. 524E6: 8B450C         mov         eax,[ebp][0C]
    1101. 524E9: 83380B         cmp         d,[eax],00B ;""
    1102. 524EC: 0F8523000000   jne        .000052515  ----- (1)
    1103.  
    1104. 524F2: 8B450C         mov         eax,[ebp][0C]
    1105. 524F5: C70009000000   mov         d,[eax],000000009 ;"      "
    1106. 524FB: 8B450C         mov         eax,[ebp][0C]
    1107. 524FE: C780DC08000001 mov         d,[eax][000008DC],000000001
    1108. 52508: 8D7DD7         lea         edi,[ebp][-29]
    1109. 5250B: 33C0           xor         eax,eax
    1110. 5250D: B907000000     mov         ecx,000000007 ;"   "
    1111. 52512: F3AB           repe        stosd
    1112. 52514: AA             stosb
    1113.  
    1114. 52515: 8B450C         mov         eax,[ebp][0C]
    1115. 52518: 50             push        eax
    1116. 52519: 6A14           push        014
    1117. 5251B: 8D45D4         lea         eax,[ebp][-2C]
    1118. 5251E: 50             push        eax
    1119. 5251F: E84DEBFFFF     call       .000051071  ----- (2)
    1120. 52524: 83C40C         add         esp,00C ;" "
    1121.  
    1122. 52527: 8B450C         mov         eax,[ebp][0C]
    1123. 5252A: C780D408000000 mov         d,[eax][000008D4],000000000
    1124. 52534: E990000000     jmp        .0000525C9  ----- (3)
    1125.  
    1126. 52539: 8B750C         mov         esi,[ebp][0C]
    1127. 5253C: 8D7DD4         lea         edi,[ebp][-2C]
    1128. 5253F: 81C6B4080000   add         esi,0000008B4 ;"  ´"
    1129. 52545: B908000000     mov         ecx,000000008 ;"   "
    1130. 5254A: F3A5           repe        movsd
    1131. 5254C: 8B450C         mov         eax,[ebp][0C]
    1132. 5254F: 83380A         cmp         d,[eax],00A ;""
    1133. 52552: 0F8523000000   jne        .00005257B  ----- (1)
    1134. 52558: 8B450C         mov         eax,[ebp][0C]
    1135. 5255B: C70001000000   mov         d,[eax],000000001 ;"   "
    1136. 52561: 8B450C         mov         eax,[ebp][0C]
    1137. 52564: C780DC08000001 mov         d,[eax][000008DC],000000001
    1138. 5256E: 8D7DD7         lea         edi,[ebp][-29]
    1139. 52571: 33C0           xor         eax,eax
    1140. 52573: B907000000     mov         ecx,000000007 ;"   "
    1141. 52578: F3AB           repe        stosd
    1142. 5257A: AA             stosb
    1143. 5257B: 8B450C         mov         eax,[ebp][0C]
    1144. 5257E: 83380B         cmp         d,[eax],00B ;""
    1145. 52581: 0F8523000000   jne        .0000525AA  ----- (2)
    1146. 52587: 8B450C         mov         eax,[ebp][0C]
    1147. 5258A: C70009000000   mov         d,[eax],000000009 ;"      "
    1148. 52590: 8B450C         mov         eax,[ebp][0C]
    1149. 52593: C780DC08000001 mov         d,[eax][000008DC],000000001
    1150. 5259D: 8D7DD7         lea         edi,[ebp][-29]
    1151. 525A0: 33C0           xor         eax,eax
    1152. 525A2: B907000000     mov         ecx,000000007 ;"   "
    1153. 525A7: F3AB           repe        stosd
    1154. 525A9: AA             stosb
    1155. 525AA: 8B450C         mov         eax,[ebp][0C]
    1156. 525AD: 50             push        eax
    1157. 525AE: 6A20           push        020
    1158. 525B0: 8D45D4         lea         eax,[ebp][-2C]
    1159. 525B3: 50             push        eax
    1160. 525B4: E8B8EAFFFF     call       .000051071  ----- (1)
    1161. 525B9: 83C40C         add         esp,00C ;" "
    1162. 525BC: 8B450C         mov         eax,[ebp][0C]
    1163. 525BF: C780D408000001 mov         d,[eax][000008D4],000000001
    1164. 525C9: 6A01           push        001
    1165. 525CB: 8B450C         mov         eax,[ebp][0C]
    1166. 525CE: 50             push        eax
    1167. 525CF: 8B45C4         mov         eax,[ebp][-3C]
    1168. 525D2: 50             push        eax
    1169. 525D3: E809F9FFFF     call       .000051EE1  ----- (2)
    1170. 525D8: 83C40C         add         esp,00C ;" "
    1171. 525DB: 833D0000000000 cmp         d,[00000000],000 ;" "
    1172. 525E2: 0F8431000000   je         .000052619  ----- (3)
    1173. 525E8: 833D0000000000 cmp         d,[00000000],000 ;" "
    1174. 525EF: 0F8524000000   jne        .000052619  ----- (4)
    1175. 525F5: 6A01           push        001
    1176. 525F7: 8B450C         mov         eax,[ebp][0C]
    1177. 525FA: 50             push        eax
    1178. 525FB: 8B45C4         mov         eax,[ebp][-3C]
    1179. 525FE: 50             push        eax
    1180. 525FF: E8DDF8FFFF     call       .000051EE1  ---
    1181. 52604: 83C40C         add         esp,00C ;" "
    1182. 52607: 6A01           push        001
    1183. 52609: 8B450C         mov         eax,[ebp][0C]
    1184. 5260C: 50             push        eax
    1185. 5260D: 8B45C4         mov         eax,[ebp][-3C]
    1186. 52610: 50             push        eax
    1187. 52611: E8CBF8FFFF     call       .000051EE1  ---
    1188. 52616: 83C40C         add         esp,00C ;" "
    1189. 52619: 8B750C         mov         esi,[ebp][0C]
    1190. 5261C: 8D7DD4         lea         edi,[ebp][-2C]
    1191. 5261F: 81C62C040000   add         esi,00000042C
    1192. 52625: B908000000     mov         ecx,000000008
    1193. 5262A: F3A5           repe        movsd
    1194. 5262C: 8B450C         mov         eax,[ebp][0C]
    1195. 5262F: 50             push        eax
    1196. 52630: 6A20           push        020
    1197. 52632: 8D45D4         lea         eax,[ebp][-2C]
    1198. 52635: 50             push        eax
    1199. 52636: E836EAFFFF     call       .000051071  ----- (1)
    1200. 5263B: 83C40C         add         esp,00C ;" "
    1201.  
    1202. 5263E: E92F000000     jmp        .000052672  ----- (2)
    1203. 52643: 837DBC00       cmp         d,[ebp][-44],000 ;" "
    1204. 52647: 0F8425000000   je         .000052672  ----- (3)
    1205. 5264D: 8B750C         mov         esi,[ebp][0C]
    1206. 52650: 8D7DD4         lea         edi,[ebp][-2C]
    1207. 52653: 81C62C040000   add         esi,00000042C ;"  ,"
    1208. 52659: B908000000     mov         ecx,000000008 ;"   "
    1209. 5265E: F3A5           repe        movsd
    1210. 52660: 8B450C         mov         eax,[ebp][0C]
    1211. 52663: 50             push        eax
    1212. 52664: 6A20           push        020
    1213. 52666: 8D45D4         lea         eax,[ebp][-2C]
    1214. 52669: 50             push        eax
    1215. 5266A: E802EAFFFF     call       .000051071  ----- (4)
    1216. 5266F: 83C40C         add         esp,00C ;" "
    1217.  
    1218. 52672: 8B4508         mov         eax,[ebp][08]
    1219.  
    1220. 52675: 66C7406A0000   mov         w,[eax][6A],00000 ;"
    1221.  
    1222. ; loc_3C+= 0x600; // increment tmp file data ptr to next file block ?
    1223. 5267B: 8145C400060000 add         d,[ebp][-3C],000000600
    1224.  
    1225. ; if ( sub520E4(arg_C,loc_3C,,arg_8) )
    1226. 52682: A100000000     mov         eax,[00000000]
    1227. 52687: 50             push        eax
    1228. 52688: 8B450C         mov         eax,[ebp][0C]
    1229. 5268B: 50             push        eax
    1230. 5268C: 8B45C4         mov         eax,[ebp][-3C]
    1231. 5268F: 50             push        eax
    1232. 52690: A100000000     mov         eax,[00000000]
    1233. 52695: 50             push        eax
    1234. 52696: 8B4508         mov         eax,[ebp][08]
    1235. 52699: 50             push        eax
    1236. 5269A: E845FAFFFF     call       .0000520E4
    1237.  
    1238. ; On 3-th pass we receive 1 as sign - password ok !
    1239. 5269F: 83C414         add         esp,014
    1240. 526A2: 85C0           test        eax,eax
    1241. 526A4: 0F849B000000   je         .000052745  ---
    1242.  
    1243. ; Finally calculation
    1244. 526AA: 6A00           push        000
    1245. 526AC: 8B450C         mov         eax,[ebp][0C]
    1246. 526AF: 50             push        eax
    1247. 526B0: A100000000     mov         eax,[00000000]
    1248. 526B5: 50             push        eax
    1249. 526B6: 6A04           push        004
    1250. 526B8: 8B450C         mov         eax,[ebp][0C]
    1251. 526BB: 8B4020         mov         eax,[eax][20]
    1252. 526BE: 50             push        eax
    1253. 526BF: 8B4508         mov         eax,[ebp][08]
    1254. 526C2: 50             push        eax
    1255. 526C3: E81F81FFFF     call       .00004A7E7  ----- (1)
    1256. 526C8: 83C418         add         esp,018 ;""
    1257. 526CB: 8B4514         mov         eax,[ebp][14]
    1258. 526CE: 50             push        eax
    1259. 526CF: A100000000     mov         eax,[00000000]
    1260. 526D4: 50             push        eax
    1261. 526D5: 8B450C         mov         eax,[ebp][0C]
    1262. 526D8: 50             push        eax
    1263. 526D9: A100000000     mov         eax,[00000000]
    1264. 526DE: 50             push        eax
    1265. 526DF: 8B4508         mov         eax,[ebp][08]
    1266. 526E2: 50             push        eax
    1267. 526E3: E8AAF2FFFF     call       .000051992  ----- (2)
    1268. 526E8: 83C414         add         esp,014 ;""
    1269. 526EB: 8B450C         mov         eax,[ebp][0C]
    1270. 526EE: C7401401000000 mov         d,[eax][14],000000001
    1271. 526F5: 8B450C         mov         eax,[ebp][0C]
    1272. 526F8: 50             push        eax
    1273. 526F9: A100000000     mov         eax,[00000000]
    1274. 526FE: 50             push        eax
    1275. 526FF: 6A01           push        001
    1276. 52701: 6A04           push        004
    1277. 52703: 8B4508         mov         eax,[ebp][08]
    1278. 52706: 50             push        eax
    1279. 52707: E847EDFFFF     call       .000051453  ---
    1280. 5270C: 83C414         add         esp,014 ;""
    1281. 5270F: 8B450C         mov         eax,[ebp][0C]
    1282. 52712: 50             push        eax
    1283. 52713: 8B45FC         mov         eax,[ebp][-04]
    1284. 52716: 50             push        eax
    1285. 52717: E8F2EFFFFF     call       .00005170E  ---
    1286. 5271C: 83C408         add         esp,008 ;""
    1287.  
    1288. ; memcpy(arg_C+0x72C, , 0x40*4); // 256 bytes
    1289. 5271F: 8B3500000000   mov         esi,[00000000]
    1290. 52725: 8B7D0C         mov         edi,[ebp][0C]
    1291. 52728: 81C72C070000   add         edi,00000072C
    1292. 5272E: 81C600070000   add         esi,000000700
    1293. 52734: B940000000     mov         ecx,000000040
    1294. 52739: F3A5           repe        movsd
    1295.  
    1296. ; All ok, return 1
    1297. 5273B: B801000000     mov         eax,000000001
    1298. 52740: E90C000000     jmp        .000052751
    1299.  
    1300. 52745: E9AAFCFFFF     jmp        .0000523F4
    1301.  
    1302. ; Password fail, return 0
    1303. 5274A: 33C0           xor         eax,eax
    1304. 5274C: E900000000     jmp        .000052751  ---
    1305.  
    1306. Exit:
    1307. 52751: 5F             pop         edi
    1308. 52752: 5E             pop         esi
    1309. 52753: 5B             pop         ebx
    1310. 52754: C9             leave
    1311. 52755: C3             retn
     
  6. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    (Немного have fumbled in my srcs) Наверное примерно так - нужно найти в твой версии dcr.sys обработчег вот этих ошибок (который я запатчил):

    Код (Text):
    1.  cmp   ax,0277h
    2.   jz    @@MakeOKAns
    3.   cmp   ax,0278h
    4.   jz    @@MakeOKAns
    Удачи :derisive: