Как посмотреть код программы на delphi

Есть программа CarnoMinimizer 1.6 написанная на delphi
необходим её исходный код
есть способ его посмотреть или достать ?

16.04.2010, 11:06
Регистрация: 04.04.2010
Сообщения: 21
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Может попробовать дизассемблер?
__________________
Лечить и учить умеют все, а вот рассчитать несущую балку.
16.04.2010, 11:29
Illuminati
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Вы сказали Спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Репутация: 8808

Есть множество инструментов, хотя бы DeDe, но вопрос — что нужно? Рипнуть кусок кода или подсмотреть алгоритм?

__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
16.04.2010, 11:42
Регистрация: 15.04.2010
Сообщения: 16
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
и то и то
мне к своей программе надо
16.04.2010, 12:11
Регистрация: 04.04.2010
Сообщения: 21
Вы сказали Спасибо: 0

Как ВЗЛОМАТЬ приложение и получить ИСХОДНЫЙ КОД программы? [Reverse engineering, JetBrains dotPeek]


Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10

Для вставки чужого кода в Delphi есть встроенный ассемблер, а на странице procad.ru/content/view/490/32 подробно разобран алгоритм.

__________________
Лечить и учить умеют все, а вот рассчитать несущую балку.
16.04.2010, 13:03
Начинающий
Регистрация: 26.01.2010
Сообщения: 180
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 31

Для вставки чужого кода в Delphi есть встроенный ассемблер,

хм. а можно чуть поподробнее?
16.04.2010, 13:19
Регистрация: 04.04.2010
Сообщения: 21
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10

Погуглите, найдёте много интересного, короче код вставляется между ASM и end.
http://www.delphisources.ru/pages/fa. in_delphi.html

__________________
Лечить и учить умеют все, а вот рассчитать несущую балку.
16.04.2010, 13:36
Продвинутый
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2446

Нужо будет еще кое где согласовать имена переменных и ссылки Label.
Т.к. Dede выдает jmp на адрес, а нужно на конкретный кусок кода на Delphi.
ИМХО
Неблагодарное это дело. я для себя писал прожку которая найденные ссылки в коде Dede перелопачивает в Label Delphi. но все равно приходилось много чего править ручками.

__________________
В начале был Бит, потом Байт и только потом появилось Слово.
16.04.2010, 17:08
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,718
Вы сказали Спасибо: 4
Поблагодарили 277 раз(а) в 263 сообщениях
Репутация: 52347

Для вставки чужого кода в Delphi есть встроенный ассемблер, а на странице procad.ru/content/view/490/32 подробно разобран алгоритм.

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

Источник: delphisources.ru

Центр Программирования Артёма Кашеварова

№1 по видеообучению программированию в России! Более 32 000 учеников! Вы с нами?

Меню

  • Главная
  • Продукты
  • Как стать профессиональным программистом?
  • Форум здравомыслящих программистов
  • RSS лента
  • Работы наших учеников
  • Личный блог Артёма Кашеварова
  • Об авторах

Рубрики

  • Видеоуроки от пользователей
  • Заработок для программиста
  • Личная жизнь
  • Поржать
  • Работы наших учеников
  • Разное
  • Разработка игр
  • Рассылки
  • Сайтостроение
  • Уроки для начинающих
  • Уроки по C++
  • Уроки по Delphi
  • Уроки по Java
  • Уроки по PHP
  • Уроки по WinAPI
  • Уроки по разработке для Android
  • Уроки по С#

Моя книга

Рекомендую:

Получите видеокурс по программированию для начинающих прямо сейчас:

Самое интересное:

  • Форум здравомыслящих программистов
  • C# POST и GET запросы на сервер
  • С чего начать изучение программирования?
  • Об авторах
  • Пре-релиз моей книги!
  • Современный 3D экшн весом в 96 КБ Krieger
  • Что делать если все хреново?
  • Клиентское и серверное приложение с использованием сокетов на C++
  • Win API для начинающих
  • Создаем приложение на Android за 10 мин

Заработать
на этом сайте

Как зарабатывать продавая информацию

Как получить исходный код HTML страницы (Delphi)

Июнь 24, 2013

Untitled-2

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

А тут на самом деле все просто — нужно просто написать приложение которое будет забирать исходный код страницы прямо с интернет сайта! Но для начала мы научимся получать этот самый исходный HTML код.

Как получить исходный код любой веб страницы рассказывается в моем новом видео:

Как видите все делается очень просто всего при помощи вызова всего одной функции:

Читайте также:
Какая программа нужна для работы с электронной подписью

memo1.text:= idHTTP1.Get(‘http://programmerinfo.ru/’);

Результат выполнения которой возвращает длииииииииную строку из всего HTML кода.

И еще важная деталь, о которой я забыл упомянуть в видео, если вдруг запрос от сервера на котором размещен сайт не удастся, то код ответа от сервера можно всегда посмотреть вызвав функцию:

kodoshibki:=idhttp1.Response.ResponseText;

Функция возвращает ответ в виде строки(string).

Если запрос был удачный то код ответа будет 200 что означает отсутствие ошибки. Если страница не найдена то 404. Остальные коды ошибок можно посмотреть тут: programmerinfo.ru/httperror/

В следующем видео разберем как считать с страницы то что нам нужно.

Источник: programmerinfo.ru

Обзор инструмента CodeSite в Delphi

Delphi в Internet

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

После выхода RAD Studio XE в составе меню «Tools» появился ещё один инструмент для разработчика — CodeSite. Что такое CodeSite? Это система журналирования (logging system), которая позволяет вести удобный и, главное, максимально информативный лог работы приложения. Думаю, что когда-либо перед любым разработчиком встает вопрос о том, каким образом отслеживать работу своего продукта, как на этапе его разработки, так и после релиза, когда программой во всю используют другие люди. Соответственно, до RAD Studio XE, многие могли начать изобретать свой собственный «велосипед» — «движок для логирования» собственного производства. Может быть такой подход и оправдан в какой-то мере, но всё-таки имеет много недостатоков, например:

  1. Лишняя трата времени на разработку своей системы логирования. Вместо того, чтобы заниматься непосредственно работой по улучшению функциональности программы, исправлению ошибок и т.д. приходится «зависать» над разработкой модуля/компонента/библиотеки, которая будет использоваться исключительно в служебных целях, т.е. для рядового пользователя практически бесполезной. Можно, конечно, максимально сократить время разработки и просто «втупую» писать в лог-файл всё подряд, но тут мы получим второй недостаток.
  2. Малая информативность. Здесь речь скорее не об объеме информации, а о её содержании и оформлении. Можно сделать в своей системе какой-нибудь шаблон записи типа «Дата — Действие — Результат» и по такому шаблону писать весь лог. Вроде бы быстро и просто, но потом как такой файл анализировать? Особенно учитывая то, что чаще всего смотреть лог в таких случаях приходится из txt-файлика. Когда объем небольшой, то вроде бы и не сложно, а если лог за целый день работы? Или за неделю?

В принципе, эти два недостатка и сподвигли меня уделить пару часиков своего времени на то, чтобы изучить работу инструмента CodeSite. Так как сейчас приходится успевать работать над двумя проектами, то тратить время на «велосипеды» совсем не хочется, тем более, что под рукой уже есть замечательное и эффективное решение от профессионалов.

Содержание скрыть

Введение

Итак, что же такого интересного может предложить нам CodeSite?

CodeSite дает разработчику более полное понимание того, как выполняется его код. Благодаря имеющимся в составе продукта Viewer’ам, можно получить лог, который позволит с максимальной скоростью и удобством разобраться в том, что происходит в программе. Можно «лёгким движением руки» (с) записать в лог целый объект и получать сведения по изменяющимся свойствам, быстро логировать работу сразу нескольких потоков в приложении, разделять сообщения по группам, свойствам, назначать сообщениям другие свойства (цвета шрифтов и фона), которые будут способствовать более комфортному и эффективному изучению лога. Но об этом чуть позже, а пока пару слов про viewer’ы в CodeSite.

Для просмотра логов мы можем использовать:

  • Live Viewer, который обновляется сразу же, после поступления новых сообщений в диспетчер сообщений. Этот вьювер очень удобно использовать на этапе разработки программы.
  • File Viewer — просмотрщик лог-файлов. Можно, например, долгое время записывать весь ход работы программы в отдельный файл, а потом, используя File Viewer просмотреть этот файл, отфильтровав сообщения по нескольким заданным критериям.

Кроме того, в состав CodeSite входит небольшая консольная утилита под названием CSFileExporter.exe, с помощью которой можно экспортировать лог-файл в другие форматы — XML, CSV, TSV.

От слов к делу. Посмотрим как работает CodeSite и, что мы можем сделать, используя бесплатную версию инструмента — CodeSite Express.

Первый лог с CodeSite. Использование класса TCodeSiteLogger.

Класс TCodeSiteLogger используется для отправки сообщений из программы в диспетчер CodeSite для дальнейшего их просмотра в одном из viewer’ов. Собственно, для нас этот класс будет основным. Класс содержится в модуле CodeSiteLogging, который необходимо подключить в uses того модуля работу которого мы будем логировать. Для наиболее общего использования возможностей этого класса от нас не требуется создавать собственные объекты, т.к. при инициализации модуля уже создается объект CodeSite: TCodeSiteLogger, который можно сразу же использовать. Однако никто нам и не запрещает сделать хоть 10 собственных объектов и работать с ними.

Для начала рассмотрим те методы класса, без которых лог — не лог. И первый метод:

Читайте также:
Camtasia studio отзывы о программе

procedure Send(const Msg: string ); overload;

Метод Send отправляет новое сообщение в логгер. Этот метод имеет несколько перегруженных вариантов, если быть точнее, то в CodeSite 5 (для Delphi XE2) содержится 39 вариантов метода Send, которые позволяют отправлять различные данные в логгер в их нативном формате. Например, следующий перегруженный метод:

CodeSite.Send(‘Main Form’, Self);

Позволяет отправить сообщение, содержащее целиком весь объект формы. Другие варианты Send позволяют отправлять строки, числа, списки строк, картинки, иконки и т.д. В общем преобразования типов данных внутри кода программы нам вряд ли понадобится.

Для примера работы метода Send создадим новый проект Delphi, подключим в uses модуль CodeSiteLogging, бросим на форму кнопку и напишем на OnClick такой код:

CodeSite.Send(‘Hello, CodeSite’);//отправили строку CodeSite.Send(‘Form Height’, Height);//отправили сообщение с числом CodeSite.Send(csmError, ‘Сообщение типа «Ошибка»‘);

Теперь запустите программу и нажмите кнопку. Сразу же после нажатия кнопки запуститься Live Viewer, содержащий наши сообщения:

Как видите, то сообщение, для которого мы назначили иконку ошибки, выглядит иначе, чем два предыдущих сообщения. И надо сказать, что использование иконок — это конечно, мелочь, но эта мелочь очень неплохо повышает читабельность лога. Ведь согласитесь, что при просмотре лога первое, куда перемещается взгляд — на запись, которая выглядит «не так»? И тут главное не переборщить, чтоб лог не выглядел как новогодняя елка, иначе вся наглядность пойдет прахом.

Двигаемся далее по методам. Следующий метод:

procedure Assert( Expression: Boolean; const Msg: string );

Этот метод проверяет выражение, записанное в Expression и, если оно равно False отправляет в логгер сообщение типа «Ошибка». На примере нашего приложения работу этого метода можно продемонстрировать так:

CodeSite.Assert(HeightWidth, ‘Высота окна больше его ширины’)

Если высота окна будет больше ширины — в лог выведется строка, сообщающая нам об этом, иначе — сообщение об ошибке будет пропущено. Кстати, раз уж речь пошла про сообщения об ошибках и исключениях, то у TCodeSiteLogger для таких целей есть сразу два метода:

procedure SendError(const Msg: string); overload; procedure SendException(E: Exception); overload;

Эти методы по части количества перегруженных версий не такие богатые как Send (всего по две версии), но зато сразу отправляют сообщение с необходимыми иконками. Перегруженные версии позволяют использовать в сообщениях шаблоны строк (аналогично CreateFmt у Exception). Сообщения, отправленные с помощью методов SendError и SendExceprion в Live Viewer выглядят следующим образом:

Следующие два метода позволяют нам записать в лог вход/выход из метода:

procedure EnterMethod( const MethodName: string ); overload; virtual; procedure ExitMethod( const MethodName: string ); overload; virtual;

Использовать их можно так:

procedure TForm7.Button1Click(Sender: TObject); begin CodeSite.EnterMethod(‘Button1Click’); //Что-то тут делаем CodeSite.ExitMethod(‘Button1Click’); end;

В этом случае мы получим вот такой лог работы программы:

Либо воспользоваться перегруженными версиями этих методов и передать в сообщении какой-нибудь объект:

procedure TForm7.Button1Click(Sender: TObject); begin CodeSite.EnterMethod(self,’Button1Click’); //Что-то тут делаем CodeSite.ExitMethod(self,’Button1Click’); end;

В этом случае перед названием метода, которое мы передали во втором параметре также выведется и название объекта, т.е. лог будет выглядеть так:

Использование двух этих методов могут преследовать сразу две полезные задачи. Во-первых, использование Enter/ExitMethod повышает наглядность лога — в большом подробном логе сразу будет видно в каком методе что происходит. Во-вторых, используя функции viewer’а мы можем сворачивать все сообщения, находящиеся между блоками и, тем самым, быстро находить необходимую нам информацию в логе.

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

procedure AddCheckPoint; procedure AddSeparator;

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

Свойства TCodeSiteLogger
Свойств у TCodeSiteLogger не много и все они, за исключением двух используются для повышения наглядности удобства чтения лога:

property Category: string; property CategoryBackColor: Color; property CategoryColor: TColor property CategoryFontColor: TColor property DateTimeFormat: string property Destination: TCodeSiteDestination property Enabled: Boolean;

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

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

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

Читайте также:
Как установить старую версию программы на ipad

Запись лога в файл

Когда мы разрабатываем программу, то, как уже было сказано выше, наиболее удобно и комфортно использовать возможности Live Viewer’а. Однако, когда программа уже разошлась по пользователям, то для ведения лога работы программы этот просмотрщик логов уже не подойдет — надо будет писать лог в файл. Для чтения лога из файла предназначен второй viewer — File Viewer. Как заставить его работать?

Во-первых, нам надо «сказать» логгеру (TCodeSiteLogger), что данные будут записываться в файл. Делается это следующим образом:

1. Создаем, например, на OnCreate формы объект типа TCodeSiteDestination и для него следующие свойства:

procedure TForm7.FormCreate(Sender: TObject); var Dest: TCodeSiteDestination; begin Dest:=TCodeSiteDestination.Create; Dest.LogFile.FilePath:=ExtractFilePath(Application.ExeName); Dest.LogFile.FileName:=’Log.csl’; Dest.LogFile.Active:=true; end;

Таким образом мы указали, что лог будет содержаться в файле «Log.csl», который будет расположен в директории с программой. Теперь определим свойство Destination у CodeSite и запустим программу:

CodeSite.Destination:=Dest;

Можете закрыть Live Viewer, т.к. обновляться он не будет, а вместо этого открыть директорию с программой и убедиться, что по мере работы программы файл лога постепенно наполняется данными. В последствии, полученный лог можно будет открыть в File Viewer или добавить содержимое файла в Live Viewer.

При записи в файл Вы также можете указать ограничения на файл — максимальный размер в байтах или максимальное количество записей.
С записью в файл тоже вроде бы разобрались. Теперь более внимательно посмотрим на окно Viewer’а.

Работа с Live/File Viewer

Что касается работы с вьюверами, то тут, дума, для описания всех функций и возможностей даже в «урезанной» поставке CodeSite с RAD Studio XE2 не хватит ни сил не времени. Да и это, в принципе, незачем. Поэтому расскажу лишь про те функции, которые для меня сейчас наиболее полезны.

И первая функция — это сворачивание/разворачивание лога работы в отдельно методе. Как я уже говорил выше, для того, чтобы разграничить в логе места где выполняется како-либо код используются методы EnterMethod и ExitMethod. Для того, чтобы свернуть весь лог, находящийся между записями типа «вход/выход из метода» необходимо нажать Ctrl+Up или в выбрать в логе запись входа в метод и в контекстном меню нажать «Collapse Method«. Повторное нажатие Ctrl+Up развернет лог между метками входа/выхода. На рисунке ниже показан лог в котором часть сообщение «свернута»:

Как вы понимаете, функция сворачивания части лога будет очень полезна при работе с подробными логами работы, т.к. значительно облегчит поиск необходимой информации. Для работы же с самой информацией мне очень понравилась функция сравнения двух объектов одного типа. Работает она следующим образом.

На представленном выше рисунке Вы можете видеть, что в лог записывалась информация по объекту формы (Self). Если мы выберем в логе любую запись с этим объектом то в панели инспектора (справа) отобразятся все значения свойств этого объекта в момент отправки сообщения, т.е. инспектор будет выглядеть так:

Теперь зажимаем Ctrl и выбираем вторую запись с Self. В итоге в инспекторе будут отображены только те значения свойств, которые изменились:

Сразу видно, что у объекта сменились свойства ширины. По-моему отличная функция — экономит кучу времени при сравнении свойств объекта до и после какой-либо операции, а также помогает, в случае необходимости, быстро найти ошибки в работе и устранить их.

Вот пожалуй очень кратко о том, что за инструмент CodeSite и как им пользоваться. В заключение скажу, что после того как разобрался с работой CodeSite пожалел, что не использовал его ранее — инструмент очень даже неплохой, даже учитывая то, что это всего лишь Express-версия без таких «плюшек», как просмотр коллекция ScratchPad и т.д. По крайней мере, используя его для логирования работы программы для работы с Google Docs (а там и сетевые подключения и потоков куча) я не нашел к чему бы придраться. В общем, если Вам срочно нужна хорошая система логирования — используйте CodeSite.

Книжная полка

Автор: Дмитрий Осипов
Название: Delphi. Программирование для Windows, OS X, iOS и Android

Описание Подробно рассматривается библиотека FM, позволяющая создавать полнофункциональное программное обеспечение для операционных систем Windows и OS X, а также для смартфонов и планшетных компьютеров, работающих под управлением Android и iOS

Название: Разработка клиент-серверных приложений в Delphi

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.

Источник: webdelphi.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru