Приветствую всех ГУРУ!!! помогите разобраться в моей проблеме методом правки одного перехода, перестала ругаться на неправильно введенный код ответа (принимает его за верный) Но этого оказалось мало, программа все равно сообщает о своей незарегистрированости и не работает. скажите что я могу еще предпринять если: сообщение о незарегистрированости (на русском языке), появляющееся в статус баре окна программы и хранящиеся в теле программы каким то образом зашифрованы и даже если я нахожу какие-то кракозябры по поиску строк в оли расшифровать мне их никак не удается.. другие же надписи и названия хранятся в отрытом виде... куда и чем копать? спасибо!
А не пробовал прогу загонять в тоже PEexplorer? Там кстати иногда можнопоглядеть ресурсы и стринги и потом уже в олли искать нужные. Довольно часто такие сообщения хранятся ввиде таблицы и программа их извлекает по их номеру. предупреждение за сверхцитирование
researchist Юникод? Смотри в ресурсах. Если нет, смотри юникодные строки в теле проги. Если нет, значит, зашифрованы. Тогда смотришь в иде, когда и чем устанавливается статусбар.
смотрел и PEexplorer и ИДОй они показывают большенство строк, но именно тех, что указывают на незарегенность не показывают, точнее показывают их крокозябрами.. это не Юникод засовывал их в штирлиц не расшифровывает...
если только сообщения не выводятся в графике (что навряд ли) и не используются шрифты с нестандартной кодировкой (а вот это иногда встречается), то в 9 из 10 случаев достаточно поставить бряк на функцию, выводящую эти строки в элемент управления (диалоговое окно например), они ей _обязаны_ быть переданы as is. в 1 из 10 случаев (особенно когда дело доходит от тулбара) строки расшифровываются и выводятся посимвольно, поэтому в тексте программы их можно не искать, а опять-таки брякаться на функцию которая их выводит. но есть еще т другой путь. допустим, незарегистрированная программа завершается после t минут работы, не отправляет файлы на печать или вставляет в отчет грозное ругательство. вот мы и ищем код, ответственный за это. очень часто программисты даже не пытаются его скрыть и он элементарно обнаруживается чуть ли не пошаговой трассировкой
спасибо за посылание меня туда, но я там был и теперь я здесь я знаю как отлавливать появление нового окошка или чтение строки из поля а вот как отловить запись сообщения в статус бар главного окна программы ?
ну тыкнете пальцем как найти: изменения TBDock1: TTBDock; а в нем TBToolbar1: TTBToolbar; а в нем нужный мне Label5: TLabel;
а через SendMessage() или напрямую Get\SetWindowText несудьба чтоли бряк поставить??? и после этого говорить что хорошо там все читал..
Прикрипляю простейший пример на дельфи нажатием кнопки меняется текст и цвет Label1 нужно узнать адреса этих изменений...
Да-да! Помню одного чела, тоже такая у него проблема была и тоже прога была на Delphi. Label в Delphi рисуется, это легко проверить стоит только на него натравить InqSoft Window Scanner Надо ставит бряк на (выводится текст в WM_PAINT с помощью функции) DrawTextA(W) , потом смотреть в стек, откуда вызывается или DeDe в кривые руки =)))
researchist Ты бы определился, что тебе конкретно нужно, а то сначала про статус-бар говорил, теперь вот TLabel Cтатус-бар - оконный контрол, поэтому изменение текста в нем можно отловить по SendMessage c Msg=SB_SETTEXT. А вот TLabel это не оконный, а графический контрол, и отловить его изменение сложнее (если конечно оно не привязано к клику на кнопке, как в твоем тривиальном примеречике С лэйблом в общем случае есть два пути 1) ловить DrawText как говорит Demon666. Но таким способом можно добраться до содержимого выводимой строки, но не выловить место, где происходит ее изменение, т.к. анализ CallStack просто покажет цепочку обработки собщения WM_PAINT, которое не связано напрямую с изменением текста 2) зная имя метки (например, Label5) можно выцепить указатели на саму метку и на ее приватное поле FText, в котором хранится указатель на выводимый текст и соот-но поставить хардварный бряк на запись в это поле Хотя если прога дельфийская, то проще для начала в DeDe посмотреть, что творится в FormCreate и FormActivate - если повезет, то можно на шару наткнуться на нужную ссылку типа TForm1.Label5
Это злобные разрабы меня запутали, на месте статус бара разместили TLabel и ввели меня в заблуждение нашел я места где меняется текст в этом TLabel делается это вот так: Code (Text): 005612A7 |. 8B55 E4 MOV EDX, [LOCAL.7] Дак вот в этой [LOCAL.7] адрес по которому в дампе памяти строка откуда этот адрес там взялся и почему [LOCAL.7] наз-ся ? как теперь узнать откуда она там берется и предварительно (окончательно и бесповоротно) изменить ее на нужную мне ?
Тебе написали, воспользуйся DeDe, эта прога предназначена специально для программ написанных на Delphi!!! В отладчике меню->Options->Debugging options (Alt+O)-> вкладка Analysis 1->Show ARGs and LOCALs in procedures(сними оттуда галочку) и будет тебе счастье. Стек надеюсь, знаешь, что это такое!? P. S. leo Не всё ты ему в подробностях расписал
leo все нормально расписал, с его помощью я нашел места прорисовки этого лэйбла и адреса памяти в которых хранятся строки Demon666 теперь я дальше спрашиваю как узнать откуда в пямяти эти строки взялись и как их изменить еще до того как они в память попадут, т.к. адреса по которым они расположены меняются с каждой загрузкой проги... Спасибо Вам ребята за ответы, без них никак... и будьте пожалуста чуть снисходительнее, не все же такие крутые как Вы.