Сейчас на форуме: 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 неправильно определяет версию дельфей открыл 7-ку, пишет что Compiler: Borland Delphi 6.0 возьми детект из ДеДе лучше. нигде нет упоминания о версии программы. 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 я совсем не хотел обидить автора... Автор совсем не обиделся название вообще было придумано специально. грубо говоря, I'm SICK of all the shit. Понимать можно по разному... Я знаю как иностранцам видется это название. Но это же не серьёзный коммерческий продукт, где тупое название - позор продукту. А вообще, I don't care. Хоть кнопка Donate и присутствует, но когда прога и так вся выложена, то это для красоты... или для альтруистов |
eXeL@B —› Софт, инструменты —› Сборщик инфы Delphi |