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

 eXeL@B —› Основной форум —› помогите с p-code 2 (или вопрос к DrGolova)
. 1 . 2 . >>
Посл.ответ Сообщение


Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 01 ноября 2004 11:18
· Личное сообщение · #1

Вот поглядел на то, как ты алгоритм к одной из
прог bousoft выдрал... может и эту глянешь?

BouSoft CHM Maker

программа для создания электронных книг и справочных систем в формате CHM, а также декомпиляции готовых CHM-файлов. Программа позволяет максимально упростить и ускорить процесс создания электронной книги: если у Вас имеется папка с готовыми HTML-страницами, то получить готовую книгу при помощи данной программы можно за два щелчка мышью. А большое количество настроек для интерфейса программы просмотра позволит получить книгу, с которой будет удобно работать.

www.bousoft.com/bcm/bcm_inst.exe

тоже p-code
размер 1.5 Mb

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




Ранг: 45.7 (посетитель)
Активность: 0.050
Статус: Участник
EBFE

Создано: 01 ноября 2004 15:12
· Личное сообщение · #2

глючит ваш VB (как и следовало ожидать), даже со скачанной dll выдает "system error четотам класс не существует"

x(




Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 02 ноября 2004 04:50
· Личное сообщение · #3

Как вот это понимать? Я VB вобще не знаю
If Rigth(vFF44, vFF64, 1) = CStr(8) Then




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 02 ноября 2004 08:11
· Личное сообщение · #4

DrGolova пишет:
Как вот это понимать? Я VB вобще не знаю
If Rigth(vFF44, vFF64, 1) = CStr(8) Then


это понимать как:

если в строке vFF44 символ номер vFF64 равен CStr(8) то

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 02 ноября 2004 08:28
· Личное сообщение · #5

Звезды мне подсказывают что Right() просто берет самый последный символ в строке.




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 02 ноября 2004 08:43
· Личное сообщение · #6

DrGolova пишет:
Звезды мне подсказывают что Right() просто берет самый последный символ в строке.


Right Function


Returns a Variant (String) containing a specified number of characters from the right side of a string.

Syntax

Right(string, length)

The Right function syntax has these named arguments:

Part Description
string Required. String expression from which the rightmost characters are returned. If string contains Null, Null is returned.
length Required; Variant (Long). Numeric expression indicating how many characters to return. If 0, a zero-length string ("") is returned. If greater than or equal to the number of characters in string, the entire string is returned.

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 02 ноября 2004 08:44
· Личное сообщение · #7

DrGolova
Ну что, есть какие нибудь успехи?

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 02 ноября 2004 08:56
· Личное сообщение · #8

Ну вобщем вот: WT9C-KP64-L3R8

#include <stdlib.h>
#include <memory.h>
#include <stdio.h>
#include <time.h>

static void bcm_gen_key(char* buf)
{
*buf++ = (rand() & 1) ? 'W' : 'M';
*buf++ = 'T';
*buf++ = (rand() & 1) ? '9' : 'H';
*buf++ = (rand() & 1) ? 'C' : '8';
*buf++ = '-';
*buf++ = (rand() & 1) ? 'M' : 'K';
memcpy(buf, (rand() & 1) ? "P6" : "G8", 2);
buf += 2;
*buf++ = (rand() & 1) ? '9' : '4';
*buf++ = '-';
*buf++ = (rand() & 1) ? 'L' : 'U';
*buf++ = (rand() & 1) ? '7' : '3';
*buf++ = (rand() & 1) ? 'Y' : 'R';
*buf++ = '8';
*buf = '\0';
}

int main(int argc, char** argv)
{
char key[16];

srand(time(0));
bcm_gen_key(key);
printf("%s\n", key);
return(0);
}





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 02 ноября 2004 10:21
· Личное сообщение · #9

DrGolova
Cool!!! Кейген писать? Или сам?

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 02 ноября 2004 10:44
· Личное сообщение · #10

> Cool!!! Кейген писать? Или сам?
Ну шо вы, я законопослушный гражданин - кейгенов не пишу, ниче не ломаю и вобще не знаю кто такие хакеры.




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 02 ноября 2004 11:04
· Личное сообщение · #11

Дак ты его уже написал!!! Рулез... сразу не заметил Откомпилил - работает... а я уж у автора решил ключ просить

Вот как это может выглядеть на VB:


Private Function bcm_gen_key()
Randomize Timer
If (Rnd And 1) Then buf = buf & "W" Else buf = buf & "M"
buf = buf & "T"
If (Rnd And 1) Then buf = buf & "9" Else buf = buf & "H"
If (Rnd And 1) Then buf = buf & "C" Else buf = buf & "8"
buf = buf & "-"
If (Rnd And 1) Then buf = buf & "M" Else buf = buf & "K"
If (Rnd And 1) Then buf = buf & "P8" Else buf = buf & "G8"
If (Rnd And 1) Then buf = buf & "9" Else buf = buf & "4"
buf = buf & "-"
If (Rnd And 1) Then buf = buf & "L" Else buf = buf & "U"
If (Rnd And 1) Then buf = buf & "7" Else buf = buf & "3"
If (Rnd And 1) Then buf = buf & "Y" Else buf = buf & "R"
buf = buf & "8"
bcm_gen_key = buf
End Function

Private Sub cmdGenerate_Click()
msgbox bcm_gen_key
End Sub


-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 02 ноября 2004 11:11
· Личное сообщение · #12

> Дак ты его уже написал!!!

Нет тащ прокурор! Я писал генератор строчек, а результаты его работы каким-то мистическим образом прога стала заглатывать как свои ключики



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

Создано: 03 ноября 2004 02:46
· Личное сообщение · #13

Ех, нам бы такой декомпилер



Ранг: 19.6 (новичок)
Активность: 0.030
Статус: Участник

Создано: 03 ноября 2004 04:06
· Личное сообщение · #14

DrGolova
поделился бы хоть через личку своей тузлой




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 11 августа 2011 06:34
· Личное сообщение · #15

Понекропостю-ка я немного по поводу P-Code
В общем есть прога --> Link <--
Регистрация в P-Code, VB Decompiler показывает, но далеко от понимания
Может у DrGolova ещё не потерялся инструмент и что-то более читабельное сделает?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 123.0 (ветеран), 10thx
Активность: 0.060
Статус: Участник

Создано: 11 августа 2011 10:12 · Поправил: Ultras
· Личное сообщение · #16

Рекомендую порефакторить полученный декомпилятором код. Все сразу станет понятно.
Основная проверка тут: Proc_6_12_B5E494, серийник сохраняется в ini-шке.
Из инструментов у DrGolova я думаю была только его Golova

-----
.[ rE! p0w4 ].


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


Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 11 августа 2011 15:45 · Поправил: Isaev
· Личное сообщение · #17

Ultras то, что там основная проверка и в VB Decompiler видно
А вышеприведённая поделка (и из соседней темы тоже) как раз большую часть рефакторинга и выполняет
ладно, придётся тогда время убивать )

