Сейчас на форуме: 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

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




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

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

GPcH Александр, уж Вам то не прощаю)) Ты что Дантес, чтоль? Вызывай Голову на дуэль)
Че ты кипишуешь вечно на счет своего софта? Понятное дело, что любой труд должен быть оплачен и вознагражден, но чем тебя здесь то зацепили?? Это для тебя большая разница в листингах, чтобы обвинять и упрекать всех и вся??
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


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
  9.  

П.С. А че рекламы так мало то в пост свой впрыснул? Надо было еще названия "крупных" компаний привести, или что Навальный - это твой бетатестер.
Вот тебе даже помощник маленький:
http://slogen.ru/s/VB_Decompiler
и первое, что выдал:
Голосуйте за партию "Жириновский и VB Decompiler" и вас ждет светлое будущее! "Жирновский и VB Decompiler" - правильный выбор!
и ваще в тему:
VB Decompiler лучше, чем инструмент стоматолога.




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

Создано: 12 августа 2011 18:46
· Личное сообщение · #3

GPcH, правильно делал, что не хотел
Никто же не спорит про актуальные версии, обсуждаем то, чем богаты.
Лучше расскажи, если не сложно, как в твоём продукте константу найти вышеупомянутую... Думаю автор то должен знать кратчайший путь!
Кстати, можно добавить при клике на переменную список обращений к ней с быстрой навигацией
а то поиск не удобный и в пределах 1 модуля только

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

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

Начну с конца!
To ressa
Вы уж, если пытаетесь цитировать, то попытайтесь въехать в смысл того, что цитируете...
GPcH Александр, уж Вам то не прощаю)) Ты что Дантес, чтоль? Вызывай Голову на дуэль)

Вообще-то GPcH там обращался ко мне, и DrGolova здесь воообще не при чем, не надо склонять его всуе...
Да и поливать GPcH и брызгать слюной совсем не место ни в этом топике ни в этой теме...
Кстати, Вы можете представить на суд зрителей что либо соизмеримое с VB_Decompiler, созданное Вами?
Если у Вас какие-то личные притензии к GPcH, то зачем нас-то, читателей данного топика, втягивать в ваш междусобойчик?
А если у Вас проблемы с русским языком, и Вы не можете въехать в смысл того, о чем пишет GPcH, то я Вам популярно объясняю:
особо никакой рекламы в его последних постах не было, не в ней тут суть.
Да кстати, может быть, что я совсем тёмный, но кто такой Навальный, а то я вообще первый раз услыхал эту фамилию, а в гугле всякую хрень мне искать лениво...
Надо было линк какой нибудь сваять рядом с этой фамилией (для таких тёмных, как я)...

