народ помогите! классный дельфовский компонент, для работы с флеш. проблема в чем: в триалке выводит по центру компонента надпись "DEMO VERSION". вот. найти данные слова в файлах компонента не удалось, также нет и в скомпиленой проге. помогите ломануть! вот на всякий случай ссылка http://www.f-in-box.com/ Заранее спасибо!
Значица, загружаешь в ИДУ модуль flashpackage.bpl (только на предупреждение о смене компайлера отвечай игнорить, а не то повиснешь). Смотришь фукнцию: @FlashPlayerControl@_16494 Она преобразует входную строку в строку "DEMO VERSION", эта функция вызывается в обработке события WM_PAINT данного контрола. Дальше думай сам
фишка в том что это в DCU надо найти, BPLка каждый раз чуть что рекомпилится, а рекомпилится из DCU, то есть надо там ломать, а там не могу ниче найти((((
KOPOJIb В DCU этого нет. Рисует обработчик, поэтому нужно либо патчить его, либо искать, где соб-но, проверяется лицензия. Эту задачу мне решать некогда, я тебе указал конкретное место, где волшебная фраза появляется (ты же это и просил), теперь мозги растопырь и вперед, с песнями! А почему у тебя BPL все время перебилдивается?
KOPOJIb Не понял, почему bpl должен все время заново строится, извиняйте. За такую помощь... особая благодарность
борман, козел проверяет соответствие DCU и BPL, потому что DCU это ведб просто прекомпиленый PAS, а в BPL сидит сам компонент, BPL тоже скомпилена из DCU и чуть что не так, борман все это шустро ребилдит, потому и приходицца ломать корявые DCU, а не простые BPL(((
KOPOJIb Я взял FlashPlayerControl.dcu, пропустил его через DCUInt32, и в полученном файле нашел процедуру CreateStreamObject, которая создает строчку DEMO VERSION и вызывается из метода TFlashPlayerControl.WMPaint. Но что это даст, х.з. Надо сначала решить, как правильно пропатчить код, а для этого надо смотреть в ИДЕ файл, про который я говорил в самом начале.
Люди, вы меня удивляете своей тягой все усложнять. Ну сделайте вы эту строчку нулевой длины, чтобы она в WM_PAINT вообще не отрисовывалась - и дело с концом. Причем компонент надо отломать еще ДО установки, тогда и все созданные с его помощью модули будут нести те же изменения, что и поломанный .dcu.
CyberManiac Длина строки указывается в качестве аргумента функции CreateStreamObject. Можно 0 поставить, кто мешает. Я об этом и говорил - пусть топикстартер сам принимает решение, ключевая точка ему была показана, мозги тоже надо иногда напрягать.
KOPOJIb Насчет Длина строки указывается в качестве аргумента функции CreateStreamObject. я погорячился. На самом деле идет вызов функции DrawText. Попробуй вот что: в интересующем тебя модуле dcu находишь CDLN?uDqrHNM из этой строки строка DEMO VERSION получается с помощью посимвольного преобразования вида (c ^ 0x10)-0xF. Всюду, где встретишь эту строчку, забивай первый символ 0. Должно получиться.
в опкодах ноль или вместо C поставить ноль? я нашел все это винхексом, попробовал и то и другое, затем заменил всю это строку вопросительными знаками(посмотрел что он соответствует пробелу) текста не стало,но остался белый прямоугольник(((( ща пытаюсь с ним разобраться... Спасибо большое за помощь!
KOPOJIb Можешь первый символ C забить нулем, можешь все 12 символов нулями забить. Белый прямоугольник - результат работы функции DrawText.
ну так я забил! дело в том что он его пропускает через вышеуказанную функцию и получает символ, который отображается, но еще я поискал и нашел длину строки - 0FFFFFFFFh , однако она в DCU появляется меньше раз чем "шифрованная" строка!
СПАСИБО ВСЕМ ОГРОМНОЕ ЗА ПОМОЩЬ!!! дело решилось просто, я заменил текст на вопросительные знаки, а прямоугольник убрал пропатчив длину строки просто поискав сигнатуру 6A FF рядом со строкой "CDLN?uDqrHNM" и заменив FF 3 раза на 00. еще раз всем огромное спасибо! спасибо crypto за детальную помощь и терпение и CyberManiac за идею о изменении длины строки