Сейчас на форуме: bartolomeo, artyavmu (+8 невидимых) |
![]() |
eXeL@B —› Софт, инструменты —› Сборщик инфы Delphi |
Посл.ответ | Сообщение |
|
Создано: 27 марта 2009 02:00 · Личное сообщение · #1 У меня часто возникает необходимость ковырятся в прогах на Delphi. Классы, формы, процедуры... Благодаря RTTI кое-что можно выудить. Из существующих декомпиляторов монстра всего два: DeDe by DaFixer/TMG и De Decompiler by GPcH. DeDe - штука замечательная, но уже довольно старовата + кое какие баги. De Decompiler - штука замечательная, но платная ![]() Есть правда ещё EMS Source Rescuer (но это не совсем то) Исходя из этого, я сделал небольшой сборщик инфы в Delphi-скомпилированных программах, стараясь не перегружать интерфейс и иметь возможность хоть какого-нибудь экспорта полученных данных. Этими наработками (а совершенствование ещё не закончено) я хочу поделиться с Вами. vdr-soft.at.ua/BDSSICK/bdssick.zip если найдутся единомышленники, то любые идеи, замечания прошу оставлять здесь или на форуме на офсайте. Перед тем как задать вопрос, желательно прочтите мою страничку vdr-soft.at.ua/ Regards, MrDenis ![]() |
|
Создано: 27 марта 2009 02:16 · Личное сообщение · #2 |
|
Создано: 27 марта 2009 02:24 · Личное сообщение · #3 |
|
Создано: 27 марта 2009 04:02 · Личное сообщение · #4 MrDenis Прикольная вещь, правда так и не понял как посмотреть код как на скриншоте на сайте. Плюс не работает на дельфях старше седьмой версии. В частности у меня все проекты давно портированы под Delphi 2009. Ни форм, ни объектов тулза не находит - только Classes Info. ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 27 марта 2009 08:26 · Личное сообщение · #5 |
|
Создано: 27 марта 2009 08:33 · Личное сообщение · #6 |
|
Создано: 27 марта 2009 08:35 · Личное сообщение · #7 |
|
Создано: 27 марта 2009 09:17 · Личное сообщение · #8 |
|
Создано: 27 марта 2009 09:30 · Личное сообщение · #9 |
|
Создано: 27 марта 2009 09:48 · Личное сообщение · #10 user_ Я обновил файл, качайте свежий там уже влючен дизасм. В дизасме G - перейти по адресу. Обновление можно проверить ещё Help\Check for updates Donates ![]() ![]() |
|
Создано: 27 марта 2009 12:19 · Поправил: Hellspawn · Личное сообщение · #11 неправильно определяет версию дельфей ![]() возьми детект из ДеДе лучше. нигде нет упоминания о версии программы. Code:
довольно не привычно, что указано ввиде смещения. з.ы. а так довольно удобно ![]() ----- [nice coder and reverser] ![]() |
|
Создано: 27 марта 2009 12:52 · Личное сообщение · #12 |
|
Создано: 27 марта 2009 13:13 · Поправил: Hellspawn · Личное сообщение · #13 |
|
Создано: 27 марта 2009 13:23 · Личное сообщение · #14 |
|
Создано: 27 марта 2009 16:22 · Личное сообщение · #15 BoRoV пишет: да я знаю, для 200х я нашел что нужно писать, а вот для 7 хз что нужно, если можешь, то скажи что нужно дописать Я уже выкладывал свой детектор версии дельфей из DE Decompiler тут: --> Link <-- ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 27 марта 2009 16:47 · Личное сообщение · #16 GPcH пишет: Я уже выкладывал свой детектор версии дельфей из DE Decompiler да там не по сигнам как у тебя детектится, а по какой-то херне, она там считается, и потом по тому что получилось определятся версия, для 200х я нашел какое должно быть значение, а вот для 7-ой версии ввели еще одно условие, т.к. это значение что считается совпадает с 6-ой версией ----- Лучше быть одиноким, но свободным © $me ![]() |
|
Создано: 27 марта 2009 17:04 · Личное сообщение · #17 BoRoV пишет: да там не по сигнам как у тебя детектится Да ты мой пост не полностью прочитал - там два листинга. Первый - чисто детект дельфей по сигнам, второй детект версии по константам. Я детектирую все версии там, включая 2005 и 2007. 2009 не детектит так как в те времена ее еще не было. ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 27 марта 2009 17:40 · Личное сообщение · #18 |
|
Создано: 27 марта 2009 18:06 · Личное сообщение · #19 |
|
Создано: 27 марта 2009 20:51 · Личное сообщение · #20 Что-то sick,аббревиатура не очень=) Если только "натравить на Borland Delphi Studio" =)) Расшифровку конечно видел на сайте,но чувствую,что изначально было "натравить",а потом уже расшифровывали по буквам, слово Sick =) sick [sIk] adj 1. больной 2. чувствующий тошноту 3. болезненный, нездоровый 4. относящийся к больному 5. связанный с болезнью 6. пресыщенный 7. уставший 8. тоскующий 9. раздосадованный 10. бледный, слабый (о цвете, свете и т. п.) sick [sIk] v натравливать, натравить (собаку) ![]() |
|
Создано: 27 марта 2009 21:11 · Личное сообщение · #21 |
|
Создано: 28 марта 2009 00:32 · Поправил: MrDenis · Личное сообщение · #22 + В дизасме можно перейти на адрес двойным щелчком при вводе адреса можно указывать имя, например, start + Небольшие изменения ГУИ + Обнаружение версии по методу GPcH. thanx - PEiD dll call -0000022F теперь c указанием адреса, а не смещения вообще дизасм у меня сейчас не приоритетная задача, сначала бы доделать сборщик классов и обнаружение новых версий Delphi ![]() |
|
Создано: 28 марта 2009 00:40 · Личное сообщение · #23 |
|
Создано: 28 марта 2009 01:39 · Личное сообщение · #24 BoRoV пишет: можешь обяснить как ты находишь xLng1? Там же явно прописано: xLng1 = xLng Это лишь копирование DWORD'а. Лень было именовать как либо - так как все равно это просто DWORD. Разъясняю смысл каждой строчки сорца: //Ищем текст TControl в EXE файле: sTemp = InStr(sTemp + 1, sText, Chr(8) & "TControl") //Если он равен нулю, выходим If sTemp = 0 Then Exit For //Через 8 символов после этого текста идет DWORD. Считываем его и проверяем на валидный адрес Get #strFile, sTemp + 9, xLng If VaToOffset(strFile, xLng) > 0 Then //Сохраняем его для дальнейшего использования xLng1 = xLng //Невдалеке незадолго до Tcontrol валяются нужные нам DWORD сигнатуры. Читаем их Get #strFile, VaToOffset(strFile, xLng) - 39, xLng Get #strFile, VaToOffset(strFile, xLng1) - 83, xLng1 //Сравниваем сигнатуры с константами и определяем версию Delphi. Select Case xLng ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 28 марта 2009 01:42 · Личное сообщение · #25 MrDenis пишет: + Обнаружение версии по методу GPcH. thanx Всегда рад помочь ![]() И сделай вкладку со списком адресов функций в виде: ИмяФормы::АдресФункции И чтобы при щелчке по этим адресам в листбоксе происходил показ дизасма. PS: Чет каждую весну народ на дельфи декомпили тянет ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 28 марта 2009 09:01 · Личное сообщение · #26 |
|
Создано: 28 марта 2009 12:45 · Личное сообщение · #27 MrDenis пишет: call -0000022F теперь c указанием адреса, а не смещения вообще дизасм у меня сейчас не приоритетная задача, сначала бы доделать сборщик классов и обнаружение новых версий Delphi как это не приоритетная? тогда она не на много лучше Source Rescuer ![]() MrDenis пишет: + Обнаружение версии по методу GPcH. thanx это не его метод. Bronco пишет: Hellspawn, а почему DiE не детектит версии линкера???? детектит, но там мало сигн ![]() ----- [nice coder and reverser] ![]() |
|
Создано: 28 марта 2009 14:13 · Личное сообщение · #28 |
|
Создано: 28 марта 2009 14:17 · Поправил: MrDenis · Личное сообщение · #29 Hellspawn как это не приоритетная? дизасм всё равно я буду менять. и написание анализатора кода займёт всё моё свободное время. поэтому это на потом. Согласен, сейчас прога ненамного лучше Source Rescuer'a, но для меня было главное иметь экспорт имён и функций. Поэтому пока я доволен. это не его метод я понимаю, что алгоритм, почти тот же, что и в DeDe. Но и daFixer, я думаю, не всё сам придумал GPcH PS: Чет каждую весну народ на дельфи декомпили тянет вообще что-то писать было лень. какое-то время я ждал пока сделают приемлемый вариант, но не дождался эх были времена, и я на бейсиках кодил. gpic я совсем не хотел обидить автора... Автор совсем не обиделся ![]() ![]() ![]() |
![]() |
eXeL@B —› Софт, инструменты —› Сборщик инфы Delphi |