To Av0id а я вот не вижу разницы в листингах
Разница есть и существенная. Чтобы её увидеть, надо смотреть не выдернутые куски, а хотя бы процедуру целиком.
Для того, чтобы не быть голословным, приведу аналог процедуры из http://exelab.ru/f/action=vthread&forum=1&topic=782&page=0#25,
полученный в VB Decompiler последней официальной версии 8.2
Code:
  1. Public Sub Proc_6_12_B5E494
  2.   'Data Table: 406330
  3.   Dim MemVar_B95218 As Integer
  4.   Dim MemVar_B95200 As String
  5.   Dim MemVar_B95208 As String
  6.   Dim MemVar_B95210 As String
  7.   Dim var_FC As Variant
  8.   Dim MemVar_B95204 As String
  9.   Dim MemVar_B9529C As Integer
  10.   Dim MemVar_B95294 As Integer
  11.   Dim MemVar_B9520C As String
  12.   Dim MemVar_B95298 As String
  13.   Dim MemVar_B952A0 As String
  14.   Dim var_CC As Variant
  15.   Dim MemVar_B95214 As String
  16.   Dim MemVar_B9528C As Integer
  17.   Dim var_14A As Integer
  18.   loc_B5DBFE: MemVar_B95218 = 0
  19.   loc_B5DC04: MemVar_B951FC = "MCP"
  20.   loc_B5DC1D: MemVar_B95200 = Me.txt_KdName.Text
  21.   loc_B5DC27: MemVar_B95204 = MemVar_B95200
  22.   loc_B5DC40: MemVar_B95208 = Me.txt_KdNr.Text
  23.   loc_B5DCB2: MemVar_B95210 = Me.txt_Key(0).Text & Me.txt_Key(1).Text & Me.txt_Key(2).Text
  24.   loc_B5DCDA: If (Len(MemVar_B95204) = 0) Then
  25.   loc_B5DCDF:   MemVar_B95218 = 1
  26.   loc_B5DCE5: Else
  27.   loc_B5DCEF:   If (Len(MemVar_B95208) < 5) Then
  28.   loc_B5DCF4:     MemVar_B95218 = 2
  29.   loc_B5DCFA:   Else
  30.   loc_B5DD04:     If (Len(MemVar_B95204) < 7) Then
  31.   loc_B5DD32:       MemVar_B95204 = CStr(CVar(MemVar_B95204) & String((7 - Len(MemVar_B95204)), " "))
  32.   loc_B5DD3F:     End If
  33.   loc_B5DD58:     MemVar_B95204 = CStr(Left(MemVar_B95204, 7))
  34.   loc_B5DD6A:     MemVar_B9529C = CInt(Len(MemVar_B95258(2)))
  35.   loc_B5DD6F:     MemVar_B95294 = 0
  36.   loc_B5DD72:     ' Referenced from: B5E25F
  37.   loc_B5DD80:     MemVar_B9520C = MemVar_B951FC & MemVar_B95204 & MemVar_B95208
  38.   loc_B5DDCA:     MemVar_B95298 = CStr(Right(MemVar_B95258(2), CLng(MemVar_B95294)) & Left(MemVar_B95258(2), CLng((MemVar_B9529C - MemVar_B95294))))
  39.   loc_B5DDDD:     MemVar_B95294 = (MemVar_B95294 + 1)
  40.   loc_B5DDF4:     MemVar_B952A0 = CStr(Str(MemVar_B95294))
  41.   loc_B5DDFE:     MemVar_B95214 = vbNullString
  42.   loc_B5DE09:     For var_100 = 1 To &HF:     MemVar_B95046 = var_100 'Integer
  43.   loc_B5DE1F:       For var_104 = 1 To CInt(Len(MemVar_B95258(1))):     MemVar_B95048 = var_104 'Integer
  44.   loc_B5DE70:         If (Mid$(MemVar_B9520C, CLng(MemVar_B95046), 1) = Mid$(MemVar_B95258(1), CLng(MemVar_B95048), 1)) Then
  45.   loc_B5DE9A:           MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B95298, CLng(MemVar_B95048), 1))
  46.   loc_B5DEA7:         End If
  47.   loc_B5DEAA:       Next var_104 'Integer
  48.   loc_B5DEB2:     Next var_100 'Integer
  49.   loc_B5DEBA:     MemVar_B9520C = MemVar_B95214
  50.   loc_B5DEC1:     MemVar_B95214 = vbNullString
  51.   loc_B5DEED:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, 6, 1))
  52.   loc_B5DF22:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, 3, 1))
  53.   loc_B5DF57:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, 9, 1))
  54.   loc_B5DF8C:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, &HB, 1))
  55.   loc_B5DFC1:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, 5, 1))
  56.   loc_B5DFF6:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, 1, 1))
  57.   loc_B5E02B:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, &HA, 1))
  58.   loc_B5E060:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, &HD, 1))
  59.   loc_B5E095:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, 2, 1))
  60.   loc_B5E0CA:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, &HF, 1))
  61.   loc_B5E0FF:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, &HC, 1))
  62.   loc_B5E134:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, 4, 1))
  63.   loc_B5E169:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, 8, 1))
  64.   loc_B5E19E:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, &HE, 1))
  65.   loc_B5E1D3:     MemVar_B95214 = CStr(CVar(MemVar_B95214) & Mid$(MemVar_B9520C, 7, 1))
  66.   loc_B5E1E7:     For var_148 = 1 To &HF:     MemVar_B95046 = var_148 'Integer
  67.   loc_B5E201:       var_DC = Mid$(MemVar_B95214, CLng(MemVar_B95046), 1)
  68.   loc_B5E209:       var_FC = 1
  69.   loc_B5E232:       If CBool(var_DC <> Mid$(MemVar_B95210, CLng(MemVar_B95046), var_FC)) Then
  70.   loc_B5E237:         MemVar_B95218 = 9
  71.   loc_B5E23A:       End If
  72.   loc_B5E23D:     Next var_148 'Integer
  73.   loc_B5E248:     If (MemVar_B95218 = 9) Then
  74.   loc_B5E251:       If (MemVar_B95294 = &H32) Then
  75.   loc_B5E254:         GoTo loc_B5E2C3
  76.   loc_B5E25A:       Else
  77.   loc_B5E25C:         MemVar_B95218 = 0
  78.   loc_B5E25F:         GoTo loc_B5DD72
  79.   loc_B5E262:       End If
  80.   loc_B5E262:     End If
  81.   loc_B5E2AC:     MsgBox CVar(MemVar_B951B4(&H388, 1).global_0 & vbCrLf & MemVar_B951B4(&H388, 2).global_0), &H40, MemVar_B95198(&H388), var_DC, var_FC
  82.   loc_B5E2BF:     MemVar_B9528C = &HFF
  83.   loc_B5E2C2:     Exit Sub
  84.   loc_B5E2C3:     ' Referenced from: B5E254
  85.   loc_B5E2C3:   End If
  86.   loc_B5E2C3: End If
  87.   loc_B5E2C6: var_14A = MemVar_B95218
  88.   loc_B5E2CF: If (var_14A = 1) Then
  89.   loc_B5E31C:   MsgBox CVar(MemVar_B951B4(&H385, 1).global_0 & vbCrLf & MemVar_B951B4(&H385, 2).global_0), &H10, MemVar_B95198(&H385), var_DC, var_FC
  90.   loc_B5E337:   Me.txt_KdName.Setfocus
  91.   loc_B5E342: Else
  92.   loc_B5E348:   If (var_14A = 2) Then
  93.   loc_B5E395:     MsgBox CVar(MemVar_B951B4(&H386, 1).global_0 & vbCrLf & MemVar_B951B4(&H386, 2).global_0), &H10, MemVar_B95198(&H386), var_DC, var_FC
  94.   loc_B5E3B0:     Me.txt_KdNr.Setfocus
  95.   loc_B5E3BB:   Else
  96.   loc_B5E3C1:     If (var_14A = 9) Then
  97.   loc_B5E429:       var_CC = CVar(MemVar_B951B4(&H387, 1).global_0 & vbCrLf & MemVar_B951B4(&H387, 2).global_0 & vbCrLf & MemVar_B951B4(&H387, 3).global_0) 'String
  98.   loc_B5E42C:       MsgBox var_CC, &H10, MemVar_B95198(&H387), var_DC, var_FC
  99.   loc_B5E44A:       For var_14E = 0 To 2:     MemVar_B95046 = var_14E 'Integer
  100.   loc_B5E46B:         Me.txt_Key(MemVar_B95046).Text = vbNullString
  101.   loc_B5E47A:       Next var_14E 'Integer
  102.   loc_B5E489:       Me.txt_KdName.Setfocus
  103.   loc_B5E491:     End If
  104.   loc_B5E491:   End If
  105.   loc_B5E491: End If
  106.   loc_B5E491: Exit Sub
  107. End Sub

