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

 eXeL@B —› Вопросы новичков —› Программа DiskGenius, нужен опытный взгляд на цикл )
Посл.ответ Сообщение

Ранг: 2.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2012 13:00 · Поправил: pivikov
· Личное сообщение · #1

Китайская программа DiskGenius для работы с дисками, разметка, ресиз, восстановление, клонирование и прочие радости.
Возможно в китае запрещено торговать за бугор или еще чего неизвестно, но есть англ. версия - PartitionGuru.
Версия программ 4,0,1

Программа не чем не упакована, ничего не навешано с виду.
Данные о регистрации берутся из файла Options.ini, типа так:
Code:
  1. user = 
  2. email = 
  3. regcode = 
  4. key =

Путем несложных умозаключений и гугла нашел рабочий ini файлик Есть китайская крякнутная версия, но не до конца, о этом ниже.

Прога при запуске и при использовании функций доступных только в pro версии проверяет регистрационные данные из options.ini и проверяет с положительным результатом, т.е. нет надписи "unregistered" пишет на кого зарегана и т.д.

Внутри всех платных функций есть еще одна проверка(про которую забыли/забили товарищи крякеры из Китая), возьмем например бэкап раздела в файл посекторно. Перед самым бэкапом идет проверка:
Code:
  1.  CPU Disasm
  2. Address   Hex dump          Command                                  Comments
  3. 014314D8   /74 34           JE SHORT 0143150E
  4. 014314DA   |8B85 58030000   MOV EAX,DWORD PTR SS:[EBP+358]
  5. 014314E0   |83F8 02         CMP EAX,2
  6. 014314E3   |74 29           JE SHORT 0143150E
  7. 014314E5   |83F8 01         CMP EAX,1
  8. 014314E8   |74 24           JE SHORT 0143150E
  9. 014314EA   |83F8 FF         CMP EAX,-1
  10. 014314ED   |74 1F           JE SHORT 0143150E
  11. 014314EF   |813D D0DF4D01 4 CMP DWORD PTR DS:[14DDFD0],20000140     ;Коды ошибок
  12. 014314F9   |0F84 37030000   JE 01431836
  13. 014314FF   |C705 D0DF4D01 1 MOV DWORD PTR DS:[14DDFD0],2000011B     ;Коды ошибок
  14. 01431509   |E9 28030000     JMP 01431836
  15. 0143150E   \A1 6CE04D01     MOV EAX,DWORD PTR DS:[14DE06C]
  16. 01431513    8138 3A010000   CMP DWORD PTR DS:[EAX],13A             ;Проверка рас
  17. 01431519    0F85 01030000   JNE 01431820
  18. 0143151F    813D 74E04D01 9 CMP DWORD PTR DS:[14DE074],199   ;Проверка два
  19. 01431529    0F85 F1020000   JNE 01431820
  20. 0143152F    8B0D 5CE04D01   MOV ECX,DWORD PTR DS:[14DE05C]
  21. 01431535    8139 00020000   CMP DWORD PTR DS:[ECX],200             ;Проверка три
  22. 0143153B    0F85 DF020000   JNE 01431820
  23. 01431541    C745 E8 0100000 MOV DWORD PTR SS:[EBP-18],1           ;Все ок, пошел бэкап
  24. 01431548    33C0            XOR EAX,EAX
  25. 0143154A    8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
  26. 0143154D    8945 EC         MOV DWORD PTR SS:[EBP-14],EAX
  27. 01431550    8DB5 3CFFFFFF   LEA ESI,[EBP-0C4]
  28. 01431556    E8 4520FAFF     CALL 013D35A0


Я бы и сам все поправил как нужно, проблема в том, что этого кода нет в исполняемом файле программы и библиотеках. Код с адреса 014314E0 по 014314EA находится в секции данных и ниже идет что-то похожее.
Вот, возможно он зашифрован или генерируется как то? Цикл ответственный за копирование кода из секции данных в память:



Ранг: 2.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2012 13:04
· Личное сообщение · #2

