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

 eXeL@B —› Вопросы новичков —› Помогите разобрать алго на VB
Посл.ответ Сообщение

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

Создано: 29 февраля 2012 11:00 · Поправил: Loh_Ushastik
· Личное сообщение · #1

Помогите разобраться с алго, уверен что все на столько просто, что последний пост будет "ну ты затупил".
Готовый ключ вынимаю и регистра , с этим проблем нет, а вот алго (т.к. код на VB а я его совсем не знаю) разбираться затруднительно.
Вот функция:
Code:
  1. 0040A120     55                   PUSH EBP
  2. 0040A121     8BEC                 MOV EBP,ESP
  3. 0040A123     83EC 0C              SUB ESP,0C
  4. 0040A126     68 E6144000          PUSH <JMP.&MSVBVM60.__vbaExceptHandler>
  5. 0040A12B     64:A1 00000000       MOV EAX,DWORD PTR FS:[0]
  6. 0040A131     50                   PUSH EAX
  7. 0040A132     64:8925 00000000     MOV DWORD PTR FS:[0],ESP
  8. 0040A139     81EC D4000000        SUB ESP,0D4
  9. 0040A13F     53                   PUSH EBX
  10. 0040A140     56                   PUSH ESI
  11. 0040A141     57                   PUSH EDI
  12. 0040A142     8965 F4              MOV DWORD PTR SS:[EBP-C],ESP
  13. 0040A145     C745 F8 D0134000     MOV DWORD PTR SS:[EBP-8],attstart.004013D0
  14. 0040A14C     33C0                 XOR EAX,EAX
  15. 0040A14E     8945 DC              MOV DWORD PTR SS:[EBP-24],EAX
  16. 0040A151     8945 CC              MOV DWORD PTR SS:[EBP-34],EAX
  17. 0040A154     8945 BC              MOV DWORD PTR SS:[EBP-44],EAX
  18. 0040A157     8945 AC              MOV DWORD PTR SS:[EBP-54],EAX
  19. 0040A15A     8945 A8              MOV DWORD PTR SS:[EBP-58],EAX
  20. 0040A15D     8945 98              MOV DWORD PTR SS:[EBP-68],EAX
  21. 0040A160     8945 94              MOV DWORD PTR SS:[EBP-6C],EAX
  22. 0040A163     8945 84              MOV DWORD PTR SS:[EBP-7C],EAX
  23. 0040A166     8985 74FFFFFF        MOV DWORD PTR SS:[EBP-8C],EAX
  24. 0040A16C     8985 64FFFFFF        MOV DWORD PTR SS:[EBP-9C],EAX
  25. 0040A172     8985 54FFFFFF        MOV DWORD PTR SS:[EBP-AC],EAX
  26. 0040A178     8985 44FFFFFF        MOV DWORD PTR SS:[EBP-BC],EAX
  27. 0040A17E     8985 34FFFFFF        MOV DWORD PTR SS:[EBP-CC],EAX
  28. 0040A184     8985 24FFFFFF        MOV DWORD PTR SS:[EBP-DC],EAX
  29. 0040A18A     E8 41D9FFFF          CALL attstart.00407AD0
  30. 0040A18F     E8 4CF2FFFF          CALL attstart.004093E0
  31. 0040A194     8B35 10104000        MOV ESI,DWORD PTR DS:[<&MSVBVM60.__vbaVarMov>; msvbvm60.__vbaVarMove
  32. 0040A19A     BF 08000000          MOV EDI,8
  33. 0040A19F     8D55 84              LEA EDX,DWORD PTR SS:[EBP-7C]
  34. 0040A1A2     8D4D CC              LEA ECX,DWORD PTR SS:[EBP-34]
  35. 0040A1A5     8945 8C              MOV DWORD PTR SS:[EBP-74],EAX
  36. 0040A1A8     897D 84              MOV DWORD PTR SS:[EBP-7C],EDI
  37. 0040A1AB     FFD6                 CALL ESI        <u> - "EB231015F898B12E" генерит ID</u>
  38. 0040A1AD     8D95 64FFFFFF        LEA EDX,DWORD PTR SS:[EBP-9C]
  39. 0040A1B3     8D4D 98              LEA ECX,DWORD PTR SS:[EBP-68]
  40. 0040A1B6     C785 6CFFFFFF C83C40>MOV DWORD PTR SS:[EBP-94],attstart.00403CC8
  41. 0040A1C0     89BD 64FFFFFF        MOV DWORD PTR SS:[EBP-9C],EDI
  42. 0040A1C6     FF15 88114000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarCopy>] ; msvbvm60.__vbaVarCopy
  43. 0040A1CC     B8 02000000          MOV EAX,2
  44. 0040A1D1     8D8D 54FFFFFF        LEA ECX,DWORD PTR SS:[EBP-AC]
  45. 0040A1D7     8985 6CFFFFFF        MOV DWORD PTR SS:[EBP-94],EAX
  46. 0040A1DD     8985 64FFFFFF        MOV DWORD PTR SS:[EBP-9C],EAX
  47. 0040A1E3     8985 54FFFFFF        MOV DWORD PTR SS:[EBP-AC],EAX
  48. 0040A1E9     8985 44FFFFFF        MOV DWORD PTR SS:[EBP-BC],EAX
  49. 0040A1EF     8D85 64FFFFFF        LEA EAX,DWORD PTR SS:[EBP-9C]
  50. 0040A1F5     8D95 44FFFFFF        LEA EDX,DWORD PTR SS:[EBP-BC]
  51. 0040A1FB     50                   PUSH EAX
  52. 0040A1FC     51                   PUSH ECX
  53. 0040A1FD     8D85 24FFFFFF        LEA EAX,DWORD PTR SS:[EBP-DC]
  54. 0040A203     52                   PUSH EDX
  55. 0040A204     8D8D 34FFFFFF        LEA ECX,DWORD PTR SS:[EBP-CC]
  56. 0040A20A     50                   PUSH EAX
  57. 0040A20B     8D55 DC              LEA EDX,DWORD PTR SS:[EBP-24]
  58. 0040A20E     51                   PUSH ECX
  59. 0040A20F     52                   PUSH EDX
  60. 0040A210     C785 5CFFFFFF 100000>MOV DWORD PTR SS:[EBP-A4],10
  61. 0040A21A     C785 4CFFFFFF 010000>MOV DWORD PTR SS:[EBP-B4],1
  62. 0040A224     FF15 60104000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarForIni>; msvbvm60.__vbaVarForInit
  63. 0040A22A     8B3D 18104000        MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaFreeVa>; msvbvm60.__vbaFreeVar
  64. 0040A230     8B1D 78114000        MOV EBX,DWORD PTR DS:[<&MSVBVM60.__vbaVarAdd>; msvbvm60.__vbaVarAdd
  65. 0040A236     85C0                 TEST EAX,EAX
  66. 0040A238     0F84 CA010000        JE attstart.0040A408
  67. 0040A23E     B8 02000000          MOV EAX,2
  68. 0040A243     8D4D DC              LEA ECX,DWORD PTR SS:[EBP-24]
  69. 0040A246     8945 8C              MOV DWORD PTR SS:[EBP-74],EAX
  70. 0040A249     8945 84              MOV DWORD PTR SS:[EBP-7C],EAX
  71. 0040A24C     8D45 84              LEA EAX,DWORD PTR SS:[EBP-7C]
  72. 0040A24F     50                   PUSH EAX
  73. 0040A250     51                   PUSH ECX
  74. 0040A251     FF15 6C114000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaI4Var>]   ; msvbvm60.__vbaI4Var
  75. 0040A257     50                   PUSH EAX
  76. 0040A258     8D55 CC              LEA EDX,DWORD PTR SS:[EBP-34]
  77. 0040A25B     8D85 74FFFFFF        LEA EAX,DWORD PTR SS:[EBP-8C]
  78. 0040A261     52                   PUSH EDX
  79. 0040A262     50                   PUSH EAX
  80. 0040A263     FF15 90104000        CALL DWORD PTR DS:[<&MSVBVM60.#632>]         ; msvbvm60.rtcMidCharVar
  81. 0040A269     8D95 74FFFFFF        LEA EDX,DWORD PTR SS:[EBP-8C]
  82. 0040A26F     8D4D BC              LEA ECX,DWORD PTR SS:[EBP-44]
  83. 0040A272     FFD6                 CALL ESI
  84. 0040A274     8D4D 84              LEA ECX,DWORD PTR SS:[EBP-7C]
  85. 0040A277     FFD7                 CALL EDI
  86. 0040A279     8D8D 64FFFFFF        LEA ECX,DWORD PTR SS:[EBP-9C]
  87. 0040A27F     8D55 BC              LEA EDX,DWORD PTR SS:[EBP-44]
  88. 0040A282     51                   PUSH ECX
  89. 0040A283     8D45 84              LEA EAX,DWORD PTR SS:[EBP-7C]
  90. 0040A286     52                   PUSH EDX
  91. 0040A287     50                   PUSH EAX
  92. 0040A288     C785 6CFFFFFF 104140>MOV DWORD PTR SS:[EBP-94],attstart.00404110  ; UNICODE "&H"
  93. 0040A292     C785 64FFFFFF 080000>MOV DWORD PTR SS:[EBP-9C],8
  94. 0040A29C     FFD3                 CALL EBX    - формирует в стеке строку  UNICODE "&HEB"
  95. 0040A29E     8D4D 94              LEA ECX,DWORD PTR SS:[EBP-6C]
  96. 0040A2A1     50                   PUSH EAX
  97. 0040A2A2     51                   PUSH ECX
  98. 0040A2A3     FF15 20114000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVarVal>; msvbvm60.__vbaStrVarVal
  99. 0040A2A9     50                   PUSH EAX
  100. 0040A2AA     FF15 C8114000        CALL DWORD PTR DS:[<&MSVBVM60.#581>]         ; msvbvm60.rtcR8ValFromBstr
  101. 0040A2B0     DD9D 5CFFFFFF        FSTP QWORD PTR SS:[EBP-A4]  - <u>отсюда ?????????????????????</u>
  102. 0040A2B6     8D95 54FFFFFF        LEA EDX,DWORD PTR SS:[EBP-AC]
  103. 0040A2BC     8D4D AC              LEA ECX,DWORD PTR SS:[EBP-54]
  104. 0040A2BF     C785 54FFFFFF 050000>MOV DWORD PTR SS:[EBP-AC],5
  105. 0040A2C9     FFD6                 CALL ESI
  106. 0040A2CB     8D4D 94              LEA ECX,DWORD PTR SS:[EBP-6C]
  107. 0040A2CE     FF15 C0114000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; msvbvm60.__vbaFreeStr
  108. 0040A2D4     8D4D 84              LEA ECX,DWORD PTR SS:[EBP-7C]
  109. 0040A2D7     FFD7                 CALL EDI
  110. 0040A2D9     8D55 AC              LEA EDX,DWORD PTR SS:[EBP-54]
  111. 0040A2DC     8D85 64FFFFFF        LEA EAX,DWORD PTR SS:[EBP-9C]
  112. 0040A2E2     52                   PUSH EDX
  113. 0040A2E3     50                   PUSH EAX
  114. 0040A2E4     C785 6CFFFFFF 640000>MOV DWORD PTR SS:[EBP-94],64
  115. 0040A2EE     C785 64FFFFFF 028000>MOV DWORD PTR SS:[EBP-9C],8002
  116. 0040A2F8     FF15 84114000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarTstGe>>; msvbvm60.__vbaVarTstGe
  117. 0040A2FE     66:85C0              TEST AX,AX
  118. 0040A301     74 30                JE SHORT attstart.0040A333
  119. 0040A303     8D4D AC              LEA ECX,DWORD PTR SS:[EBP-54]
  120. 0040A306     8D95 64FFFFFF        LEA EDX,DWORD PTR SS:[EBP-9C]
  121. 0040A30C     51                   PUSH ECX
  122. 0040A30D     8D45 84              LEA EAX,DWORD PTR SS:[EBP-7C]
  123. 0040A310     52                   PUSH EDX
  124. 0040A311     50                   PUSH EAX
  125. 0040A312     C785 6CFFFFFF 640000>MOV DWORD PTR SS:[EBP-94],64
  126. 0040A31C     C785 64FFFFFF 020000>MOV DWORD PTR SS:[EBP-9C],2
  127. 0040A326     FF15 00104000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarSub>]  ; msvbvm60.__vbaVarSub
  128. 0040A32C     8BD0                 MOV EDX,EAX
  129. 0040A32E     8D4D AC              LEA ECX,DWORD PTR SS:[EBP-54]
  130. 0040A331     FFD6                 CALL ESI
  131. 0040A333     8D4D AC              LEA ECX,DWORD PTR SS:[EBP-54]
  132. 0040A336     8D95 64FFFFFF        LEA EDX,DWORD PTR SS:[EBP-9C]
  133. 0040A33C     51                   PUSH ECX
  134. 0040A33D     52                   PUSH EDX
  135. 0040A33E     C785 6CFFFFFF 640000>MOV DWORD PTR SS:[EBP-94],64
  136. 0040A348     C785 64FFFFFF 028000>MOV DWORD PTR SS:[EBP-9C],8002
  137. 0040A352     FF15 84114000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarTstGe>>; msvbvm60.__vbaVarTstGe
  138. 0040A358     66:85C0              TEST AX,AX
  139. 0040A35B     74 30                JE SHORT attstart.0040A38D
  140. 0040A35D     8D45 AC              LEA EAX,DWORD PTR SS:[EBP-54]
  141. 0040A360     8D8D 64FFFFFF        LEA ECX,DWORD PTR SS:[EBP-9C]
  142. 0040A366     50                   PUSH EAX
  143. 0040A367     8D55 84              LEA EDX,DWORD PTR SS:[EBP-7C]
  144. 0040A36A     51                   PUSH ECX
  145. 0040A36B     52                   PUSH EDX
  146. 0040A36C     C785 6CFFFFFF 640000>MOV DWORD PTR SS:[EBP-94],64
  147. 0040A376     C785 64FFFFFF 020000>MOV DWORD PTR SS:[EBP-9C],2
  148. 0040A380     FF15 00104000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarSub>]  ; msvbvm60.__vbaVarSub
  149. 0040A386     8BD0                 MOV EDX,EAX
  150. 0040A388     8D4D AC              LEA ECX,DWORD PTR SS:[EBP-54]
  151. 0040A38B     FFD6                 CALL ESI
  152. 0040A38D     8D55 98              LEA EDX,DWORD PTR SS:[EBP-68]
  153. 0040A390     B9 0C400000          MOV ECX,400C
  154. 0040A395     52                   PUSH EDX




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