Различия есть, но критиковать-то уж не ressa...



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

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

К тому куску, который я приводил выше, достаточно добавить шапку формы и пустышку модуля
с объявленными переменными, а после просто скомпилировать...


Адреса только в процедуре убрать надо, пример-то в отладочной форме приводился...

38f2_12.08.2011_EXELAB.rU.tgz - Checking Tests.zip

Желающие могут проверить.

У меня есть сервисы, позволяющие сравнивать сам р-код, так вот, оригинал и мой пример
полностью совпадают.


А если найдётся гуру, который доведет до такого же состояния код, выданный VB Decompiler,
то готов своими средствами сравнить р-код и вынести результат на суд зрителей.

Только вряд ли найдётся такой спец, который бы имея только результат VB Decompiler-а,
вывел бы из него реальный код, который я и приводил ранее.

Не из каждого полуфабриката можно получить реальный продукт...

To Isaev и там явно не русские буквы ДЦЬ, скорее немецкие ÄÖÜ...

Тут скорей всего Вы правы. Дело в том, что я выдал результат работы скрипта ИДЫ.
Юникод там берётся средствами самой ИДЫ, а Ильфак никогда не дружил с юникодом...
Со временем переделаю корректно. Забыл Вас предупредить о такой бяке, просто торопился
утром, хотелось выдать имеющуюся информацию...



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

Создано: 12 августа 2011 23:40 · Поправил: DrVB_5_6
· Личное сообщение · #6

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

Тут я, Сергей, готов извиниться, совсем из головы вылетело, что есть ещё и варезные версии
твоего продукта (естественно, древние).

Но вот насчет таких вещей как

loc_B5DD80: MemVar_B9520C = MemVar_B951FC & MemVar_B95204 & MemVar_B95208

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

Я это в основном имел в виду.

Ну а на счет того, что твои
листинги ... на данный момент являются стандартом дефакто в декомпиляции P-Code

это ты круто загнул.

Я и пару лет назад выдал бы точно такой же код для этой процедуры, который приводил в постах выше
и в аттаче предыдущего поста.

Это же примитивная процедурка, полностью декомпилируемая. Надеюсь, что я это продемонстрировал.

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

Ну да ладно, всё это лучше в личке.




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

Создано: 13 августа 2011 00:23
· Личное сообщение · #7

Isaev пишет:
Лучше расскажи, если не сложно


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

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


Увы стандартом становится не то что лучше, а "то что лучше, из того что можно купить за разумные деньги". Пока увы твой продукт нельзя приобрести никак (а за разумные 100-200 долларов тем более). И я не ставил цели этим выделять данный проект. Просто статистика.

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





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

Создано: 13 августа 2011 00:33
· Личное сообщение · #8

GPcH пишет:
я не имею морального права помогать ломать чужой коммерческий продукт.

во-первых кейген уже написан, а вопрос был задан общий
это просто пример
константу я определил визуально, что это она, по логике программы, но как её найти основываясь на выдаваемом вашим продуктом листинге? вот в чём вопрос

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





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

Создано: 13 августа 2011 00:43
· Личное сообщение · #9

Isaev пишет:
константу я определил визуально, что это она, по логике программы, но как её найти основываясь на выдаваемом вашим продуктом листинге? вот в чём вопрос


Даже перечитав прошлые сообщения я так и не понял о какой константе речь и где она должна выплывать. Если есть желание - распиши поподробнее на email, там заодно и продолжим переписку на тему констант.
Тут дальше дискутировать не хочу, ибо этот форум не суппорт декомпилятора.

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




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

Создано: 14 августа 2011 11:07
· Личное сообщение · #10

GPcH пишет:
стандартом становится не то что лучше, а "то что лучше, из того что можно купить за разумные деньги"


стандарт - это то что все остальные списывают, никакие деньги тут ни при чем.

| Сообщение посчитали полезным: ajax, hlmadip, redlord

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

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

Вообще-то заявления о стандарте от GPcH - это детский лепет!!!

Стандарт чего?
Названий переменных? Расположения операторов в тексте?
Ну можно ещё (с большой натяжкой) рассуждать об неком эталоне.

Так исходный текст программ на Visual Basic - это и есть эталон для декомпиляторов.

Воспроизведи, попробуй!!!

Ёжику понятно, что достигнуть этого эталона практически невозможно:
часть информации просто теряется при компиляции (идентификаторы локальных переменных,
комментарии и ещё некоторая информация - не буду вдаваться в детали).

А по поводу стандартов... , так лучше обращаться в какой-нибудь комитет ISO - там всё растолкуют

А к GPcH пожелание:
Попробуй, Серёжа, отличать Case конструкции от вложенных If Then Else конструкций и,
желательно, самостоятельно, без моих подсказок!

Ты приблизишься к эталону... Уверяю тебя!

Решение не очень сложное, но, как всегда, существуют примеры, когда оно неоднозначно...




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 14 августа 2011 20:08
· Личное сообщение · #12

Надеюсь, вопрос решён, потому что топик слез совсем не туда, и я его закрою.

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