Code:
  1. CPU Disasm
  2. Address   Hex dump          Command                                  Comments
  3. 00493170  |> /8BC5          /MOV EAX,EBP
  4. 00493172  |. |83E0 1F       |AND EAX,0000001F
  5. 00493175  |. |C1E0 08       |SHL EAX,8
  6. 00493178  |. |894424 24     |MOV DWORD PTR SS:[ESP+24],EAX
  7. 0049317C  |. |83FD 20       |CMP EBP,20                              ; Switch (cases 0..1F, 2 exits)
  8. 0049317F  |. |0F82 42010000 |JB 004932C7
  9. 00493185  |. |8BDD          |MOV EBX,EBP                             ; Default case of switch PartitionGuru.49317C
  10. 00493187  |. |C1EB 05       |SHR EBX,5
  11. 0049318A  |. |8BCE          |MOV ECX,ESI
  12. 0049318C  |. |4B            |DEC EBX
  13. 0049318D  |. |2BC8          |SUB ECX,EAX
  14. 0049318F  |. |83FB 06       |CMP EBX,6
  15. 00493192  |. |75 10         |JNE SHORT 004931A4
  16. 00493194  |> |8A07          |/MOV AL,BYTE PTR DS:[EDI]
  17. 00493196  |. |0FB6D0        ||MOVZX EDX,AL
  18. 00493199  |. |47            ||INC EDI
  19. 0049319A  |. |03DA          ||ADD EBX,EDX
  20. 0049319C  |. |3C FF         ||CMP AL,0FF
  21. 0049319E  |.^|74 F4         |\JE SHORT 00493194
  22. 004931A0  |. |8B4424 24     |MOV EAX,DWORD PTR SS:[ESP+24]
  23. 004931A4  |> |8A17          |MOV DL,BYTE PTR DS:[EDI]
  24. 004931A6  |. |885424 13     |MOV BYTE PTR SS:[ESP+13],DL
  25. 004931AA  |. |0FB6D2        |MOVZX EDX,DL
  26. 004931AD  |. |47            |INC EDI
  27. 004931AE  |. |2BCA          |SUB ECX,EDX
  28. 004931B0  |. |807C24 13 FF  |CMP BYTE PTR SS:[ESP+13],0FF
  29. 004931B5  |. |75 1F         |JNE SHORT 004931D6
  30. 004931B7  |. |3D 001F0000   |CMP EAX,1F00
  31. 004931BC  |. |75 18         |JNE SHORT 004931D6
  32. 004931BE  |. |0FB607        |MOVZX EAX,BYTE PTR DS:[EDI]
  33. 004931C1  |. |0FB64F 01     |MOVZX ECX,BYTE PTR DS:[EDI+1]
  34. 004931C5  |. |47            |INC EDI
  35. 004931C6  |. |C1E0 08       |SHL EAX,8
  36. 004931C9  |. |03C1          |ADD EAX,ECX
  37. 004931CB  |. |8BCE          |MOV ECX,ESI
  38. 004931CD  |. |2BC8          |SUB ECX,EAX
  39. 004931CF  |. |47            |INC EDI
  40. 004931D0  |. |81E9 FF1F0000 |SUB ECX,1FFF
  41. 004931D6  |> |8D5433 03     |LEA EDX,[ESI+EBX+3]
  42. 004931DA  |. |3B5424 1C     |CMP EDX,DWORD PTR SS:[ESP+1C]
  43. 004931DE  |. |0F87 2E010000 |JA 00493312
  44. 004931E4  |. |8D41 FF       |LEA EAX,[ECX-1]
  45. 004931E7  |. |3B4424 30     |CMP EAX,DWORD PTR SS:[ESP+30]
  46. 004931EB  |. |0F82 21010000 |JB 00493312
  47. 004931F1  |. |3B7C24 20     |CMP EDI,DWORD PTR SS:[ESP+20]
  48. 004931F5  |. |73 0A         |JAE SHORT 00493201
  49. 004931F7  |. |0FB62F        |MOVZX EBP,BYTE PTR DS:[EDI]
  50. 004931FA  |. |896C24 14     |MOV DWORD PTR SS:[ESP+14],EBP
  51. 004931FE  |. |47            |INC EDI
  52. 004931FF  |. |EB 08         |JMP SHORT 00493209
  53. 00493201  |> |C74424 18 000 |MOV DWORD PTR SS:[ESP+18],0
  54. 00493209  |> |3BCE          |CMP ECX,ESI
  55. 0049320B  |. |75 2E         |JNE SHORT 0049323B
  56. 0049320D  |. |8A49 FF       |MOV CL,BYTE PTR DS:[ECX-1]
  57. 00493210  |. |880E          |MOV BYTE PTR DS:[ESI],CL
  58. 00493212  |. |46            |INC ESI
  59. 00493213  |. |880E          |MOV BYTE PTR DS:[ESI],CL
  60. 00493215  |. |46            |INC ESI
  61. 00493216  |. |880E          |MOV BYTE PTR DS:[ESI],CL
  62. 00493218  |. |46            |INC ESI
  63. 00493219  |. |884C24 28     |MOV BYTE PTR SS:[ESP+28],CL
  64. 0049321D  |. |85DB          |TEST EBX,EBX
  65. 0049321F  |. |0F84 DD000000 |JZ 00493302
  66. 00493225  |. |8B4C24 28     |MOV ECX,DWORD PTR SS:[ESP+28]
  67. 00493229  |. |53            |PUSH EBX
  68. 0049322A  |. |51            |PUSH ECX
  69. 0049322B  |. |56            |PUSH ESI
  70. 0049322C  |. |E8 DF5F1900   |CALL 00629210
  71. 00493231  |. |83C4 0C       |ADD ESP,0C
  72. 00493234  |. |03F3          |ADD ESI,EBX
  73. 00493236  |. |E9 C7000000   |JMP 00493302
  74. 0049323B  |> |0FB651 FF     |MOVZX EDX,BYTE PTR DS:[ECX-1]
  75. 0049323F  |. |49            |DEC ECX
  76. 00493240  |. |8816          |MOV BYTE PTR DS:[ESI],DL
  77. 00493242  |. |8A41 01       |MOV AL,BYTE PTR DS:[ECX+1]
  78. 00493245  |. |41            |INC ECX
  79. 00493246  |. |46            |INC ESI
  80. 00493247  |. |8806          |MOV BYTE PTR DS:[ESI],AL
  81. 00493249  |. |0FB651 01     |MOVZX EDX,BYTE PTR DS:[ECX+1]
  82. 0049324D  |. |41            |INC ECX
  83. 0049324E  |. |46            |INC ESI
  84. 0049324F  |. |8816          |MOV BYTE PTR DS:[ESI],DL
  85. 00493251  |. |46            |INC ESI
  86. 00493252  |. |41            |INC ECX
  87. 00493253  |. |F6C3 01       |TEST BL,01
  88. 00493256  |. |74 07         |JZ SHORT 0049325F
  89. 00493258  |. |8A01          |MOV AL,BYTE PTR DS:[ECX]
  90. 0049325A  |. |8806          |MOV BYTE PTR DS:[ESI],AL
  91. 0049325C  |. |46            |INC ESI
  92. 0049325D  |. |41            |INC ECX
  93. 0049325E  |. |4B            |DEC EBX
  94. 0049325F  |> |8BC6          |MOV EAX,ESI
  95. 00493261  |. |03F3          |ADD ESI,EBX
  96. 00493263  |. |D1EB          |SHR EBX,1
  97. 00493265  |. |83FB 04       |CMP EBX,4                               ; Switch (cases 0..4, 2 exits)
  98. 00493268  |. |76 46         |JBE SHORT 004932B0
  99. 0049326A  |. |8D53 FB       |LEA EDX,[EBX-5]                         ; Default case of switch PartitionGuru.493265
  100. 0049326D  |. |C1EA 02       |SHR EDX,2
  101. 00493270  |. |42            |INC EDX
  102. 00493271  |> |66:8B29       |/MOV BP,WORD PTR DS:[ECX]
  103. 00493274  |. |66:8928       ||MOV WORD PTR DS:[EAX],BP
  104. 00493277  |. |66:8B69 02    ||MOV BP,WORD PTR DS:[ECX+2]
  105. 0049327B  |. |83C1 02       ||ADD ECX,2
  106. 0049327E  |. |83C0 02       ||ADD EAX,2
  107. 00493281  |. |66:8928       ||MOV WORD PTR DS:[EAX],BP
  108. 00493284  |. |66:8B69 02    ||MOV BP,WORD PTR DS:[ECX+2]
  109. 00493288  |. |83C1 02       ||ADD ECX,2
  110. 0049328B  |. |83C0 02       ||ADD EAX,2
  111. 0049328E  |. |66:8928       ||MOV WORD PTR DS:[EAX],BP
  112. 00493291  |. |66:8B69 02    ||MOV BP,WORD PTR DS:[ECX+2]
  113. 00493295  |. |83C1 02       ||ADD ECX,2
  114. 00493298  |. |83C0 02       ||ADD EAX,2
  115. 0049329B  |. |66:8928       ||MOV WORD PTR DS:[EAX],BP
  116. 0049329E  |. |83C0 02       ||ADD EAX,2
  117. 004932A1  |. |83C1 02       ||ADD ECX,2
  118. 004932A4  |. |83EB 04       ||SUB EBX,4
  119. 004932A7  |. |83EA 01       ||SUB EDX,1
  120. 004932AA  |.^|75 C5         |\JNZ SHORT 00493271
  121. 004932AC  |. |8B6C24 14     |MOV EBP,DWORD PTR SS:[ESP+14]
  122. 004932B0  |> |85DB          |TEST EBX,EBX                            ; Cases 0, 1, 2, 3, 4 of switch PartitionGuru.493265
  123. 004932B2  |. |74 4E         |JZ SHORT 00493302
  124. 004932B4  |> |66:8B11       |/MOV DX,WORD PTR DS:[ECX]
  125. 004932B7  |. |66:8910       ||MOV WORD PTR DS:[EAX],DX
  126. 004932BA  |. |83C0 02       ||ADD EAX,2
  127. 004932BD  |. |83C1 02       ||ADD ECX,2
  128. 004932C0  |. |83EB 01       ||SUB EBX,1
  129. 004932C3  |.^|75 EF         |\JNZ SHORT 004932B4
  130. 004932C5  |. |EB 3B         |JMP SHORT 00493302
  131. 004932C7  |> |45            |INC EBP                                 ; Cases 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F of switch PartitionGuru.49317C
  132. 004932C8  |. |8D042E        |LEA EAX,[EBP+ESI]
  133. 004932CB  |. |3B4424 1C     |CMP EAX,DWORD PTR SS:[ESP+1C]
  134. 004932CF  |. |77 41         |JA SHORT 00493312
  135. 004932D1  |. |8D142F        |LEA EDX,[EBP+EDI]
  136. 004932D4  |. |3BD1          |CMP EDX,ECX
  137. 004932D6  |. |77 3A         |JA SHORT 00493312
  138. 004932D8  |. |8A07          |MOV AL,BYTE PTR DS:[EDI]
  139. 004932DA  |. |8806          |MOV BYTE PTR DS:[ESI],AL
  140. 004932DC  |. |46            |INC ESI
  141. 004932DD  |. |47            |INC EDI
  142. 004932DE  |. |83ED 01       |SUB EBP,1
  143. 004932E1  |. |74 0B         |JZ SHORT 004932EE
  144. 004932E3  |> |8A17          |/MOV DL,BYTE PTR DS:[EDI]
  145. 004932E5  |. |8816          ||MOV BYTE PTR DS:[ESI],DL
  146. 004932E7  |. |46            ||INC ESI
  147. 004932E8  |. |47            ||INC EDI
  148. 004932E9  |. |83ED 01       ||SUB EBP,1
  149. 004932EC  |.^|75 F5         |\JNZ SHORT 004932E3
  150. 004932EE  |> |3BF9          |CMP EDI,ECX                             ; Sets EAX to boolean result of comparison EDI<ECX
  151. 004932F0  |. |1BC0          |SBB EAX,EAX
  152. 004932F2  |. |F7D8          |NEG EAX
  153. 004932F4  |. |894424 18     |MOV DWORD PTR SS:[ESP+18],EAX
  154. 004932F8  |. |74 22         |JZ SHORT 0049331C
  155. 004932FA  |. |0FB62F        |MOVZX EBP,BYTE PTR DS:[EDI]
  156. 004932FD  |. |896C24 14     |MOV DWORD PTR SS:[ESP+14],EBP
  157. 00493301  |. |47            |INC EDI
  158. 00493302  |> |837C24 18 00  |CMP DWORD PTR SS:[ESP+18],0
  159. 00493307  |. |74 13         |JE SHORT 0049331C
  160. 00493309  |. |8B4C24 20     |MOV ECX,DWORD PTR SS:[ESP+20]
  161. 0049330D  |.^\E9 5EFEFFFF   \JMP 00493170


Вот что оно делает? Помогите поправить эту чудесную программу




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

Создано: 19 ноября 2012 13:31
· Личное сообщение · #3

Делай инлайн или выпиливай копирование(расшифровку) кода. Посмотри откуда идет вызов проверки. Возможно можно при вызове этой проверки, запатчить код




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 19 ноября 2012 14:18 · Поправил: ClockMan
· Личное сообщение · #4

Передача аргументов для функции по ад-су 004A68F0
Code:
  1. /*46B96F*/  PUSH 7CD2B0
  2. /*46B974*/  PUSH 7CEEF8
  3. /*46B979*/  PUSH 7CD2D8
  4. /*46B97E*/  PUSH 0E0459
  5. /*46B983*/  PUSH 0D0
  6. /*46B988*/  PUSH 0ADC
  7. /*46B98D*/  PUSH 7CC470
  8. /*46B992*/  PUSH 7CCF50
  9. /*46B997*/  PUSH 0B
  10. /*46B999*/  PUSH 89ADA8
  11. /*46B99E*/  PUSH 0EA08
  12. /*46B9A3*/  PUSH 0C5CE
  13. /*46B9A8*/  PUSH 7BFE98
  14. /*46B9AD*/  PUSH 183000======>размер выделенной памяти.
  15. /*46B9B2*/  PUSH 0CB08F
  16. /*46B9B7*/  PUSH 7CFD08
  17. /*46B9BC*/  CALL 004A68F0