Создано: 29 февраля 2012 11:14 · Поправил: Loh_Ushastik
· Личное сообщение · #2

Продолжение функи :

Code:
  1. 0040A396     898D 64FFFFFF        MOV DWORD PTR SS:[EBP-9C],ECX
  2. 0040A39C     83EC 10              SUB ESP,10
  3. 0040A39F     8D45 AC              LEA EAX,DWORD PTR SS:[EBP-54]
  4. 0040A3A2     8BD4                 MOV EDX,ESP
  5. 0040A3A4     8985 6CFFFFFF        MOV DWORD PTR SS:[EBP-94],EAX
  6. 0040A3AA     6A 01                PUSH 1
  7. 0040A3AC     68 30E04000          PUSH attstart.0040E030
  8. 0040A3B1     890A                 MOV DWORD PTR DS:[EDX],ECX
  9. 0040A3B3     8B8D 68FFFFFF        MOV ECX,DWORD PTR SS:[EBP-98]
  10. 0040A3B9     894A 04              MOV DWORD PTR DS:[EDX+4],ECX
  11. 0040A3BC     8D4D 84              LEA ECX,DWORD PTR SS:[EBP-7C]
  12. 0040A3BF     51                   PUSH ECX
  13. 0040A3C0     8942 08              MOV DWORD PTR DS:[EDX+8],EAX
  14. 0040A3C3     8B85 70FFFFFF        MOV EAX,DWORD PTR SS:[EBP-90]
  15. 0040A3C9     8942 0C              MOV DWORD PTR DS:[EDX+C],EAX
  16. 0040A3CC     FF15 80104000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarIndexL>; msvbvm60.__vbaVarIndexLoad
  17. 0040A3D2     83C4 1C              ADD ESP,1C
  18. 0040A3D5     8D95 74FFFFFF        LEA EDX,DWORD PTR SS:[EBP-8C]
  19. 0040A3DB     50                   PUSH EAX
  20. 0040A3DC     52                   PUSH EDX
  21. 0040A3DD     FFD3                 CALL EBX
  22. 0040A3DF     8BD0                 MOV EDX,EAX
  23. 0040A3E1     8D4D 98              LEA ECX,DWORD PTR SS:[EBP-68]
  24. 0040A3E4     FFD6                 CALL ESI
  25. 0040A3E6     8D4D 84              LEA ECX,DWORD PTR SS:[EBP-7C]
  26. 0040A3E9     FFD7                 CALL EDI
  27. 0040A3EB     8D85 24FFFFFF        LEA EAX,DWORD PTR SS:[EBP-DC]
  28. 0040A3F1     8D8D 34FFFFFF        LEA ECX,DWORD PTR SS:[EBP-CC]
  29. 0040A3F7     50                   PUSH EAX
  30. 0040A3F8     8D55 DC              LEA EDX,DWORD PTR SS:[EBP-24]
  31. 0040A3FB     51                   PUSH ECX
  32. 0040A3FC     52                   PUSH EDX
  33. 0040A3FD     FF15 B4114000        CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarForNex>; msvbvm60.__vbaVarForNext
  34. 0040A403   ^ E9 2EFEFFFF          JMP attstart.0040A236

0040A2B0 - отсюда начинаются вопросы!
т.е. алго прост - прога в цикле берет с начала строки ID пары из "EB231015F898B12E", первая "EB", дальше формирует строку "&HEB" т.е. как я понимаю аналог на делфи chr($EB) а вот дальше что за манипуляция такая с адреса 0040A2b0 что в итоге получает "A" в стеке , которая является первым символом ключа активации? Для этого ID ключ в итоге получается UNICODE "AASVVY3T".
Подскажите что и как, уверен что все окажется просто, за что будет стыдно



Ранг: 3.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 29 февраля 2012 11:33 · Поправил: LeeBay
· Личное сообщение · #3

Самое простое - это смотреть по функциям MSVBVM60...
msvbvm60.__vbaVarTstGe - Сравнение двух переменных: больше или равно. Результат в EAX...
msvbvm60.__vbaVarSub - вычитание двух переменных... Результат в EAX...
msvbvm60.__vbaVarIndexLoad - не знаю точно, но помоему это загрузка переменной из массива по индексу...
msvbvm60.__vbaVarForNext - цикл...

Можно почитать --> ТУТ <--



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

Создано: 29 февраля 2012 11:45
· Личное сообщение · #4

LeeBay пишет:
Можно почитать --> ТУТ <--
спасибо, читаю



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 29 февраля 2012 11:49
· Личное сообщение · #5

Code:
  1. msvbvm60.rtcR8ValFromBstr

Это преобразование строки в real8.
Code:
  1. FSTP QWORD PTR SS:[EBP-A4]

а это сохранение real числа в стек.

Для разбора вот этой хрени идеально подходит hex rays. Прописать аргументы функциям и все.

-----
Реверсивная инженерия - написание кода идентичного натуральному




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

Создано: 29 февраля 2012 11:55
· Личное сообщение · #6

Hexxx пишет:
hex rays. Прописать аргументы функциям и все.

никкогда не работал с этой софтиной и не делал этого, попробую скачать и разобраться. Если будут вопросы (а они будут) задам.



Ранг: 51.8 (постоянный), 58thx
Активность: 0.03=0.03
Статус: Участник

Создано: 29 февраля 2012 14:08
· Личное сообщение · #7

Лучше бы, конечно, программу выложить... Под отладчиком все непонятки сразу бы снялись.

Если очередной байт больше 100, то из него вычитается 100 до тех пор, пока не станет меньше (или меньше-равно). А потом из массива по адресу 40E030 берется элемент с получившимся индексом в очередной символ ключа. Вроде как-то так. Т. е. по адресу 40E030, вероятно, должен быть символьный массив.



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

Создано: 29 февраля 2012 14:17
· Личное сообщение · #8

Сейчас попробую все это в кучу собрать в голове и осмыслить



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

Создано: 29 февраля 2012 20:43
· Личное сообщение · #9

Если есть ссылка на офф сайт программы автора, можешь отписать в пм.



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

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

Hexxx пишет:
Для разбора вот этой хрени идеально подходит hex rays. Прописать аргументы функциям и все.


в этой хрени очень много лишнего от RT, ida и rays в ней просто тунут:

Code:
  1. int __cdecl sub_402BA0(int a1)
  2. {
  3.   int v1; // esi@1
  4.   int v2; // edi@1
  5.   int v3; // eax@2
  6.   int v4; // eax@2
  7.   int v5; // edi@2
  8.   int v6; // ebx@2
  9.   int v7; // eax@2
  10.   int v8; // eax@2
  11.   int v9; // edx@6
  12.   int v10; // eax@6
  13.   int v11; // edi@6
  14.   int v12; // ebx@6
  15.   int v13; // eax@6
  16.   int v14; // eax@6
  17.   int v16; // [sp-Ch] [bp-8Ch]@1
  18.   int v17; // [sp-8h] [bp-88h]@1
  19.   int v18; // [sp-4h] [bp-84h]@1
  20.   int v19; // [sp+0h] [bp-80h]@1
  21.   int v20; // [sp+4h] [bp-7Ch]@1
  22.   int v21; // [sp+8h] [bp-78h]@1
  23.   int v22; // [sp+Ch] [bp-74h]@1
  24.   int v23; // [sp+10h] [bp-70h]@1
  25.   int v24; // [sp+14h] [bp-6Ch]@1
  26.   int v25; // [sp+18h] [bp-68h]@1
  27.   int v26; // [sp+1Ch] [bp-64h]@1
  28.   int v27; // [sp+20h] [bp-60h]@1
  29.   int v28; // [sp+24h] [bp-5Ch]@1
  30.   int v29; // [sp+28h] [bp-58h]@1
  31.   int v30; // [sp+2Ch] [bp-54h]@1
  32.   int v31; // [sp+30h] [bp-50h]@1
  33.   int v32; // [sp+34h] [bp-4Ch]@1
  34.   int v33; // [sp+38h] [bp-48h]@1
  35.   int v34; // [sp+3Ch] [bp-44h]@1
  36.   int v35; // [sp+40h] [bp-40h]@1
  37.   int v36; // [sp+44h] [bp-3Ch]@1
  38.   int v37; // [sp+48h] [bp-38h]@1
  39.   int v38; // [sp+4Ch] [bp-34h]@1
  40.   int v39; // [sp+50h] [bp-30h]@1
  41.   int v40; // [sp+54h] [bp-2Ch]@1
  42.   int *v41; // [sp+58h] [bp-28h]@1
  43.   int v42; // [sp+5Ch] [bp-24h]@1
  44.   int v43; // [sp+64h] [bp-1Ch]@1
  45.   int v44; // [sp+68h] [bp-18h]@1
  46.   int *v45; // [sp+74h] [bp-Ch]@1
  47.   int v46; // [sp+78h] [bp-8h]@1
  48.   int v47; // [sp+7Ch] [bp-4h]@1
  49.  
  50.   v45 = &v16;
  51.   v46 = (int)dword_401110;
  52.   v47 = a1 & 1;
  53.   v1 = a1 & 0xFFFFFFFE;
  54.   (*(void (__stdcall **)(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int *, int))(*(_DWORD *)v1 + 4))(
  55.     v1,
  56.     v16,
  57.     v17,
  58.     v18,
  59.     v19,
  60.     v20,
  61.     v21,
  62.     v22,
  63.     v23,
  64.     v24,
  65.     v25,
  66.     v26,
  67.     v27,
  68.     v28,
  69.     v29,
  70.     v30,
  71.     v31,
  72.     v32,
  73.     v33,
  74.     v34,
  75.     v35,
  76.     v36,
  77.     v37,
  78.     v38,
  79.     v39,
  80.     v40,
  81.     v41,
  82.     v42);
  83.   v2 = (a1 & 0xFFFFFFFE) + 88;
  84.   v44 = 0;
  85.   v43 = 0;
  86.   v40 = 0;
  87.   v36 = 0;
  88.   v32 = 0;
  89.   v24 = 0;
  90.   v30 = (int)L"NEG";
  91.   v28 = 32776;
  92.   v19 = (a1 & 0xFFFFFFFE) + 88;
  93.   if ( (unsigned __int16)_vbaVarTstEq(&v28, (a1 & 0xFFFFFFFE) + 88) )
  94.   {
  95.     v3 = *(_DWORD *)v1;
  96.     v42 = a1 & 0xFFFFFFFE;
  97.     v4 = (*(int (__stdcall **)(int))(v3 + 788))(v1);
  98.     v5 = _vbaObjSet(&v43, v4);
  99.     v26 = (int)L"-0.";
  100.     v24 = 8;
  101.     _vbaVarDup(&v36, &v24);
  102.     rtcVarFromFormatVar(&v32, &v40, 2, 1, 0);
  103.     v6 = *(_DWORD *)v5;
  104.     v7 = _vbaStrVarVal(&v44, &v32);
  105.     v42 = v7;
  106.     v41 = (int *)v5;
  107.     v8 = (*(int (__stdcall **)(int, int))(v6 + 84))(v5, v7);
  108.     __asm { fnclex }
  109.     if ( v8 < 0 )
  110.       _vbaHresultCheckObj(v8, v5, dword_401F58, 84);
  111.     _vbaFreeStr(&v44);
  112.     _vbaFreeObj(&v43);
  113.     v42 = (int)&v32;
  114.     v41 = &v36;
  115.     v40 = (int)&v40;
  116. LABEL_9:
  117.     _vbaFreeVarList(3, v40, v41, v42);
  118.     v2 = v19;
  119.     goto LABEL_10;
  120.   }
  121.   v30 = (int)L"NUMS";
  122.   v28 = 32776;
  123.   if ( (unsigned __int16)_vbaVarTstNe(&v28, v1 + 88) )
  124.   {
  125.     v9 = *(_DWORD *)v1;
  126.     v42 = a1 & 0xFFFFFFFE;
  127.     v10 = (*(int (__stdcall **)(int))(v9 + 788))(v1);
  128.     v11 = _vbaObjSet(&v43, v10);
  129.     v26 = (int)L"0.";
  130.     v24 = 8;
  131.     _vbaVarDup(&v36, &v24);
  132.     rtcVarFromFormatVar(&v32, &v40, 2, 1, 0);
  133.     v12 = *(_DWORD *)v11;
  134.     v13 = _vbaStrVarVal(&v44, &v32);
  135.     v42 = v13;
  136.     v41 = (int *)v11;
  137.     v14 = (*(int (__stdcall **)(int, int))(v12 + 84))(v11, v13);
  138.     __asm { fnclex }
  139.     if ( v14 < 0 )
  140.       _vbaHresultCheckObj(v14, v11, dword_401F58, 84);
  141.     _vbaFreeStr(&v44);
  142.     _vbaFreeObj(&v43);
  143.     v42 = (int)&v32;
  144.     v41 = &v36;
  145.     v40 = (int)&v40;
  146.     goto LABEL_9;
  147.   }
  148. LABEL_10:
  149.   *(_WORD *)(v1 + 84) = -1;
  150.   return _vbaVarCopy(v2, &v28);
  151. }


а вот что выдает специализированная тулза:

Code:
  1.   Decimal_Click
  2.  Dim v0018 As String
  3.  Dim v001C As Object
  4.  Dim v002C As Variant
  5.  Dim v003C As Variant
  6.  Dim v004C As Variant
  7.  Dim v005C As Variant
  8.  Dim v006C As Variant
  9.  
  10.     28.00402BED: v0018 = 0
  11.     29.00402BF0: v001C = 0
  12.     39.00402C19: IF (Me0058 = "NEG") <> 0 THEN
  13.     72.00402C81:   Me.Readout.Caption = Format(0, "-0.", 1, 1)
  14.                  ELSE
  15.    100.00402CDA:   IF (Me0058 <> "NUMS") <> 0 THEN
  16.    133.00402D42:     Me.Readout.Caption = Format(0, "0.", 1, 1)
  17.                    FI
  18.                  FI
  19.    159.00402D8D: Me0054 = &H0000FFFF
  20.    162.00402DA1: Me0058 = "NUMS"
  21.                  END SUB


почувствуйте разницу с идеалом



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

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

sen пишет:
а вот что выдает специализированная тулза:
а что за тузла, можно ссыль на неё и описание?




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

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

VB Decompiler, не?



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

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

Airenikus пишет:
VB Decompiler, не?

... там тож воды много если сравнивать с вариантом от тузлы которую представил sen



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 02 марта 2012 11:04 · Поправил: Hexxx
· Личное сообщение · #14

sen пишет:
в этой хрени очень много лишнего от RT, ida и rays в ней просто тунут

Вы просто не умеете готовить.
sen пишет:
а вот что выдает специализированная тулза:

А это для любителей VB, ни чем не лучше hex rays. А так, чего ждать? Давайте, продавайте уже свою тулзу. Рекламу уже все увидели.

-----
Реверсивная инженерия - написание кода идентичного натуральному



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


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