Вопрос созрел:
Code:
  1.   loc_B5DC04: MemVar_B951FC = "MCP"
  2.   loc_B5DC1D: MemVar_B95200 = Me.txt_KdName.Text
  3.   loc_B5DC27: MemVar_B95204 = MemVar_B95200
  4.   loc_B5DC40: MemVar_B95208 = Me.txt_KdNr.Text
  5. ...
  6.   loc_B5DD80: MemVar_B9520C = MemVar_B951FC & MemVar_B95204 & MemVar_B95208

Это посимвольный AND? А если символы кончаются, то с нулём? тогда учавствуют только первые 3 символа, как-то глупо или я не так понимаю суть

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 11 августа 2011 21:49 · Поправил: DrVB_5_6
· Личное сообщение · #18

Isaev
VB Decompiler в данном случае лепит "горбатого", реальный код выглядит так:

Code:
  1. 00B5DBFC:   mdl_MCP_Ini_01FC = 0
  2. 00B5DC01:   mdl_MCP_Ini_01E0 = "MCP"
  3. 00B5DC08:   mdl_MCP_Ini_01E4 = txt_KdName.Text
  4. 00B5DC24:   mdl_MCP_Ini_01E8 = mdl_MCP_Ini_01E4
  5. 00B5DC2B:   mdl_MCP_Ini_01EC = txt_KdNr.Text
  6. 00B5DC47:   mdl_MCP_Ini_01F4 = txt_Key(0).Text & txt_Key(1).Text & txt_Key(2).Text
  7. 00B5DCD0:   If Len(mdl_MCP_Ini_01E8) = 0 Then
  8. 00B5DCDD:         mdl_MCP_Ini_01FC = 1
  9. 00B5DCE2:   ElseIf Len(mdl_MCP_Ini_01EC) < 5 Then
  10. 00B5DCF2:          mdl_MCP_Ini_01FC = 2
  11. 00B5DCF7:   Else ' [end B5E2C3]

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