Сами данные расположены в секции data в файле PartitionGuru.ехе и упакованны х.з каким методом. самое лучшие поставить джамп по адресс 004A69C2 и используя данные со стека для проверки патчить код после расспаковки.

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




Ранг: 2.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 ноября 2012 10:20 · Поправил: pivikov
· Личное сообщение · #5

Спасибо.
По ковыряю еще, может чего на ум придет. Хотелось бы разобраться как оно упаковано)
Вот оно че Михалыч Может кому интересно будет разобраться.
Code:
  1. int __usercall sub_493140<eax>(int a1<eax>, int a2<edx>, int a3<ecx>, unsigned int a4)
  2. {
  3.   int v4; // esi@1
  4.   int v5; // edi@1
  5.   char v6; // bp@1
  6.   int v7; // ecx@1
  7.   int v8; // ebp@1
  8.   int v9; // edi@1
  9.   int v10; // eax@2
  10.   unsigned int v11; // ebx@3
  11.   int v12; // ecx@3
  12.   char v13; // al@4
  13.   int v14; // edx@4
  14.   unsigned __int8 v15; // ST1F_1@6
  15.   int v16; // ecx@6
  16.   int v17; // eax@8
  17.   char v18; // cl@15
  18.   int v19; // esi@15
  19.   char v20; // dl@17
  20.   int v21; // ecx@17
  21.   char v22; // al@17
  22.   int v23; // esi@17
  23.   int v24; // esi@17
  24.   int v25; // ecx@17
  25.   int v26; // eax@19
  26.   unsigned int v27; // ebx@19
  27.   unsigned int v28; // edx@20
  28.   __int16 v29; // bp@21
  29.   int v30; // ecx@21
  30.   int v31; // eax@21
  31.   __int16 v32; // bp@21
  32.   int v33; // ebp@26
  33.   int v34; // edi@28
  34.   int i; // ebp@28
  35.   int v37; // [sp+14h] [bp-18h]@1
  36.   signed int v38; // [sp+18h] [bp-14h]@1
  37.   int v39; // [sp+1Ch] [bp-10h]@1
  38.   unsigned int v40; // [sp+20h] [bp-Ch]@1
  39.   int v41; // [sp+28h] [bp-4h]@0
  40.  
  41.   v4 = a4;
  42.   v5 = a3;
  43.   v6 = *(_BYTE *)a3;
  44.   v7 = a3 + a1;
  45.   v8 = v6 & 0x1F;
  46.   v40 = v7;
  47.   v39 = a4 + a2;
  48.   v37 = v8;
  49.   v9 = v5 + 1;
  50.   v38 = 1;
  51.   while ( 1 )                             
  52.   {
  53.     v10 = (v8 & 0x1F) << 8;
  54.     if ( (unsigned int)v8 < 0x20 )
  55.       break;
  56.     v11 = ((unsigned int)v8 >> 5) - 1;
  57.     v12 = v4 - v10;
  58.     if ( v11 == 6 )
  59.     {
  60.       do
  61.       {
  62.         v13 = *(_BYTE *)v9;
  63.         v14 = *(_BYTE *)v9++;
  64.         v11 += v14;
  65.       }
  66.       while ( v13 == -1 );
  67.       v10 = (v8 & 0x1F) << 8;
  68.     }
  69.     v15 = *(_BYTE *)v9++;
  70.     v16 = v12 - v15;
  71.     if ( v15 == -1 && v10 == 7936 )
  72.     {
  73.       v17 = *(_BYTE *)(v9 + 1) + (*(_BYTE *)v9 << 8);
  74.       v9 += 2;
  75.       v16 = v4 - v17 - 8191;
  76.     }
  77.     if ( v11 + v4 + 3 > v39 || v16 - 1 < a4 )
  78.       return 0;
  79.     if ( v9 >= v40 )
  80.     {
  81.       v38 = 0;
  82.     }
  83.     else
  84.     {
  85.       v8 = *(_BYTE *)v9;
  86.       v37 = *(_BYTE *)v9++;
  87.     }
  88.     if ( v16 == v4 )
  89.     {
  90.       v18 = *(_BYTE *)(v16 - 1);
  91.       *(_BYTE *)v4 = v18;
  92.       v19 = v4 + 1;
  93.       *(_BYTE *)v19++ = v18;
  94.       *(_BYTE *)v19 = v18;
  95.       v4 = v19 + 1;
  96.       LOBYTE(v41) = v18;
  97.       if ( v11 )
  98.       {
  99.         memset((void *)v4, v41, v11);
  100.         v4 += v11;
  101.       }
  102.     }
  103.     else
  104.     {
  105.       v20 = *(_BYTE *)(v16 - 1);
  106.       v21 = v16 - 1;
  107.       *(_BYTE *)v4 = v20;
  108.       v22 = *(_BYTE *)(v21++ + 1);
  109.       v23 = v4 + 1;
  110.       *(_BYTE *)v23++ = v22;
  111.       *(_BYTE *)v23 = *(_BYTE *)(v21 + 1);
  112.       v24 = v23 + 1;
  113.       v25 = v21 + 2;
  114.       if ( v11 & 1 )
  115.       {
  116.         *(_BYTE *)v24++ = *(_BYTE *)v25++;
  117.         --v11;
  118.       }
  119.       v26 = v24;
  120.       v4 = v11 + v24;
  121.       v27 = v11 >> 1;
  122.       if ( v27 > 4 )
  123.       {
  124.         v28 = ((v27 - 5) >> 2) + 1;
  125.         do
  126.         {
  127.           *(_WORD *)v26 = *(_WORD *)v25;
  128.           v29 = *(_WORD *)(v25 + 2);
  129.           v30 = v25 + 2;
  130.           v31 = v26 + 2;
  131.           *(_WORD *)v31 = v29;
  132.           v32 = *(_WORD *)(v30 + 2);
  133.           v30 += 2;
  134.           v31 += 2;
  135.           *(_WORD *)v31 = v32;
  136.           v31 += 2;
  137.           *(_WORD *)v31 = *(_WORD *)(v30 + 2);
  138.           v26 = v31 + 2;
  139.           v25 = v30 + 4;
  140.           v27 -= 4;
  141.           --v28;
  142.         }
  143.         while ( v28 );
  144.         v8 = v37;
  145.       }
  146.       for ( ; v27; --v27 )
  147.       {
  148.         *(_WORD *)v26 = *(_WORD *)v25;
  149.         v26 += 2;
  150.         v25 += 2;
  151.       }
  152.     }
  153. LABEL_32:
  154.     if ( !v38 )
  155.       return v4 - a4;
  156.     v7 = v40;
  157.   }
  158.   v33 = v8 + 1;
  159.   if ( v4 + v33 > (unsigned int)v39 || v9 + v33 > (unsigned int)v7 )
  160.     return 0;
  161.   *(_BYTE *)v4++ = *(_BYTE *)v9;
  162.   v34 = v9 + 1;
  163.   for ( i = v33 - 1; i; --i )
  164.     *(_BYTE *)v4++ = *(_BYTE *)v34++;
  165.   v38 = v34 < (unsigned int)v7;
  166.   if ( v34 < (unsigned int)v7 )
  167.   {
  168.     v8 = *(_BYTE *)v34;
  169.     v37 = *(_BYTE *)v34;
  170.     v9 = v34 + 1;
  171.     goto LABEL_32;
  172.   }
  173.   return v4 - a4;
  174. }



 eXeL@B —› Вопросы новичков —› Программа DiskGenius, нужен опытный взгляд на цикл )
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати