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

 eXeL@B —› Крэки, обсуждения —› Visual Basic native code
<< . 1 . 2 .
Посл.ответ Сообщение

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

Создано: 31 января 2007 02:14
· Личное сообщение · #1

помогите выбрать отладчик для натив кода
и еще есть ли декомпилятор для него




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

Создано: 05 февраля 2007 05:28
· Личное сообщение · #2

sen пишет:
не преувеличивай о сложности ThisVCallHresult )) , впрочем у каждого свои грабли.

Мне пришлось пол парсера VB структур переписать, полностью заменив порядок парсинга и введя новые структуры для хранения нужных данных. Не говоря уже о парсере VTable и таблиц имен функций и параметров. Короч для меня это вылилось в 3 дня работы по 18 часов в день (типа утром встал - сел писать, в 2 ночи уже следующего для лег и так 3 дня).

sen пишет:
а если завалишь натив бейсика хотя бы до уровня который получается для пкода, то бонусом получишь декомпиль visual C


У меня нет такоих планов. Моя цель показывать все параметры API в асм листинге плюс показ вызовов из VTable в нативе

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




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

Создано: 06 февраля 2007 02:20
· Личное сообщение · #3

sen пишет:
на практике надо разбираться с кодогенератором конкретного компилера и очень сильно портит картину оптимизатор.

Дык, кто же спорит. Если бы все было просто, то давно были бы декомпили в любой ЯВУ. Кстати, не в курсе, существуют ли методы моделирования алгоритма по его реализации?

GPcH пишет:
Мне пришлось пол парсера VB структур переписать, полностью заменив порядок парсинга и введя новые структуры для хранения нужных данных.

Что-то ты как-то сложно все повел.... Можно было только расширить существующие (не зная сырца - только ИМХО). То, что было работало на ура и так.




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

Создано: 07 февраля 2007 11:42
· Личное сообщение · #4

entusiast пишет:
Что-то ты как-то сложно все повел.... Можно было только расширить существующие (не зная сырца - только ИМХО). То, что было работало на ура и так.


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

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




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

Создано: 07 февраля 2007 16:31
· Личное сообщение · #5

GPcH
если понял как vtable работает в пкоде, то вызовы vtable в нативе прописываются быстро и без эмуляции, в VB хоть и сильный оптимизатор но вызовы внешних функций ему особо разгуляться не дают.
параметры АПИ прописываются через не особо полную эмуляцию.
это вполне реальные цели, основное время уйдет на эмулятор.

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




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

Создано: 07 февраля 2007 17:09 · Поправил: GPcH
· Личное сообщение · #6

sen пишет:
параметры АПИ прописываются через не особо полную эмуляцию.
это вполне реальные цели, основное время уйдет на эмулятор.


Ну эмуль уже написан (ушло на него 2 дня, правда и эмулит только основные инструкции плюс стэк и все регистры) - эт ты увидишь открыв любую натив кодовую прогу в декомпиле. Только вот самое сложное со строками - они напрямую в API не передаются, а через __vbaVarDup - вот это и нужно обработать. Как обработать я уже понял - дело во времени.

0040160A: lea ecx, var_30
0040160D: mov var_48, 00000004h
00401614: mov var_50, eax
00401617: mov var_38, 00000003h
0040161E: mov var_40, eax
00401621: mov var_68, 0040130Ch ; Cool2
00401628: mov var_70, edi
0040162B: call MSVBVM60.DLL.__vbaVarDup(edi, esi, ebx, fs:[00h], MSVBVM60.DLL.__vbaExceptHandler, ebp, eax = 00000002h)
0040162D: lea edx, var_60
00401630: lea ecx, var_20
00401633: mov var_58, 004012FCh ; Cool1
0040163A: mov var_60, edi
0040163D: call MSVBVM60.DLL.__vbaVarDup(eax = 00000002h)
0040163F: lea eax, var_50
00401642: lea ecx, var_40
00401645: push eax
00401646: lea edx, var_30
00401649: push ecx
0040164A: push edx
0040164B: lea eax, var_20
0040164E: push 00000400h
00401653: push eax
00401654: call MsgBox(var_20, 00000400h, var_30, var_40, var_50)


Если я правильно понимаю __vbaVarDup в переменную, адрес которой лежит в ECX кладет строку, которая во второй переменной (если читать вверх по стэку, ведь переменные это ни что иное как ebp-XX)
Если я конечно не ошибаюсь

Кстати на данный момент декомпилятор умеет по VcallAd определять имя объектов (респект entusiast'у) и его листинг после декомпиляции крякмисов и прочей мелочи уже можно скомпилять

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





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

Создано: 07 февраля 2007 17:43
· Личное сообщение · #7

Сколько не пробовал код отформатить с пробелами - форум это не позволяет

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




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

Создано: 08 февраля 2007 07:53
· Личное сообщение · #8

sen пишет:
задача декомпилирования серьезна и набегом-наскоком не решается. я пробовал - с одного раза не получилось.

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


<< . 1 . 2 .
 eXeL@B —› Крэки, обсуждения —› Visual Basic native code
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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