Ну а как и для чего тут используется & видно из приведённого выше куска!!!




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 11 августа 2011 21:56 · Поправил: Isaev
· Личное сообщение · #19

DrVB_5_6 пишет:
реальный код выглядит так

это чем получено?

В VB Decompiler в общем так же, там просто вырезан кусок, потому стоит '...'
Последняя строка ниже по коду идёт
DrVB_5_6 пишет:
Ну а как и для чего тут используется & видно из приведённого выше куска!!!

не видно )

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 11 августа 2011 22:07 · Поправил: DrVB_5_6
· Личное сообщение · #20

To Isaev
это чем получено?

личными средствами... приват.

txt_Key - массив контролов

Code:
  1.          Begin VB.TextBox txt_Key
  2.             Appearance      =   0  'Flat
  3.             BackColor       =   &H00FFFFC0&
  4.             BorderStyle     =   0  'None
  5.             Height          =   225
  6.             Index           =   0
  7.             Left            =   1800
  8.             MaxLength       =   5
  9.             TabIndex        =   2
  10.             Top             =   15
  11.             Width           =   795
  12.          End


совсем не трудно догадаться по контексту...

Мне лениво смотреть, как там работает Vb Decompiler, только никаких "..." в данном случае не должно быть
Я привожу то, что есть на самом деле (как должно быть декомпилировано) без всяких пропусков, целиком!!!



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 11 августа 2011 22:17
· Личное сообщение · #21

Ultras пишет:
Из инструментов у DrGolova я думаю была только его Golova

Да, нет. Существует такая тулза в застенках ЛК, насколько мне известно. Только вот последние версии VB Decompiler'а by GPcH ее опережают. В ЛК никто ставки на нее просто не делал. Вирусы изучать можно - да и ладно.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 11 августа 2011 22:18 · Поправил: Isaev
· Личное сообщение · #22

DrVB_5_6 пишет:
txt_Key - массив контролов

это и так ясно, это 3 поля от введённого серийника
DrVB_5_6 пишет:
только никаких "..." в данном случае не должно быть

вы не внимательны, отсюда говорим о разных вещах

loc_B5DD80: MemVar_B9520C = MemVar_B951FC & MemVar_B95204 & MemVar_B95208
эта строка будет дальше по тексту получена вашими средствами тоже, вопрос был в том, что 3 строки разных длинн, самая короткая 3 символа, накладываются посимвольно друг на друга?!... Значит ли это, что от всех строк нужно только 3 символа рассматривать или там AND не с нулями будет?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 11 августа 2011 22:24
· Личное сообщение · #23

To Isaev
Вообще-то & в Visual Basic - это операция конкатенации...

loc_B5DD80: MemVar_B9520C = MemVar_B951FC & MemVar_B95204 & MemVar_B95208
эта херня вообще ни в какие ворота не лезет...

Так что тут всего-то идет конкатенация трех строк...

Дальше надо разжевывать?

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


Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 11 августа 2011 22:29 · Поправил: Isaev
· Личное сообщение · #24

DrVB_5_6 пишет:
Вообще-то & в Visual Basic - это операция конкатенации...

вот это я и хотел узнать!
DrVB_5_6 пишет:
Дальше надо разжевывать?

пока не надо

DrVB_5_6 пишет:
эта херня вообще ни в какие ворота не лезет...

ниже смотри, там разница байт 320... у тебя примерно такое будет:
mdl_MCP_Ini_xxxx = mdl_MCP_Ini_01E0 & mdl_MCP_Ini_01E8 & mdl_MCP_Ini_01EC

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 11 августа 2011 22:54 · Поправил: DrVB_5_6
· Личное сообщение · #25

To Isaev
Code:
  1. Private Sub proc_EvPtr_06_0c()
  2.  
  3. 00B5DBFC:   mdl_MCP_Ini_01FC = 0
  4. 00B5DC01:   mdl_MCP_Ini_01E0 = "MCP"
  5. 00B5DC08:   mdl_MCP_Ini_01E4 = txt_KdName.Text
  6. 00B5DC24:   mdl_MCP_Ini_01E8 = mdl_MCP_Ini_01E4
  7. 00B5DC2B:   mdl_MCP_Ini_01EC = txt_KdNr.Text
  8. 00B5DC47:   mdl_MCP_Ini_01F4 = txt_Key(0).Text & txt_Key(1).Text & txt_Key(2).Text
  9. 00B5DCD0:   If Len(mdl_MCP_Ini_01E8) = 0 Then
  10. 00B5DCDD:     mdl_MCP_Ini_01FC = 1
  11. 00B5DCE2:   ElseIf Len(mdl_MCP_Ini_01EC) < 5 Then
  12. 00B5DCF2:     mdl_MCP_Ini_01FC = 2
  13. 00B5DCF7:   Else ' [end B5E2C3]
  14. 00B5DCFA:     If Len(mdl_MCP_Ini_01E8) < 7 Then
  15. 00B5DD07:       mdl_MCP_Ini_01E8 = mdl_MCP_Ini_01E8 & String(7 - Len(mdl_MCP_Ini_01E8), " ")
  16. 00B5DD3F:     End If ' [from B5DCFA]
  17. 00B5DD3F:     mdl_MCP_Ini_01E8 = Left(mdl_MCP_Ini_01E8, 7)
  18. 00B5DD5F:     mdl_MCP_Ini_0280 = Len(mdl_MCP_Ini_023C(2))
  19. 00B5DD6D:     mdl_MCP_Ini_0278 = 0
  20. 00B5DD72: ploc_B5DD72:
  21. 00B5DD72:     mdl_MCP_Ini_01F0 = mdl_MCP_Ini_01E0 & mdl_MCP_Ini_01E8 & mdl_MCP_Ini_01EC
  22. 00B5DD87:     mdl_MCP_Ini_027C = Right(mdl_MCP_Ini_023C(2), mdl_MCP_Ini_0278) & Left(mdl_MCP_Ini_023C(2), mdl_MCP_Ini_0280 - mdl_MCP_Ini_0278)
  23. 00B5DDD7:     mdl_MCP_Ini_0278 = mdl_MCP_Ini_0278 + 1
  24. 00B5DDE0:     mdl_MCP_Ini_0284 = Str(mdl_MCP_Ini_0278)
  25. 00B5DDFB:     mdl_MCP_Ini_01F8 = ""
  26. 00B5DE02:     For mdl_MCP_Ini_002A = 1 To 15
  27. 00B5DE0F:       For mdl_MCP_Ini_002C = 1 To Len(mdl_MCP_Ini_023C(1))
  28. 00B5DE25:         If Mid(mdl_MCP_Ini_01F0, mdl_MCP_Ini_002A, 1) = Mid(mdl_MCP_Ini_023C(1), mdl_MCP_Ini_002C, 1) Then
  29. 00B5DE73:           mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_027C, mdl_MCP_Ini_002C, 1)
  30. 00B5DEA7:         End If ' [from B5DE25]
  31. 00B5DEA7:       Next mdl_MCP_Ini_002C
  32. 00B5DEAF:     Next mdl_MCP_Ini_002A
  33. 00B5DEB7:     mdl_MCP_Ini_01F0 = mdl_MCP_Ini_01F8
  34. 00B5DEBE:     mdl_MCP_Ini_01F8 = ""
  35. 00B5DEC5:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 6, 1)
  36. 00B5DEFA:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 3, 1)
  37. 00B5DF2F:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 9, 1)
  38. 00B5DF64:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 11, 1)
  39. 00B5DF99:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 5, 1)
  40. 00B5DFCE:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 1, 1)
  41. 00B5E003:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 10, 1)
  42. 00B5E038:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 13, 1)
  43. 00B5E06D:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 2, 1)
  44. 00B5E0A2:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 15, 1)
  45. 00B5E0D7:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 12, 1)
  46. 00B5E10C:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 4, 1)
  47. 00B5E141:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 8, 1)
  48. 00B5E176:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 14, 1)
  49. 00B5E1AB:     mdl_MCP_Ini_01F8 = mdl_MCP_Ini_01F8 & Mid(mdl_MCP_Ini_01F0, 7, 1)
  50. 00B5E1E0:     For mdl_MCP_Ini_002A = 1 To 15
  51. 00B5E1ED:       If Mid(mdl_MCP_Ini_01F8, mdl_MCP_Ini_002A, 1) <> Mid(mdl_MCP_Ini_01F4, mdl_MCP_Ini_002A, 1) Then
  52. 00B5E235:         mdl_MCP_Ini_01FC = 9
  53. 00B5E23A:       End If ' [from B5E1ED]
  54. 00B5E23A:     Next mdl_MCP_Ini_002A
  55. 00B5E242:     If mdl_MCP_Ini_01FC = 9 Then
  56. 00B5E24B:       If mdl_MCP_Ini_0278 = 50 Then
  57. 00B5E254:         GoTo ploc_B5E2C3
  58. 00B5E257:       Else ' [end B5E262]
  59. 00B5E25A:         mdl_MCP_Ini_01FC = False
  60. 00B5E25F:         GoTo ploc_B5DD72
  61. 00B5E262:       End If ' [from B5E24B]
  62. 00B5E262:     End If ' [from B5E242]
  63. 00B5E262:     MsgBox mdl_MCP_Ini_0198(904, 1) & vbCrLf & mdl_MCP_Ini_0198(904, 2), 64, mdl_MCP_Ini_017C(904)
  64. 00B5E2BD:     mdl_MCP_Ini_0270 = -1
  65. 00B5E2C2:     Exit Sub
  66. 00B5E2C3:   End If ' [from B5DCD0]
  67. 00B5E2C3: ploc_B5E2C3:
  68. 00B5E2C3:   Select Case mdl_MCP_Ini_01FC
  69. 00B5E2C9:     Case 1
  70. 00B5E2D2:       MsgBox mdl_MCP_Ini_0198(901, 1) & vbCrLf & mdl_MCP_Ini_0198(901, 2), 16, mdl_MCP_Ini_017C(901)
  71. 00B5E32D:       txt_KdName.SetFocus
  72. 00B5E33F:     Case 2
  73. 00B5E34B:       MsgBox mdl_MCP_Ini_0198(902, 1) & vbCrLf & mdl_MCP_Ini_0198(902, 2), 16, mdl_MCP_Ini_017C(902)
  74. 00B5E3A6:       txt_KdNr.SetFocus
  75. 00B5E3B8:     Case 9
  76. 00B5E3C4:       MsgBox mdl_MCP_Ini_0198(903, 1) & vbCrLf & mdl_MCP_Ini_0198(903, 2) & vbCrLf & mdl_MCP_Ini_0198(903, 3), 16, mdl_MCP_Ini_017C(903)
  77. 00B5E443:       For mdl_MCP_Ini_002A = 0 To 2
  78. 00B5E450:         txt_Key(mdl_MCP_Ini_002A).Text = ""
  79. 00B5E477:       Next mdl_MCP_Ini_002A
  80. 00B5E47F:       txt_KdName.SetFocus
  81. 00B5E491:   End Select ' [from B5E2C9]
  82. End Sub ' proc_EvPtr_06_0c
  83.  

привожу процедуру полностью, предполагал завтра посмотреть, всё ли до конца корректно, да ладно...
Бывают ещё недочеты в результатах...
GPcH ещё не разобрался с переменными уровня модуля и поэтому выдаёт такие результаты.
Сейчас прогоню его вариант, а завтра более внимательно посмотрю.
У нас с ним адреса начал операторов не совпадают, так что нужно смотреть по контексту.
Пока результат предварительный...

Прошу прощения, поторопился, действительно нашел
00B5DD72: mdl_MCP_Ini_01F0 = mdl_MCP_Ini_01E0 & mdl_MCP_Ini_01E8 & mdl_MCP_Ini_01EC

только это вот говорит о том, что в процедуре из формы "frm_BASIC_Register.frm"
идет работа с Public переменными, определёнными в модуле "mdl_MCP_Ini.bas"
это ведь не "MemVar_B9520C " ...




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 12 августа 2011 03:54
· Личное сообщение · #26

DrVB_5_6 массив ещё дай mdl_MCP_Ini_023C, в частности первые 2 элемента

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

Создано: 12 августа 2011 05:19
· Личное сообщение · #27

Code:
  1.  
  2. Public  Sub proc_02_1a()
  3.  
  4. 00B28FC4:   mdl_MCP_Ini_023C(1) = "ABCDEFGHIJKLMNOPQRSTUVWXYZДЦЬabcdefghijklmnopqrstuvwxyzдць0123456789 ,.&-+"
  5. 00B28FD0:   mdl_MCP_Ini_023C(2) = "GH78L123QWA3QW9WERTERYXNMSDFGHJKCVBLTZ1UI2123Z4IOPYXCVBN56SDFSPOLKXHLKPU12"
  6. End Sub ' proc_02_1a
  7.  





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 12 августа 2011 13:53 · Поправил: Isaev
· Личное сообщение · #28

Алго в конечном счёте совсем не интересный оказался, сравнение строк
В этом месте
Code:
  1. 00B5E242:     If mdl_MCP_Ini_01FC = 9 Then
  2. 00B5E24B:       If mdl_MCP_Ini_0278 = 50 Then
  3. 00B5E254:         GoTo ploc_B5E2C3
  4. 00B5E257:       Else ' [end B5E262]
  5. 00B5E25A:         mdl_MCP_Ini_01FC = False
  6. 00B5E25F:         GoTo ploc_B5DD72
  7. 00B5E262:       End If ' [from B5E24B]
  8. 00B5E262:     End If ' [from B5E242]

Всё-таки наверное VBDecompiler гонит, там значение второго GoTo сомнительно вообще, т.к. ведёт на правильный переход, что не верно по логике программы.
Code:
  1.               If (MemVar_B95218 = 9) Then 'B5E262
  2.                 If (MemVar_B95294 = &H32) Then 'B5E25A
  3.   loc_B5E254:     GoTo loc_B5E2C3
  4.   loc_B5E257:     GoTo loc_B5E262
  5.                 End If
  6.   loc_B5E25C:   MemVar_B95218 = 0
  7.   loc_B5E25F:   GoTo loc_B5DD72
  8.               End If


Единственное, что не понял, как эти константы найти... Если вторая в VBD ещё присутствует (но как на неё выйти я так и не понял), то первая похоже где-то создаётся из
"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz"
и там явно не русские буквы ДЦЬ, скорее немецкие ÄÖÜ... Где этот момент создания?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 12 августа 2011 16:02
· Личное сообщение · #29

Не хотел писать в этом топике, но дабы развенчать мифы всеже напишу. VB Decompiler от версии к версии различается вовсе не номером версии и не иконками в тулбаре, а над продуктом ведется долгая кропотливая работа. От версии к версии листинги значительно меняются в лучшую сторону и на данный момент являются стандартом дефакто в декомпиляции P-Code (надеюсь в будущем это же будет касаться и натива). Я не буду называть конкретные компании, но я ценю их доверие к продукту, потому продукт постоянно развивается.

Isaev пишет:
Всё-таки наверное VBDecompiler гонит, там значение второго GoTo сомнительно вообще


Да, не спорю, пиратская копия старой версии декомпилятора возможно и выводит что-то не так. Увы - соглашаясь качать кряки и варез - каждый должен быть готовым терпеть возможные глюки. У владельцев коммерческих лицензий все выводится так:

Code:
  1.                   If (MemVar_B95218 = 9) Then
  2.                     If (MemVar_B95294 = &H32) Then
  3.   loc_B5E254:         GoTo loc_B5E2C3
  4.   loc_B5E25A:       Else
  5.   loc_B5E25C:         MemVar_B95218 = 0
  6.   loc_B5E25F:         GoTo loc_B5DD72
  7.                     End If
  8.                   End If


DrVB_5_6 пишет:
VB Decompiler в данном случае лепит "горбатого"


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

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 12 августа 2011 16:41
· Личное сообщение · #30

а я вот не вижу разницы в листингах


. 1 . 2 . >>
 eXeL@B —› Основной форум —› помогите с p-code 2 (или вопрос к DrGolova)
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати